From cbce00e0e962ee1406ce6341bde575aa5090b978 Mon Sep 17 00:00:00 2001 From: Neeraj Date: Sun, 6 Apr 2025 20:47:28 +0530 Subject: [PATCH 1/5] generated bc files with llvm-20 --- .../ae_assert_tests/BASIC_array_2d_0-0.c.bc | 32 +- .../ae_assert_tests/BASIC_array_func_0-0.c.bc | 36 +- .../ae_assert_tests/BASIC_array_func_3-0.c.bc | 40 +- .../ae_assert_tests/BASIC_array_func_4-0.c.bc | 34 +- .../ae_assert_tests/BASIC_array_func_6-0.c.bc | 36 +- .../ae_assert_tests/BASIC_array_int_0-0.c.bc | 34 +- .../BASIC_array_struct_0-0.c.bc | 40 +- .../BASIC_array_varIdx_1-0.c.bc | 30 +- .../ae_assert_tests/BASIC_arraycopy1-0.c.bc | 39 +- .../ae_assert_tests/BASIC_arraycopy2-0.c.bc | 34 +- .../ae_assert_tests/BASIC_arraycopy3-0.c.bc | 41 +- .../ae_assert_tests/BASIC_assign_0-0.c.bc | 28 +- .../ae_assert_tests/BASIC_assign_1-0.c.bc | 30 +- .../ae_assert_tests/BASIC_assign_2-0.c.bc | 30 +- .../ae_assert_tests/BASIC_assign_3-0.c.bc | 30 +- .../ae_assert_tests/BASIC_bi_add_0-0.c.bc | 28 +- .../ae_assert_tests/BASIC_bi_add_1-0.c.bc | 30 +- .../ae_assert_tests/BASIC_bi_add_2-0.c.bc | 34 +- .../ae_assert_tests/BASIC_bi_div_0-0.c.bc | 36 +- .../ae_assert_tests/BASIC_bi_mix_0-0.c.bc | 30 +- .../ae_assert_tests/BASIC_bi_mul_0-0.c.bc | 32 +- .../ae_assert_tests/BASIC_br_false_0-0.c.bc | 28 +- .../ae_assert_tests/BASIC_br_nd_0-0.c.bc | 87 +- .../ae_assert_tests/BASIC_br_nd_1-0.c.bc | 125 +- .../ae_assert_tests/BASIC_br_nd_2-0.c.bc | 73 +- .../ae_assert_tests/BASIC_br_nd_malloc-0.c.bc | 75 +- .../ae_assert_tests/BASIC_br_true_0-0.c.bc | 30 +- .../BASIC_funcall_ref_0-0.c.bc | 30 +- .../BASIC_funcall_ref_1-0.c.bc | 36 +- .../BASIC_funcall_ref_2-0.c.bc | 32 +- .../BASIC_nullptr_def_0-0.c.bc | 71 +- .../ae_assert_tests/BASIC_ptr_assign_0-0.c.bc | 30 +- .../ae_assert_tests/BASIC_ptr_call1-0.c.bc | 127 +- .../ae_assert_tests/BASIC_ptr_call2-0.c.bc | 38 +- .../ae_assert_tests/BASIC_ptr_func_0-0.c.bc | 40 +- .../ae_assert_tests/BASIC_ptr_func_1-0.c.bc | 139 +- .../ae_assert_tests/BASIC_ptr_func_4-0.c.bc | 137 +- .../ae_assert_tests/BASIC_ptr_func_6-0.c.bc | 38 +- .../ae_assert_tests/BASIC_ptr_s32_2-0.c.bc | 30 +- .../BASIC_struct_array_0-0.c.bc | 40 +- .../BASIC_struct_assign_0-0.c.bc | 34 +- .../ae_assert_tests/BASIC_switch-0.c.bc | 32 +- .../ae_assert_tests/BASIC_switch01-0.c.bc | 70 +- .../ae_assert_tests/BASIC_switch02-0.c.bc | 32 +- .../ae_assert_tests/BASIC_switch03-0.c.bc | 70 +- .../ae_assert_tests/BASIC_switch04-0.c.bc | 76 +- .../ae_assert_tests/BASIC_switch05-0.c.bc | 70 +- .../ae_assert_tests/BASIC_switch06-0.c.bc | 32 +- .../ae_assert_tests/BASIC_switch07-0.c.bc | 70 +- .../ae_assert_tests/BASIC_switch08-0.c.bc | 76 +- .../ae_assert_tests/BASIC_switch09-0.c.bc | 70 +- .../ae_assert_tests/BASIC_switch10-0.c.bc | 32 +- .../ae_assert_tests/BASIC_test_11-0.c.bc | 32 +- .../BUF_OVERFLOW_test_47-0.c.bc | 99 +- .../ae_assert_tests/CAST_fptosi.c.bc | 30 +- .../ae_assert_tests/CAST_fptoui.c.bc | 32 +- .../ae_assert_tests/CAST_fptrunc.c.bc | 30 +- test_cases_bc/ae_assert_tests/CAST_sext.c.bc | 30 +- .../ae_assert_tests/CAST_sitofp.c.bc | 30 +- test_cases_bc/ae_assert_tests/CAST_trunc.c.bc | 34 +- .../ae_assert_tests/CAST_uitofp.c.bc | 30 +- test_cases_bc/ae_assert_tests/CAST_zext.c.bc | 30 +- .../ae_assert_tests/CVE-2019-19847-0.c.bc | 30 +- .../ae_assert_tests/CVE-2020-13598-0.c.bc | 46 +- .../ae_assert_tests/CVE-2020-29203-0.c.bc | 116 +- .../ae_assert_tests/CVE-2021-39602-0.c.bc | 157 +- .../ae_assert_tests/CVE-2021-44975-0.c.bc | 600 ++-- .../ae_assert_tests/CVE-2021-45341-0.c.bc | 74 +- .../ae_assert_tests/CVE-2022-23850-0.c.bc | 46 +- .../ae_assert_tests/CVE-2022-26129-0.c.bc | 168 +- .../ae_assert_tests/CVE-2022-27239-0.c.bc | 559 ++-- .../ae_assert_tests/CVE-2022-29023-0.c.bc | 337 +- .../ae_assert_tests/CVE-2022-34835-0.c.bc | 406 ++- .../ae_assert_tests/CVE-2022-34913-0.c.bc | 782 +++-- .../ae_assert_tests/CVE-2022-34918-0.c.bc | 587 ++-- .../ae_assert_tests/CWE127_har_alloc-0.c.bc | 44 +- .../ae_assert_tests/INTERVAL_test_10-0.c.bc | 101 +- .../ae_assert_tests/INTERVAL_test_11-0.c.bc | 55 +- .../ae_assert_tests/INTERVAL_test_12-0.c.bc | 105 +- .../ae_assert_tests/INTERVAL_test_13-0.c.bc | 105 +- .../ae_assert_tests/INTERVAL_test_14-0.c.bc | 75 +- .../ae_assert_tests/INTERVAL_test_15-0.c.bc | 71 +- .../ae_assert_tests/INTERVAL_test_16-0.c.bc | 93 +- .../ae_assert_tests/INTERVAL_test_19-0.c.bc | 69 +- .../ae_assert_tests/INTERVAL_test_2-0.c.bc | 123 +- .../ae_assert_tests/INTERVAL_test_20-0.c.bc | 103 +- .../ae_assert_tests/INTERVAL_test_36-1-0.c.bc | 101 +- .../ae_assert_tests/INTERVAL_test_49-0.c.bc | 80 +- .../ae_assert_tests/INTERVAL_test_58-0.c.bc | 184 +- .../ae_assert_tests/INTERVAL_test_6-0.c.bc | 28 +- .../ae_assert_tests/INTERVAL_test_64-0.c.bc | 212 +- .../ae_assert_tests/INTERVAL_test_8-0.c.bc | 38 +- .../ae_assert_tests/INTERVAL_test_9-0.c.bc | 105 +- .../ae_assert_tests/LOOP_for01-0.c.bc | 30 +- .../ae_assert_tests/LOOP_for_call-0.c.bc | 32 +- .../ae_assert_tests/LOOP_for_inc-0.c.bc | 32 +- .../ae_assert_tests/LOOP_while01-0.c.bc | 28 +- .../ae_assert_tests/cwe121_char_alloc-0.c.bc | 30 +- .../ae_assert_tests/cwe121_int64_alloc-0.c.bc | 30 +- .../ae_assert_tests/cwe121_int_alloc-0.c.bc | 30 +- .../cwe121_struct_alloc-0.c.bc | 38 +- .../ae_assert_tests/cwe126_char_alloc-0.c.bc | 40 +- .../ae_assert_tests/cwe190_char_fscanf-0.c.bc | 34 +- .../ae_assert_tests/cwe190_int_max-0.c.bc | 30 +- ...ased_Buffer_Overflow__CWE129_fgets_01.c.bc | 699 ++-- ...fer_Overflow__CWE129_listen_socket_01.c.bc | 1342 ++++---- ...Based_Buffer_Overflow__CWE129_rand_01.c.bc | 625 ++-- ...Based_Buffer_Overflow__CWE131_loop_01.c.bc | 78 +- ...sed_Buffer_Overflow__CWE131_memcpy_01.c.bc | 66 +- ...r_Overflow__CWE193_char_alloca_cpy_01.c.bc | 74 +- ...verflow__CWE193_char_alloca_memcpy_01.c.bc | 86 +- ...erflow__CWE193_char_alloca_memmove_01.c.bc | 88 +- ...rflow__CWE193_char_declare_memmove_01.c.bc | 88 +- ...erflow__CWE193_wchar_t_declare_cpy_01.c.bc | 80 +- ..._Overflow__CWE805_char_alloca_loop_01.c.bc | 84 +- ...verflow__CWE805_char_alloca_memcpy_01.c.bc | 72 +- ...rflow__CWE805_char_declare_memmove_01.c.bc | 72 +- ...Overflow__CWE805_char_declare_ncpy_01.c.bc | 74 +- ...low__CWE805_int64_t_alloca_memmove_01.c.bc | 78 +- ...rflow__CWE805_int64_t_declare_loop_01.c.bc | 90 +- ...low__CWE805_int64_t_declare_memcpy_01.c.bc | 78 +- ...ow__CWE805_int64_t_declare_memmove_01.c.bc | 78 +- ...r_Overflow__CWE805_int_alloca_loop_01.c.bc | 86 +- ...Overflow__CWE805_int_alloca_memcpy_01.c.bc | 74 +- ...flow__CWE805_struct_alloca_memmove_01.c.bc | 96 +- ...low__CWE805_struct_declare_memmove_01.c.bc | 96 +- ...erflow__CWE805_wchar_t_alloca_loop_01.c.bc | 465 ++- ...ow__CWE805_wchar_t_alloca_snprintf_01.c.bc | 82 +- ...rflow__CWE805_wchar_t_declare_loop_01.c.bc | 447 ++- ...low__CWE805_wchar_t_declare_memcpy_01.c.bc | 80 +- ...ow__CWE805_wchar_t_declare_memmove_01.c.bc | 80 +- ...w__CWE805_wchar_t_declare_snprintf_01.c.bc | 82 +- ...Overflow__CWE806_char_declare_loop_01.c.bc | 94 +- ...Overflow__CWE806_char_declare_ncpy_01.c.bc | 88 +- ...low__CWE806_wchar_t_declare_memcpy_01.c.bc | 98 +- ..._Overflow__dest_wchar_t_alloca_cpy_01.c.bc | 82 +- ...ffer_Overflow__src_char_alloca_cpy_01.c.bc | 70 +- ..._Overflow__src_wchar_t_declare_cpy_01.c.bc | 82 +- ...Based_Buffer_Overflow__CWE131_loop_01.c.bc | 466 ++- ...sed_Buffer_Overflow__CWE131_memcpy_01.c.bc | 322 +- ..._Overflow__c_CWE805_int64_t_memcpy_01.c.bc | 328 +- ...Overflow__c_CWE805_int64_t_memmove_01.c.bc | 328 +- ...fer_Overflow__c_CWE805_int_memmove_01.c.bc | 322 +- ...r_Overflow__c_CWE805_struct_memcpy_01.c.bc | 492 ++- ...Overflow__c_CWE805_wchar_t_memmove_01.c.bc | 384 ++- ...verflow__c_CWE805_wchar_t_snprintf_01.c.bc | 366 +- ...er_Overflow__c_CWE806_char_memmove_01.c.bc | 454 ++- ...Overflow__c_CWE806_wchar_t_memmove_01.c.bc | 462 ++- ...d_Buffer_Overflow__c_dest_char_cpy_01.c.bc | 358 +- ...uffer_Overflow__c_dest_wchar_t_cpy_01.c.bc | 366 +- ...ed_Buffer_Overflow__c_src_char_cpy_01.c.bc | 416 ++- ...E126_Buffer_Overread__CWE129_fgets_01.c.bc | 469 ++- ...126_Buffer_Overread__CWE129_fscanf_01.c.bc | 363 +- ...fer_Overread__CWE129_listen_socket_01.c.bc | 1138 ++++--- ...uffer_Overread__char_alloca_memcpy_01.c.bc | 90 +- ...Buffer_Overread__char_declare_loop_01.c.bc | 100 +- ...ffer_Overread__char_declare_memcpy_01.c.bc | 90 +- ..._Buffer_Overread__malloc_char_loop_01.c.bc | 640 ++-- ...ffer_Overread__malloc_char_memmove_01.c.bc | 482 ++- ...ffer_Overread__malloc_wchar_t_loop_01.c.bc | 407 ++- ...r_Overread__malloc_wchar_t_memmove_01.c.bc | 490 ++- ...fer_Overread__wchar_t_declare_loop_01.c.bc | 573 ++-- ..._Overread__wchar_t_declare_memmove_01.c.bc | 106 +- .../ae_overflow_tests/ExtAPI_strcat_01.c.bc | 42 +- .../ae_overflow_tests/ExtAPI_strcat_02.c.bc | 50 +- .../ae_overflow_tests/ExtAPI_strcat_03.c.bc | 54 +- .../ae_overflow_tests/ExtAPI_strcat_04.c.bc | 58 +- test_cases_bc/basic_c_tests/CI-funptr.c.bc | 14 +- test_cases_bc/basic_c_tests/CI-global.c.bc | 14 +- test_cases_bc/basic_c_tests/CI-local.c.bc | 14 +- .../basic_c_tests/array-constIdx.c.bc | 26 +- test_cases_bc/basic_c_tests/array-varIdx.c.bc | 22 +- .../basic_c_tests/array-varIdx2.c.bc | 26 +- test_cases_bc/basic_c_tests/arraycopy1.c.bc | 19 +- test_cases_bc/basic_c_tests/branch-call.c.bc | 14 +- test_cases_bc/basic_c_tests/branch-intra.c.bc | 14 +- test_cases_bc/basic_c_tests/byteoffset1.c.bc | 22 +- .../basic_c_tests/constraint-cycle-copy.c.bc | 14 +- .../basic_c_tests/constraint-cycle-field.c.bc | 36 +- .../basic_c_tests/constraint-cycle-pwc.c.bc | 22 +- .../field-ptr-arith-constIdx.c.bc | 20 +- .../basic_c_tests/field-ptr-arith-varIdx.c.bc | 20 +- .../basic_c_tests/funptr-global.c.bc | 20 +- .../basic_c_tests/funptr-nested-call.c.bc | 14 +- .../funptr-nested-struct-simple.c.bc | 24 +- .../basic_c_tests/funptr-nested-struct.c.bc | 26 +- .../basic_c_tests/funptr-simple.c.bc | 14 +- .../basic_c_tests/funptr-struct.c.bc | 16 +- test_cases_bc/basic_c_tests/global-array.c.bc | 20 +- .../basic_c_tests/global-call-noparam.c.bc | 14 +- .../basic_c_tests/global-call-struct.c.bc | 16 +- .../basic_c_tests/global-call-twoparms.c.bc | 20 +- .../basic_c_tests/global-const-struct.c.bc | 18 +- .../basic_c_tests/global-funptr.c.bc | 14 +- .../basic_c_tests/global-initializer.c.bc | 14 +- .../basic_c_tests/global-nested-calls.c.bc | 14 +- .../basic_c_tests/global-simple.c.bc | 14 +- .../basic_c_tests/heap-indirect.c.bc | 16 +- .../basic_c_tests/heap-linkedlist.c.bc | 34 +- test_cases_bc/basic_c_tests/heap-wrapper.c.bc | 16 +- test_cases_bc/basic_c_tests/int2pointer.c.bc | 16 +- test_cases_bc/basic_c_tests/mesa.c.bc | 18 +- .../basic_c_tests/ptr-dereference1.c.bc | 14 +- .../basic_c_tests/ptr-dereference2.c.bc | 14 +- .../basic_c_tests/ptr-dereference3.c.bc | 14 +- test_cases_bc/basic_c_tests/spec-equake.c.bc | 18 +- test_cases_bc/basic_c_tests/spec-gap.c.bc | 32 +- test_cases_bc/basic_c_tests/spec-mesa.c.bc | 56 +- test_cases_bc/basic_c_tests/spec-parser.c.bc | 30 +- test_cases_bc/basic_c_tests/spec-vortex.c.bc | 28 +- test_cases_bc/basic_c_tests/struct-array.c.bc | 30 +- .../struct-assignment-direct.c.bc | 22 +- .../struct-assignment-indirect.c.bc | 26 +- .../struct-assignment-nested.c.bc | 36 +- .../struct-field-multi-dereference.c.bc | 24 +- .../basic_c_tests/struct-idx-inbound.c.bc | 20 +- .../basic_c_tests/struct-idx-overflow.c.bc | 20 +- .../struct-incompab-typecast-nested.c.bc | 36 +- .../struct-incompab-typecast.c.bc | 26 +- .../basic_c_tests/struct-instance-return.c.bc | 24 +- .../basic_c_tests/struct-nested-1-layer.c.bc | 38 +- .../basic_c_tests/struct-nested-2-layers.c.bc | 52 +- .../basic_c_tests/struct-nested-array1.c.bc | 36 +- .../basic_c_tests/struct-nested-array2.c.bc | 42 +- .../basic_c_tests/struct-nested-array3.c.bc | 52 +- .../basic_c_tests/struct-onefld.c.bc | 30 +- .../basic_c_tests/struct-simple.c.bc | 22 +- .../basic_c_tests/struct-twoflds.c.bc | 38 +- test_cases_bc/basic_c_tests/structcopy1.c.bc | 28 +- test_cases_bc/basic_cpp_tests/abstract.cpp.bc | 57 +- test_cases_bc/basic_cpp_tests/array-1.cpp.bc | 74 +- test_cases_bc/basic_cpp_tests/array-2.cpp.bc | 116 +- test_cases_bc/basic_cpp_tests/array-3.cpp.bc | 118 +- .../basic_cpp_tests/constructor-1.cpp.bc | 45 +- .../basic_cpp_tests/constructor-2.cpp.bc | 45 +- test_cases_bc/basic_cpp_tests/deque-1.cpp.bc | 1274 ++++--- test_cases_bc/basic_cpp_tests/deque-2.cpp.bc | 1272 ++++--- test_cases_bc/basic_cpp_tests/deque-3.cpp.bc | 1253 ++++--- test_cases_bc/basic_cpp_tests/deque-4.cpp.bc | 1255 ++++--- .../basic_cpp_tests/destructor-1.cpp.bc | 118 +- .../basic_cpp_tests/destructor-2.cpp.bc | 118 +- .../diamond-inheritance.cpp.bc | 83 +- .../basic_cpp_tests/dynamic_cast-1.cpp.bc | 65 +- .../basic_cpp_tests/forward_list-1.cpp.bc | 538 ++- .../basic_cpp_tests/forward_list-2.cpp.bc | 556 ++-- .../basic_cpp_tests/forward_list-3.cpp.bc | 539 ++- .../basic_cpp_tests/forward_list-4.cpp.bc | 557 ++-- .../basic_cpp_tests/func-ptr-in-class.cpp.bc | 51 +- .../global-obj-in-array.cpp.bc | 109 +- test_cases_bc/basic_cpp_tests/list-1.cpp.bc | 557 ++-- test_cases_bc/basic_cpp_tests/list-2.cpp.bc | 539 ++- test_cases_bc/basic_cpp_tests/map-1.cpp.bc | 2048 +++++++----- test_cases_bc/basic_cpp_tests/map-2.cpp.bc | 2032 ++++++----- .../basic_cpp_tests/member-variable.cpp.bc | 69 +- .../basic_cpp_tests/namespace.cpp.bc | 57 +- test_cases_bc/basic_cpp_tests/pwc.cpp.bc | 37 +- test_cases_bc/basic_cpp_tests/queue-1.cpp.bc | 1453 ++++---- test_cases_bc/basic_cpp_tests/queue-2.cpp.bc | 1455 ++++---- test_cases_bc/basic_cpp_tests/set-1.cpp.bc | 831 ++--- test_cases_bc/basic_cpp_tests/set-2.cpp.bc | 821 ++--- .../single-inheritance-1.cpp.bc | 57 +- .../single-inheritance-2.cpp.bc | 63 +- .../single-inheritance-3.cpp.bc | 57 +- .../single-inheritance-4.cpp.bc | 57 +- test_cases_bc/basic_cpp_tests/stack-1.cpp.bc | 1455 ++++---- test_cases_bc/basic_cpp_tests/stack-2.cpp.bc | 1456 ++++---- .../basic_cpp_tests/unordered_map-1.cpp.bc | 1789 +++++----- .../basic_cpp_tests/unordered_map-2.cpp.bc | 1783 +++++----- .../basic_cpp_tests/unordered_set-1.cpp.bc | 2129 ++++++------ .../basic_cpp_tests/variant-gep.cpp.bc | 18 +- test_cases_bc/basic_cpp_tests/vector-1.cpp.bc | 853 ++--- test_cases_bc/basic_cpp_tests/vector-2.cpp.bc | 781 ++--- test_cases_bc/basic_cpp_tests/vector-3.cpp.bc | 865 ++--- test_cases_bc/basic_cpp_tests/vector-4.cpp.bc | 812 ++--- .../virtual-call-simple.cpp.bc | 61 +- .../virtual-diamond-inheritance-2.cpp.bc | 79 +- .../virtual-inheritance-1.cpp.bc | 61 +- .../virtual-inheritance-2.cpp.bc | 83 +- .../virtual-inheritance-3.cpp.bc | 91 +- test_cases_bc/complex_tests/cond-swap.c.bc | 12 +- test_cases_bc/complex_tests/swap-array.c.bc | 12 +- test_cases_bc/complex_tests/swap-funcptr.c.bc | 12 +- .../complex_tests/swap-funcptr1.c.bc | 12 +- .../complex_tests/swap-funcptr2.c.bc | 12 +- test_cases_bc/complex_tests/swap-global.c.bc | 12 +- test_cases_bc/complex_tests/swap-global1.c.bc | 12 +- test_cases_bc/complex_tests/swap-global2.c.bc | 12 +- test_cases_bc/complex_tests/swap-heap.c.bc | 14 +- test_cases_bc/complex_tests/swap-heap1.c.bc | 14 +- test_cases_bc/complex_tests/swap-heap2.c.bc | 14 +- test_cases_bc/complex_tests/swap-heap3.c.bc | 14 +- test_cases_bc/complex_tests/swap-heap4.c.bc | 14 +- .../complex_tests/swap-indirect.c.bc | 12 +- .../complex_tests/swap-indirect1.c.bc | 12 +- .../complex_tests/swap-indirect2.c.bc | 12 +- .../complex_tests/swap-recursion.c.bc | 12 +- test_cases_bc/complex_tests/swap-struct.c.bc | 24 +- test_cases_bc/complex_tests/swap-struct1.c.bc | 28 +- .../complex_tests/swap-structindirect.c.bc | 28 +- test_cases_bc/complex_tests/swap.c.bc | 12 +- test_cases_bc/complex_tests/swap1.c.bc | 12 +- .../complex_tests/swap4-context.c.bc | 12 +- .../complex_tests/swap4-context1.c.bc | 12 +- .../complex_tests/swap4-contextindirect.c.bc | 12 +- test_cases_bc/complex_tests/swap4.c.bc | 12 +- test_cases_bc/complex_tests/test-clone.c.bc | 18 +- test_cases_bc/complex_tests/test-clone1.c.bc | 18 +- test_cases_bc/complex_tests/test-cond.c.bc | 14 +- .../complex_tests/test-globalstruct.c.bc | 12 +- .../complex_tests/test-indirect.c.bc | 12 +- .../complex_tests/test-indirect1.c.bc | 14 +- .../complex_tests/test-linklist.c.bc | 32 +- .../complex_tests/test-linklist1.c.bc | 36 +- test_cases_bc/complex_tests/test-path.c.bc | 14 +- .../complex_tests/test-recursive.c.bc | 28 +- .../complex_tests/test-recursive0.c.bc | 20 +- .../complex_tests/test-recursive1.c.bc | 46 +- .../complex_tests/test-recursive2.c.bc | 48 +- .../complex_tests/test-recursiveglobal.c.bc | 14 +- .../complex_tests/test-recursiveglobal1.c.bc | 12 +- .../complex_tests/test-recursiveglobal2.c.bc | 12 +- test_cases_bc/complex_tests/test.c.bc | 24 +- test_cases_bc/complex_tests/test1-path.c.bc | 12 +- test_cases_bc/complex_tests/test1.c.bc | 14 +- test_cases_bc/complex_tests/test2-path.c.bc | 12 +- test_cases_bc/complex_tests/test2.c.bc | 14 +- test_cases_bc/complex_tests/test3-path.c.bc | 14 +- test_cases_bc/complex_tests/test3.c.bc | 14 +- test_cases_bc/complex_tests/test4.c.bc | 16 +- test_cases_bc/complex_tests/test5.c.bc | 14 +- test_cases_bc/complex_tests/test6.c.bc | 14 +- test_cases_bc/complex_tests/test8.c.bc | 14 +- test_cases_bc/cpp_types/broken.cpp.bc | 33 +- 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 | 14 +- test_cases_bc/cs_tests/cs1.c.bc | 14 +- test_cases_bc/cs_tests/cs10.c.bc | 14 +- test_cases_bc/cs_tests/cs11.c.bc | 14 +- test_cases_bc/cs_tests/cs12.c.bc | 14 +- test_cases_bc/cs_tests/cs13.c.bc | 14 +- test_cases_bc/cs_tests/cs14.c.bc | 14 +- test_cases_bc/cs_tests/cs15.c.bc | 14 +- test_cases_bc/cs_tests/cs16.c.bc | 16 +- test_cases_bc/cs_tests/cs17.c.bc | 14 +- test_cases_bc/cs_tests/cs18.c.bc | 14 +- test_cases_bc/cs_tests/cs19.c.bc | 14 +- test_cases_bc/cs_tests/cs2.c.bc | 14 +- test_cases_bc/cs_tests/cs20.c.bc | 14 +- test_cases_bc/cs_tests/cs21.c.bc | 14 +- test_cases_bc/cs_tests/cs3.c.bc | 14 +- test_cases_bc/cs_tests/cs4.c.bc | 14 +- test_cases_bc/cs_tests/cs5.c.bc | 14 +- test_cases_bc/cs_tests/cs6.c.bc | 14 +- test_cases_bc/cs_tests/cs7.c.bc | 14 +- test_cases_bc/cs_tests/cs8.c.bc | 14 +- test_cases_bc/cs_tests/cs9.c.bc | 14 +- test_cases_bc/cs_tests/funcpoiner.c.bc | 14 +- test_cases_bc/cs_tests/recur0.c.bc | 14 +- test_cases_bc/cs_tests/recur10.c.bc | 14 +- test_cases_bc/cs_tests/recur2.c.bc | 14 +- test_cases_bc/cs_tests/recur3.c.bc | 14 +- test_cases_bc/cs_tests/recur4.c.bc | 14 +- test_cases_bc/cs_tests/recur5.c.bc | 14 +- test_cases_bc/cs_tests/recur6.c.bc | 14 +- test_cases_bc/cs_tests/recur7.c.bc | 14 +- test_cases_bc/cs_tests/recur8.c.bc | 16 +- test_cases_bc/cs_tests/recur9.c.bc | 16 +- test_cases_bc/double_free/df0.c.bc | 16 +- test_cases_bc/double_free/df00.c.bc | 16 +- test_cases_bc/double_free/df1.c.bc | 16 +- test_cases_bc/double_free/df10.c.bc | 44 +- test_cases_bc/double_free/df11.c.bc | 44 +- test_cases_bc/double_free/df12.c.bc | 44 +- test_cases_bc/double_free/df13.c.bc | 44 +- test_cases_bc/double_free/df14.c.bc | 44 +- test_cases_bc/double_free/df15.c.bc | 44 +- test_cases_bc/double_free/df16.c.bc | 44 +- test_cases_bc/double_free/df18.c.bc | 44 +- test_cases_bc/double_free/df19.c.bc | 44 +- test_cases_bc/double_free/df2.c.bc | 16 +- test_cases_bc/double_free/df20.c.bc | 44 +- test_cases_bc/double_free/df21.c.bc | 44 +- test_cases_bc/double_free/df22.c.bc | 44 +- test_cases_bc/double_free/df23.c.bc | 44 +- test_cases_bc/double_free/df24.c.bc | 44 +- test_cases_bc/double_free/df25.c.bc | 44 +- test_cases_bc/double_free/df26.c.bc | 44 +- test_cases_bc/double_free/df27.c.bc | 44 +- test_cases_bc/double_free/df28.c.bc | 44 +- test_cases_bc/double_free/df29.c.bc | 44 +- test_cases_bc/double_free/df3.c.bc | 16 +- test_cases_bc/double_free/df30.c.bc | 44 +- test_cases_bc/double_free/df31.c.bc | 44 +- test_cases_bc/double_free/df32.c.bc | 44 +- test_cases_bc/double_free/df33.c.bc | 44 +- test_cases_bc/double_free/df34.c.bc | 44 +- test_cases_bc/double_free/df35.c.bc | 44 +- test_cases_bc/double_free/df36.c.bc | 44 +- test_cases_bc/double_free/df37.c.bc | 44 +- test_cases_bc/double_free/df38.c.bc | 44 +- test_cases_bc/double_free/df39.c.bc | 44 +- test_cases_bc/double_free/df4.c.bc | 16 +- test_cases_bc/double_free/df40.c.bc | 44 +- test_cases_bc/double_free/df41.c.bc | 44 +- test_cases_bc/double_free/df42.c.bc | 44 +- test_cases_bc/double_free/df43.c.bc | 44 +- test_cases_bc/double_free/df44.c.bc | 44 +- test_cases_bc/double_free/df45.c.bc | 44 +- test_cases_bc/double_free/df46.c.bc | 44 +- test_cases_bc/double_free/df5.c.bc | 44 +- test_cases_bc/double_free/df6.c.bc | 44 +- test_cases_bc/double_free/df7.c.bc | 44 +- test_cases_bc/double_free/df8.c.bc | 44 +- test_cases_bc/double_free/df9.c.bc | 44 +- test_cases_bc/fs_tests/array_alias_1.c.bc | 36 +- test_cases_bc/fs_tests/array_alias_2.c.bc | 46 +- test_cases_bc/fs_tests/array_alias_3.c.bc | 24 +- test_cases_bc/fs_tests/array_alias_4.c.bc | 24 +- test_cases_bc/fs_tests/array_alias_5.c.bc | 28 +- test_cases_bc/fs_tests/branch_1.c.bc | 14 +- test_cases_bc/fs_tests/branch_2.c.bc | 14 +- test_cases_bc/fs_tests/branch_3.c.bc | 14 +- test_cases_bc/fs_tests/function_pointer.c.bc | 14 +- .../fs_tests/function_pointer_2.c.bc | 14 +- test_cases_bc/fs_tests/global_1.c.bc | 14 +- test_cases_bc/fs_tests/global_2.c.bc | 14 +- test_cases_bc/fs_tests/global_3.c.bc | 14 +- test_cases_bc/fs_tests/global_4.c.bc | 14 +- test_cases_bc/fs_tests/global_5.c.bc | 14 +- test_cases_bc/fs_tests/pcycle1.c.bc | 14 +- test_cases_bc/fs_tests/pcycle2.c.bc | 14 +- test_cases_bc/fs_tests/return.c.bc | 16 +- test_cases_bc/fs_tests/simple_1.c.bc | 14 +- test_cases_bc/fs_tests/simple_2.c.bc | 14 +- test_cases_bc/fs_tests/simple_3.c.bc | 14 +- test_cases_bc/fs_tests/strong_update.c.bc | 14 +- test_cases_bc/fs_tests/struct_1.c.bc | 36 +- test_cases_bc/fs_tests/struct_2.c.bc | 36 +- test_cases_bc/fs_tests/test-su.c.bc | 14 +- test_cases_bc/fs_tests/tt.c.bc | 14 +- test_cases_bc/mem_leak/malloc0.c.bc | 68 +- test_cases_bc/mem_leak/malloc1.c.bc | 74 +- test_cases_bc/mem_leak/malloc10.c.bc | 76 +- test_cases_bc/mem_leak/malloc11.c.bc | 127 +- test_cases_bc/mem_leak/malloc12.c.bc | 105 +- test_cases_bc/mem_leak/malloc13.c.bc | 64 +- test_cases_bc/mem_leak/malloc14.c.bc | 68 +- test_cases_bc/mem_leak/malloc15.c.bc | 62 +- test_cases_bc/mem_leak/malloc16.c.bc | 88 +- test_cases_bc/mem_leak/malloc17.c.bc | 78 +- test_cases_bc/mem_leak/malloc18.c.bc | 125 +- test_cases_bc/mem_leak/malloc19.c.bc | 80 +- test_cases_bc/mem_leak/malloc2.c.bc | 76 +- test_cases_bc/mem_leak/malloc20.c.bc | 78 +- test_cases_bc/mem_leak/malloc21.c.bc | 98 +- test_cases_bc/mem_leak/malloc22.c.bc | 84 +- test_cases_bc/mem_leak/malloc23.c.bc | 107 +- test_cases_bc/mem_leak/malloc24.c.bc | 113 +- test_cases_bc/mem_leak/malloc25.c.bc | 154 +- test_cases_bc/mem_leak/malloc26.c.bc | 78 +- test_cases_bc/mem_leak/malloc27.c.bc | 84 +- test_cases_bc/mem_leak/malloc28.c.bc | 80 +- test_cases_bc/mem_leak/malloc29.c.bc | 66 +- test_cases_bc/mem_leak/malloc3.c.bc | 78 +- test_cases_bc/mem_leak/malloc30.c.bc | 76 +- test_cases_bc/mem_leak/malloc31.c.bc | 84 +- test_cases_bc/mem_leak/malloc32.c.bc | 82 +- test_cases_bc/mem_leak/malloc33.c.bc | 80 +- test_cases_bc/mem_leak/malloc34.c.bc | 76 +- test_cases_bc/mem_leak/malloc35.c.bc | 66 +- test_cases_bc/mem_leak/malloc36.c.bc | 125 +- test_cases_bc/mem_leak/malloc37.c.bc | 84 +- test_cases_bc/mem_leak/malloc38.c.bc | 129 +- test_cases_bc/mem_leak/malloc39.c.bc | 157 +- test_cases_bc/mem_leak/malloc4.c.bc | 82 +- test_cases_bc/mem_leak/malloc40.c.bc | 74 +- test_cases_bc/mem_leak/malloc41.c.bc | 86 +- test_cases_bc/mem_leak/malloc42.c.bc | 115 +- test_cases_bc/mem_leak/malloc43.c.bc | 70 +- test_cases_bc/mem_leak/malloc44.c.bc | 78 +- test_cases_bc/mem_leak/malloc45.c.bc | 149 +- test_cases_bc/mem_leak/malloc46.c.bc | 74 +- test_cases_bc/mem_leak/malloc47.c.bc | 130 +- test_cases_bc/mem_leak/malloc48.c.bc | 74 +- test_cases_bc/mem_leak/malloc49.c.bc | 126 +- test_cases_bc/mem_leak/malloc5.c.bc | 74 +- test_cases_bc/mem_leak/malloc50.c.bc | 133 +- test_cases_bc/mem_leak/malloc51.c.bc | 82 +- test_cases_bc/mem_leak/malloc52.c.bc | 883 +++-- test_cases_bc/mem_leak/malloc53.c.bc | 669 ++-- test_cases_bc/mem_leak/malloc54.c.bc | 74 +- test_cases_bc/mem_leak/malloc55.c.bc | 74 +- test_cases_bc/mem_leak/malloc56.c.bc | 99 +- test_cases_bc/mem_leak/malloc57.c.bc | 143 +- test_cases_bc/mem_leak/malloc58.c.bc | 64 +- test_cases_bc/mem_leak/malloc59.c.bc | 117 +- test_cases_bc/mem_leak/malloc6.c.bc | 119 +- test_cases_bc/mem_leak/malloc60.c.bc | 110 +- test_cases_bc/mem_leak/malloc61.c.bc | 176 +- test_cases_bc/mem_leak/malloc62.c.bc | 129 +- test_cases_bc/mem_leak/malloc63.c.bc | 237 +- test_cases_bc/mem_leak/malloc64.c.bc | 2957 ++++++++--------- test_cases_bc/mem_leak/malloc7.c.bc | 64 +- test_cases_bc/mem_leak/malloc8.c.bc | 135 +- test_cases_bc/mem_leak/malloc9.c.bc | 64 +- test_cases_bc/mem_leak/sp1.c.bc | 162 +- test_cases_bc/mem_leak/sp10.c.bc | 98 +- test_cases_bc/mem_leak/sp11.c.bc | 105 +- test_cases_bc/mem_leak/sp12.c.bc | 111 +- test_cases_bc/mem_leak/sp12a.c.bc | 111 +- test_cases_bc/mem_leak/sp13.c.bc | 74 +- test_cases_bc/mem_leak/sp13a.c.bc | 88 +- test_cases_bc/mem_leak/sp14.c.bc | 157 +- test_cases_bc/mem_leak/sp14a.c.bc | 141 +- test_cases_bc/mem_leak/sp15.c.bc | 94 +- test_cases_bc/mem_leak/sp15a.c.bc | 84 +- test_cases_bc/mem_leak/sp1a.c.bc | 134 +- test_cases_bc/mem_leak/sp2.c.bc | 173 +- test_cases_bc/mem_leak/sp22.c.bc | 120 +- test_cases_bc/mem_leak/sp2a.c.bc | 165 +- test_cases_bc/mem_leak/sp3.c.bc | 168 +- test_cases_bc/mem_leak/sp3a.c.bc | 140 +- test_cases_bc/mem_leak/sp4.c.bc | 228 +- test_cases_bc/mem_leak/sp41.c.bc | 316 +- test_cases_bc/mem_leak/sp4a.c.bc | 300 +- test_cases_bc/mem_leak/sp5.c.bc | 113 +- test_cases_bc/mem_leak/sp5a.c.bc | 105 +- test_cases_bc/mem_leak/sp6.c.bc | 82 +- test_cases_bc/mem_leak/sp6a.c.bc | 84 +- test_cases_bc/mem_leak/sp7.c.bc | 219 +- test_cases_bc/mem_leak/sp8.c.bc | 288 +- test_cases_bc/mem_leak/sp9.c.bc | 414 ++- .../mta/imprecise_cxt_indfork_1.c.bc | 18 +- .../mta/imprecise_cxt_indfork_2.c.bc | 18 +- .../mta/imprecise_cxt_indfork_3.c.bc | 18 +- test_cases_bc/mta/imprecise_cxt_join_4.c.bc | 16 +- test_cases_bc/mta/imprecise_cxt_join_5.c.bc | 16 +- test_cases_bc/mta/imprecise_cxt_loop_5.c.bc | 16 +- .../mta/imprecise_cxt_offspring_5.c.bc | 16 +- test_cases_bc/mta/imprecise_cxt_recur_2.c.bc | 16 +- test_cases_bc/mta/imprecise_cxt_recur_3.c.bc | 16 +- test_cases_bc/mta/imprecise_cxt_recur_5.c.bc | 16 +- test_cases_bc/mta/imprecise_cxt_recur_6.c.bc | 16 +- .../mta/imprecise_cxt_thdindex_10.c.bc | 18 +- .../mta/imprecise_cxt_thdindex_3.c.bc | 16 +- .../mta/imprecise_cxt_thdindex_4_1.c.bc | 18 +- .../mta/imprecise_cxt_thdindex_4_2.c.bc | 18 +- .../mta/imprecise_cxt_thdindex_8_2.c.bc | 18 +- .../mta/imprecise_cxt_thdindex_9.c.bc | 18 +- test_cases_bc/mta/succ_cxt_branch_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_branch_2.c.bc | 16 +- test_cases_bc/mta/succ_cxt_branch_3.c.bc | 16 +- test_cases_bc/mta/succ_cxt_branch_4.c.bc | 16 +- test_cases_bc/mta/succ_cxt_branch_5.c.bc | 16 +- test_cases_bc/mta/succ_cxt_cand_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_cand_2.c.bc | 16 +- test_cases_bc/mta/succ_cxt_cand_3.c.bc | 16 +- test_cases_bc/mta/succ_cxt_join_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_join_2.c.bc | 16 +- test_cases_bc/mta/succ_cxt_join_3.c.bc | 16 +- test_cases_bc/mta/succ_cxt_loop_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_loop_2.c.bc | 16 +- test_cases_bc/mta/succ_cxt_loop_3.c.bc | 16 +- test_cases_bc/mta/succ_cxt_loop_6.c.bc | 16 +- test_cases_bc/mta/succ_cxt_loop_8.c.bc | 16 +- test_cases_bc/mta/succ_cxt_offspring_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_offspring_2.c.bc | 16 +- test_cases_bc/mta/succ_cxt_offspring_3.c.bc | 16 +- test_cases_bc/mta/succ_cxt_offspring_4.c.bc | 16 +- test_cases_bc/mta/succ_cxt_recur_4.c.bc | 16 +- test_cases_bc/mta/succ_cxt_recur_7.c.bc | 16 +- test_cases_bc/mta/succ_cxt_recur_index_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_sibling_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_sibling_2.c.bc | 16 +- test_cases_bc/mta/succ_cxt_sibling_3.c.bc | 16 +- test_cases_bc/mta/succ_cxt_sibling_4.c.bc | 16 +- test_cases_bc/mta/succ_cxt_sibling_5.c.bc | 16 +- test_cases_bc/mta/succ_cxt_sibling_6.c.bc | 16 +- test_cases_bc/mta/succ_cxt_sibling_7.c.bc | 16 +- test_cases_bc/mta/succ_cxt_sibling_8.c.bc | 16 +- test_cases_bc/mta/succ_cxt_simple_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_simple_2.c.bc | 16 +- test_cases_bc/mta/succ_cxt_simple_3.c.bc | 16 +- test_cases_bc/mta/succ_cxt_synthesis_1.c.bc | 16 +- test_cases_bc/mta/succ_cxt_thdindex_2.c.bc | 18 +- test_cases_bc/mta/succ_cxt_thdindex_7.c.bc | 18 +- test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc | 18 +- test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc | 18 +- test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc | 18 +- test_cases_bc/mta/unsound_cxt_loop_7.c.bc | 16 +- test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc | 18 +- test_cases_bc/objtype_tests/type-basic.c.bc | 18 +- test_cases_bc/objtype_tests/type-call.c.bc | 18 +- test_cases_bc/objtype_tests/type-copy.c.bc | 18 +- test_cases_bc/objtype_tests/type-ret.c.bc | 18 +- test_cases_bc/objtype_tests/type-while.c.bc | 22 +- test_cases_bc/path_tests/path1.c.bc | 14 +- test_cases_bc/path_tests/path10.c.bc | 14 +- test_cases_bc/path_tests/path11.c.bc | 14 +- test_cases_bc/path_tests/path12.c.bc | 14 +- test_cases_bc/path_tests/path13.c.bc | 20 +- test_cases_bc/path_tests/path14.c.bc | 14 +- test_cases_bc/path_tests/path15.c.bc | 14 +- test_cases_bc/path_tests/path16.c.bc | 14 +- test_cases_bc/path_tests/path17.c.bc | 14 +- test_cases_bc/path_tests/path18.c.bc | 14 +- test_cases_bc/path_tests/path19.c.bc | 14 +- test_cases_bc/path_tests/path2.c.bc | 14 +- test_cases_bc/path_tests/path20.c.bc | 14 +- test_cases_bc/path_tests/path21.c.bc | 14 +- test_cases_bc/path_tests/path22.c.bc | 14 +- test_cases_bc/path_tests/path3.c.bc | 14 +- test_cases_bc/path_tests/path4.c.bc | 14 +- test_cases_bc/path_tests/path5.c.bc | 26 +- test_cases_bc/path_tests/path6.c.bc | 14 +- test_cases_bc/path_tests/path7.c.bc | 14 +- test_cases_bc/path_tests/path8.c.bc | 14 +- test_cases_bc/path_tests/path9.c.bc | 34 +- 628 files changed, 37303 insertions(+), 39921 deletions(-) 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 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 index a5cee6ba4..9ed0b6a7e 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_2d_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -11,7 +11,7 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !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 @@ -39,9 +39,9 @@ entry: %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 + #dbg_declare(ptr %b, !39, !DIExpression(), !40) store i32 2, ptr %b, align 4, !dbg !40 - call void @llvm.dbg.declare(metadata ptr %c, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %c, !41, !DIExpression(), !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 @@ -55,21 +55,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_array_2d_0-0.c", directory: "/root/testsss/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} @@ -77,9 +73,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_2d_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "6093cd55e9bebab7f8de76c792a9a4f1") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index c94e657f1..25533645c 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [6 x i8] c"value\00", align 1, !dbg !0 @@ -11,9 +11,9 @@ 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 !24, metadata !DIExpression()), !dbg !25 + #dbg_declare(ptr %arr.addr, !24, !DIExpression(), !25) store i32 %idx, ptr %idx.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %idx.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %idx.addr, !26, !DIExpression(), !27) %0 = load ptr, ptr %arr.addr, align 8, !dbg !28 %1 = load i32, ptr %idx.addr, align 4, !dbg !29 %idxprom = sext i32 %1 to i64, !dbg !28 @@ -22,9 +22,6 @@ entry: ret i32 %2, !dbg !30 } -; 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 !31 { entry: @@ -32,12 +29,12 @@ entry: %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 !34, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %arr, !34, !DIExpression(), !38) %arrayidx = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 0, !dbg !39 store i32 0, ptr %arrayidx, align 4, !dbg !40 %arrayidx1 = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 1, !dbg !41 store i32 1, ptr %arrayidx1, align 4, !dbg !42 - call void @llvm.dbg.declare(metadata ptr %v, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %v, !43, !DIExpression(), !44) %arraydecay = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 0, !dbg !45 %call = call i32 @getValue(ptr noundef %arraydecay, i32 noundef 1), !dbg !46 store i32 %call, ptr %v, align 4, !dbg !44 @@ -49,13 +46,12 @@ entry: ret i32 0, !dbg !52 } -declare void @svf_print(i32 noundef, ptr noundef) #2 +declare void @svf_print(i32 noundef, ptr noundef) #1 -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -63,13 +59,13 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 18, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "931965762cc5728ef8697a45cf5814db") +!2 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "931965762cc5728ef8697a45cf5814db") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 48, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 6) -!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/BASIC_array_func_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "931965762cc5728ef8697a45cf5814db") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_array_func_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "931965762cc5728ef8697a45cf5814db") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -78,7 +74,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!17 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !18 = distinct !DISubprogram(name: "getValue", scope: !2, file: !2, line: 9, type: !19, scopeLine: 9, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !23) !19 = !DISubroutineType(types: !20) !20 = !{!21, !22, !21} 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 index eafa852c1..f013497e8 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_3-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.A = type { i32, [2 x i32] } @@ -11,11 +11,11 @@ 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 + #dbg_declare(ptr %arr.addr, !25, !DIExpression(), !26) store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %x.addr, !27, !DIExpression(), !28) %0 = load ptr, ptr %arr.addr, align 8, !dbg !29 - %b = getelementptr inbounds %struct.A, ptr %0, i32 0, i32 1, !dbg !30 + %b = getelementptr inbounds nuw %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 @@ -23,22 +23,19 @@ entry: 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 + #dbg_declare(ptr %a, !36, !DIExpression(), !37) + %a1 = getelementptr inbounds nuw %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 + %b = getelementptr inbounds nuw %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 + %b2 = getelementptr inbounds nuw %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 @@ -47,18 +44,17 @@ entry: ret i32 0, !dbg !49 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_array_func_3-0.c", directory: "/root/testsss/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} @@ -66,9 +62,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_3-0.c", directory: "/root/testsss/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) 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 index 46d4487e8..6cea399f9 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_4-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @getValue(ptr noundef %arr, i32 noundef %x) #0 !dbg !10 { @@ -9,9 +9,9 @@ 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 + #dbg_declare(ptr %arr.addr, !17, !DIExpression(), !18) store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %x.addr, !19, !DIExpression(), !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 @@ -20,9 +20,6 @@ entry: 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: @@ -30,12 +27,12 @@ entry: %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 + #dbg_declare(ptr %arr, !27, !DIExpression(), !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 + #dbg_declare(ptr %res, !36, !DIExpression(), !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 @@ -45,18 +42,17 @@ entry: ret i32 0, !dbg !43 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_array_func_4-0.c", directory: "/root/testsss/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} @@ -64,9 +60,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_4-0.c", directory: "/root/testsss/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) 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 index aaeb5b3e0..8b1328bc1 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_6-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 { @@ -10,11 +10,11 @@ entry: %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 + #dbg_declare(ptr %arr.addr, !20, !DIExpression(), !21) store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !22, metadata !DIExpression()), !dbg !23 + #dbg_declare(ptr %x.addr, !22, !DIExpression(), !23) store i32 %y, ptr %y.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %y.addr, metadata !24, metadata !DIExpression()), !dbg !25 + #dbg_declare(ptr %y.addr, !24, !DIExpression(), !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 @@ -26,9 +26,6 @@ entry: 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: @@ -36,11 +33,11 @@ entry: %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 + #dbg_declare(ptr %arr, !33, !DIExpression(), !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 + #dbg_declare(ptr %v, !39, !DIExpression(), !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 @@ -50,18 +47,17 @@ entry: ret i32 0, !dbg !46 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_array_func_6-0.c", directory: "/root/testsss/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} @@ -69,9 +65,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_6-0.c", directory: "/root/testsss/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) 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 index 5bff9506a..33e36a67d 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_int_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -12,9 +12,9 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !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 + #dbg_declare(ptr %p, !21, !DIExpression(), !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 @@ -27,25 +27,21 @@ entry: 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 @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 -declare void @svf_assert(i1 noundef zeroext) #3 +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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_array_int_0-0.c", directory: "/root/testsss/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} @@ -53,9 +49,9 @@ attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_int_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "45f4e1082d285c28768620199f572748") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index be34b3808..28f96dae3 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_struct_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.A = type { i32, i32 } @@ -12,46 +12,42 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !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 + %a1 = getelementptr inbounds nuw %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 + %b = getelementptr inbounds nuw %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 + %a4 = getelementptr inbounds nuw %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 + %b6 = getelementptr inbounds nuw %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 + #dbg_declare(ptr %c, !38, !DIExpression(), !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 + %b8 = getelementptr inbounds nuw %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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_array_struct_0-0.c", directory: "/root/testsss/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} @@ -59,9 +55,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_struct_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "78e446f45362b8103119869dd85fd930") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 343c21ef4..7ab08cde6 100644 --- 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 @@ -1,21 +1,21 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_varIdx_1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %a, !16, !DIExpression(), !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 + #dbg_declare(ptr %i, !27, !DIExpression(), !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 @@ -27,21 +27,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_array_varIdx_1-0.c", directory: "/root/testsss/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} @@ -49,9 +45,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_varIdx_1-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "299e929d7faf82f2aa27760f4941e817") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index cadab58ce..09a7a76e7 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -12,14 +12,13 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) + #dbg_declare(ptr %b, !18, !DIExpression(), !19) + #dbg_declare(ptr %source, !20, !DIExpression(), !25) + store ptr %a, ptr %source, align 8, !dbg !26 + %arrayinit.element = getelementptr inbounds ptr, ptr %source, 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 + #dbg_declare(ptr %x, !27, !DIExpression(), !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 @@ -30,21 +29,17 @@ entry: 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(...) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_arraycopy1-0.c", directory: "/root/testsss/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} @@ -52,9 +47,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_arraycopy1-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "de146ffa0f16e9b76e273bb7984edb78") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index cb38e7d52..264592338 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @__const.main.source = private unnamed_addr constant [2 x i8] c"AB", align 1 @@ -12,9 +12,9 @@ entry: %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 + #dbg_declare(ptr %source, !16, !DIExpression(), !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 + #dbg_declare(ptr %x, !22, !DIExpression(), !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 @@ -26,25 +26,21 @@ entry: 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 @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 -declare void @svf_assert(i32 noundef) #3 +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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_arraycopy2-0.c", directory: "/root/testsss/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} @@ -52,9 +48,9 @@ attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_arraycopy2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ce0ff7cf64f892094a392595652a06c3") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 8f8ec64b5..db711b5d6 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @a = dso_local global [2 x i32] [i32 1, i32 2], align 4, !dbg !0 @@ -10,17 +10,17 @@ 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 + %0 = load i32, ptr getelementptr inbounds ([2 x i32], ptr @a, i64 0, i64 1), align 4, !dbg !21 + %cmp = icmp eq i32 %0, 2, !dbg !22 + %conv = zext i1 %cmp to i32, !dbg !22 + call void @svf_assert(i32 noundef %conv), !dbg !23 + ret i32 0, !dbg !24 } 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -28,10 +28,10 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_arraycopy3-0.c", directory: "/root/testsss/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") +!5 = !DIFile(filename: "src/ae_assert_tests/BASIC_arraycopy3-0.c", directory: "/root/testsss/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} @@ -43,12 +43,11 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!17 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!18 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 3, type: !19, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !2) !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) +!21 = !DILocation(line: 5, column: 13, scope: !18) +!22 = !DILocation(line: 5, column: 17, scope: !18) +!23 = !DILocation(line: 5, column: 2, scope: !18) +!24 = !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 index ae08b8000..1954e8688 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -9,7 +9,7 @@ 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 + #dbg_declare(ptr %a, !16, !DIExpression(), !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 @@ -21,21 +21,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_assign_0-0.c", directory: "/root/testsss/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} @@ -43,9 +39,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_assign_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "b61922e837e3495d927321f151e29a1a") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 06f0076ce..8c11a09e1 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) store i32 1, ptr %x, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 + #dbg_declare(ptr %y, !18, !DIExpression(), !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 @@ -21,21 +21,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_assign_1-0.c", directory: "/root/testsss/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} @@ -43,9 +39,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_assign_1-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "6da5e4fd89618c8cc0ffbfc1b831ead6") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 02367690c..fc88b379d 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_2-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) store i32 10, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 + #dbg_declare(ptr %b, !18, !DIExpression(), !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 @@ -22,21 +22,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_assign_2-0.c", directory: "/root/testsss/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} @@ -44,9 +40,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_assign_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "482bb2fab30b68b22410520f4ead374a") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 3e0a7d0ea..c4f343357 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_3-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) store i32 10, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 + #dbg_declare(ptr %b, !18, !DIExpression(), !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 @@ -22,21 +22,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_assign_3-0.c", directory: "/root/testsss/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} @@ -44,9 +40,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_assign_3-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "db1d772ac126bf2e073fc6f7a1d8a087") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 3129e4ac0..559512f70 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -9,7 +9,7 @@ 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 + #dbg_declare(ptr %x, !16, !DIExpression(), !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 @@ -20,21 +20,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "ba3a137e34dff2cf3dc4ab865d75572c") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_bi_add_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ba3a137e34dff2cf3dc4ab865d75572c") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -42,9 +38,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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/BASIC_bi_add_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ba3a137e34dff2cf3dc4ab865d75572c") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_add_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ba3a137e34dff2cf3dc4ab865d75572c") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 7a292a903..4c65d57fb 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,8 +10,8 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) + #dbg_declare(ptr %b, !18, !DIExpression(), !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 @@ -24,21 +24,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_bi_add_1-0.c", directory: "/root/testsss/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} @@ -46,9 +42,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_add_1-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "9441fd95aa7bc53c4c56715bcce1c313") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 579230736..86de19e4a 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_2-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -11,11 +11,11 @@ entry: %a = alloca i32, align 4 %c = 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 + #dbg_declare(ptr %i, !16, !DIExpression(), !18) %0 = load volatile i32, ptr %i, align 4, !dbg !19 call void @set_value(i32 noundef %0, i32 noundef 0, i32 noundef 100), !dbg !20 - call void @llvm.dbg.declare(metadata ptr %a, metadata !21, metadata !DIExpression()), !dbg !22 - call void @llvm.dbg.declare(metadata ptr %c, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %a, !21, !DIExpression(), !22) + #dbg_declare(ptr %c, !23, !DIExpression(), !24) %1 = load volatile i32, ptr %i, align 4, !dbg !25 %add = add nsw i32 %1, 1, !dbg !26 store volatile i32 %add, ptr %a, align 4, !dbg !27 @@ -28,23 +28,19 @@ entry: 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 @set_value(i32 noundef, i32 noundef, i32 noundef) #1 -declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #2 +declare void @svf_assert_eq(i32 noundef, i32 noundef) #1 -declare void @svf_assert_eq(i32 noundef, 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "e58e6423a11d7f5e99dd4cd06da7005c") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_bi_add_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "e58e6423a11d7f5e99dd4cd06da7005c") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -52,9 +48,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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_bi_add_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e58e6423a11d7f5e99dd4cd06da7005c") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_add_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "e58e6423a11d7f5e99dd4cd06da7005c") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index e718e077c..91974e6de 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_div_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [2 x i8] c"c\00", align 1, !dbg !0 @.str.1 = private unnamed_addr constant [2 x i8] c"d\00", align 1, !dbg !7 @@ -15,16 +15,16 @@ entry: %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 !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %a, !25, !DIExpression(), !26) store i32 10, ptr %a, align 4, !dbg !26 - call void @llvm.dbg.declare(metadata ptr %b, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %b, !27, !DIExpression(), !28) store i32 5, ptr %b, align 4, !dbg !28 - call void @llvm.dbg.declare(metadata ptr %c, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %c, !29, !DIExpression(), !30) %0 = load i32, ptr %a, align 4, !dbg !31 %1 = load i32, ptr %b, align 4, !dbg !32 %div = sdiv i32 %0, %1, !dbg !33 store i32 %div, ptr %c, align 4, !dbg !30 - call void @llvm.dbg.declare(metadata ptr %d, metadata !34, metadata !DIExpression()), !dbg !35 + #dbg_declare(ptr %d, !34, !DIExpression(), !35) %2 = load i32, ptr %a, align 4, !dbg !36 %3 = load i32, ptr %b, align 4, !dbg !37 %rem = srem i32 %2, %3, !dbg !38 @@ -48,16 +48,12 @@ land.end: ; preds = %land.rhs, %entry ret i32 0, !dbg !50 } -; 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) #1 -declare void @svf_print(i32 noundef, ptr noundef) #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.dbg.cu = !{!9} !llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} @@ -65,15 +61,15 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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_bi_div_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "12648ff6157c37feda6c3ed320560cee") +!2 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_div_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "12648ff6157c37feda6c3ed320560cee") !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: 11, type: !3, isLocal: true, isDefinition: true) -!9 = distinct !DICompileUnit(language: DW_LANG_C11, file: !10, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !11, splitDebugInlining: false, nameTableKind: None) -!10 = !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: "12648ff6157c37feda6c3ed320560cee") +!9 = distinct !DICompileUnit(language: DW_LANG_C11, file: !10, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !11, splitDebugInlining: false, nameTableKind: None) +!10 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_bi_div_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "12648ff6157c37feda6c3ed320560cee") !11 = !{!0, !7} !12 = !{i32 7, !"Dwarf Version", i32 5} !13 = !{i32 2, !"Debug Info Version", i32 3} @@ -82,7 +78,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!19 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !20 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 5, type: !21, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !9, retainedNodes: !24) !21 = !DISubroutineType(types: !22) !22 = !{!23} 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 index 28775e389..2e682e531 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_mix_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,8 +10,8 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) + #dbg_declare(ptr %b, !18, !DIExpression(), !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 @@ -36,21 +36,17 @@ land.end: ; preds = %land.rhs, %entry 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "eb8345bfcb698eccd542d792e44f87f3") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_bi_mix_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "eb8345bfcb698eccd542d792e44f87f3") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -58,9 +54,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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_mix_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "eb8345bfcb698eccd542d792e44f87f3") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_mix_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "eb8345bfcb698eccd542d792e44f87f3") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index beffb86f7..273814965 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_mul_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -11,11 +11,11 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) store i32 1, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 + #dbg_declare(ptr %b, !18, !DIExpression(), !19) store i32 2, ptr %b, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %c, metadata !20, metadata !DIExpression()), !dbg !21 + #dbg_declare(ptr %c, !20, !DIExpression(), !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 @@ -26,21 +26,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_bi_mul_0-0.c", directory: "/root/testsss/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} @@ -48,9 +44,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_mul_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fd876f12d07a3b92124ea544b6658741") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 8b284bbca..bc4d28c5d 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_false_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -9,7 +9,7 @@ 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 + #dbg_declare(ptr %x, !16, !DIExpression(), !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 @@ -17,21 +17,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_br_false_0-0.c", directory: "/root/testsss/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} @@ -39,9 +35,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_false_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "babb163b0d1b8145d8eadfe52057bd3e") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 6543e156e..8e91c1d99 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,52 +10,48 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) + #dbg_declare(ptr %y, !18, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.end, !dbg !22 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 + %0 = load i32, ptr %x, align 4, !dbg !24 + %inc = add nsw i32 %0, 1, !dbg !24 + store i32 %inc, ptr %x, align 4, !dbg !24 + %1 = load i32, ptr %y, align 4, !dbg !26 + %inc1 = add nsw i32 %1, 1, !dbg !26 + store i32 %inc1, ptr %y, align 4, !dbg !26 + br label %if.end, !dbg !27 if.end: ; preds = %if.then, %entry - %2 = load i32, ptr %x, align 4, !dbg !29 - %cmp = icmp sle i32 %2, 10, !dbg !30 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !31 - %3 = load i32, ptr %x, align 4, !dbg !32 - %4 = load i32, ptr %y, align 4, !dbg !33 - call void @svf_assert_eq(i32 noundef %3, i32 noundef %4), !dbg !34 - ret i32 0, !dbg !35 + %2 = load i32, ptr %x, align 4, !dbg !28 + %cmp = icmp sle i32 %2, 10, !dbg !29 + call void @svf_assert(i1 noundef zeroext %cmp), !dbg !30 + %3 = load i32, ptr %x, align 4, !dbg !31 + %4 = load i32, ptr %y, align 4, !dbg !32 + call void @svf_assert_eq(i32 noundef %3, i32 noundef %4), !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 i32 @nd() #1 -declare i32 @nd() #2 +declare void @svf_assert(i1 noundef zeroext) #1 -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert_eq(i32 noundef, i32 noundef) #1 -declare void @svf_assert_eq(i32 noundef, 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "8c6f18623a3278780991212d356c25c4") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_br_nd_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "8c6f18623a3278780991212d356c25c4") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -63,9 +59,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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/BASIC_br_nd_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8c6f18623a3278780991212d356c25c4") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_nd_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "8c6f18623a3278780991212d356c25c4") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -78,15 +74,14 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !21 = !DILocation(line: 14, column: 7, scope: !10) !22 = !DILocation(line: 16, column: 9, scope: !23) !23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 16, column: 9) -!24 = !DILocation(line: 16, column: 9, scope: !10) -!25 = !DILocation(line: 17, column: 10, scope: !26) -!26 = distinct !DILexicalBlock(scope: !23, file: !11, line: 16, column: 15) -!27 = !DILocation(line: 18, column: 10, scope: !26) -!28 = !DILocation(line: 19, column: 5, scope: !26) -!29 = !DILocation(line: 20, column: 16, scope: !10) -!30 = !DILocation(line: 20, column: 18, scope: !10) -!31 = !DILocation(line: 20, column: 5, scope: !10) -!32 = !DILocation(line: 21, column: 19, scope: !10) -!33 = !DILocation(line: 21, column: 22, scope: !10) -!34 = !DILocation(line: 21, column: 5, scope: !10) -!35 = !DILocation(line: 22, column: 5, scope: !10) +!24 = !DILocation(line: 17, column: 10, scope: !25) +!25 = distinct !DILexicalBlock(scope: !23, file: !11, line: 16, column: 15) +!26 = !DILocation(line: 18, column: 10, scope: !25) +!27 = !DILocation(line: 19, column: 5, scope: !25) +!28 = !DILocation(line: 20, column: 16, scope: !10) +!29 = !DILocation(line: 20, column: 18, scope: !10) +!30 = !DILocation(line: 20, column: 5, scope: !10) +!31 = !DILocation(line: 21, column: 19, scope: !10) +!32 = !DILocation(line: 21, column: 22, scope: !10) +!33 = !DILocation(line: 21, column: 5, scope: !10) +!34 = !DILocation(line: 22, 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 index f7e8daaa1..9e69fff19 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,69 +10,65 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) + #dbg_declare(ptr %y, !18, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.end, !dbg !22 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 + %0 = load i32, ptr %x, align 4, !dbg !24 + %inc = add nsw i32 %0, 1, !dbg !24 + store i32 %inc, ptr %x, align 4, !dbg !24 + %1 = load i32, ptr %y, align 4, !dbg !26 + %inc1 = add nsw i32 %1, 1, !dbg !26 + store i32 %inc1, ptr %y, align 4, !dbg !26 + %2 = load i32, ptr %x, align 4, !dbg !27 + %3 = load i32, ptr %y, align 4, !dbg !28 + %cmp = icmp eq i32 %2, %3, !dbg !29 + br i1 %cmp, label %land.lhs.true, label %land.end, !dbg !30 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 + %4 = load i32, ptr %x, align 4, !dbg !31 + %cmp2 = icmp sle i32 %4, 10, !dbg !32 + br i1 %cmp2, label %land.lhs.true3, label %land.end, !dbg !33 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 + %5 = load i32, ptr %x, align 4, !dbg !34 + %6 = load i32, ptr %y, align 4, !dbg !35 + %cmp4 = icmp sge i32 %5, %6, !dbg !36 + br i1 %cmp4, label %land.rhs, label %land.end, !dbg !37 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 + %7 = load i32, ptr %x, align 4, !dbg !38 + %8 = load i32, ptr %y, align 4, !dbg !39 + %cmp5 = icmp sle i32 %7, %8, !dbg !40 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 + %9 = phi i1 [ false, %land.lhs.true3 ], [ false, %land.lhs.true ], [ false, %if.then ], [ %cmp5, %land.rhs ], !dbg !41 + call void @svf_assert(i1 noundef zeroext %9), !dbg !42 + br label %if.end, !dbg !43 if.end: ; preds = %land.end, %entry - ret i32 0, !dbg !45 + 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() #1 -declare i32 @nd() #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_br_nd_1-0.c", directory: "/root/testsss/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} @@ -80,9 +76,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_nd_1-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "d735ed503267deb3442f4b1b251511bb") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -95,25 +91,24 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!24 = !DILocation(line: 16, column: 10, scope: !25) +!25 = distinct !DILexicalBlock(scope: !23, file: !11, line: 15, column: 15) +!26 = !DILocation(line: 17, column: 10, scope: !25) +!27 = !DILocation(line: 18, column: 20, scope: !25) +!28 = !DILocation(line: 18, column: 23, scope: !25) +!29 = !DILocation(line: 18, column: 21, scope: !25) +!30 = !DILocation(line: 18, column: 25, scope: !25) +!31 = !DILocation(line: 18, column: 28, scope: !25) +!32 = !DILocation(line: 18, column: 29, scope: !25) +!33 = !DILocation(line: 18, column: 34, scope: !25) +!34 = !DILocation(line: 18, column: 37, scope: !25) +!35 = !DILocation(line: 18, column: 40, scope: !25) +!36 = !DILocation(line: 18, column: 38, scope: !25) +!37 = !DILocation(line: 18, column: 42, scope: !25) +!38 = !DILocation(line: 18, column: 45, scope: !25) +!39 = !DILocation(line: 18, column: 48, scope: !25) +!40 = !DILocation(line: 18, column: 46, scope: !25) +!41 = !DILocation(line: 0, scope: !25) +!42 = !DILocation(line: 18, column: 9, scope: !25) +!43 = !DILocation(line: 19, column: 5, scope: !25) +!44 = !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 index 6cbe47e10..840acd1fd 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_2-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,47 +10,43 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) + #dbg_declare(ptr %y, !18, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.end, !dbg !22 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 + %0 = load i32, ptr %x, align 4, !dbg !24 + %inc = add nsw i32 %0, 1, !dbg !24 + store i32 %inc, ptr %x, align 4, !dbg !24 + %1 = load i32, ptr %y, align 4, !dbg !26 + %inc1 = add nsw i32 %1, 1, !dbg !26 + store i32 %inc1, ptr %y, align 4, !dbg !26 + br label %if.end, !dbg !27 if.end: ; preds = %if.then, %entry - %2 = load i32, ptr %x, align 4, !dbg !29 - %3 = load i32, ptr %y, align 4, !dbg !30 - call void @svf_assert_eq(i32 noundef %2, i32 noundef %3), !dbg !31 - ret i32 0, !dbg !32 + %2 = load i32, ptr %x, align 4, !dbg !28 + %3 = load i32, ptr %y, align 4, !dbg !29 + call void @svf_assert_eq(i32 noundef %2, i32 noundef %3), !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 +declare i32 @nd() #1 -declare i32 @nd() #2 +declare void @svf_assert_eq(i32 noundef, i32 noundef) #1 -declare void @svf_assert_eq(i32 noundef, 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "ac96b6d01e861d4538e0c7808ec3fb27") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_br_nd_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ac96b6d01e861d4538e0c7808ec3fb27") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -58,9 +54,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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/BASIC_br_nd_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ac96b6d01e861d4538e0c7808ec3fb27") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_nd_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ac96b6d01e861d4538e0c7808ec3fb27") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -73,12 +69,11 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !21 = !DILocation(line: 14, column: 7, scope: !10) !22 = !DILocation(line: 16, column: 9, scope: !23) !23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 16, column: 9) -!24 = !DILocation(line: 16, column: 9, scope: !10) -!25 = !DILocation(line: 17, column: 10, scope: !26) -!26 = distinct !DILexicalBlock(scope: !23, file: !11, line: 16, column: 15) -!27 = !DILocation(line: 18, column: 10, scope: !26) -!28 = !DILocation(line: 19, column: 5, scope: !26) -!29 = !DILocation(line: 20, column: 19, scope: !10) -!30 = !DILocation(line: 20, column: 21, scope: !10) -!31 = !DILocation(line: 20, column: 5, scope: !10) -!32 = !DILocation(line: 21, column: 5, scope: !10) +!24 = !DILocation(line: 17, column: 10, scope: !25) +!25 = distinct !DILexicalBlock(scope: !23, file: !11, line: 16, column: 15) +!26 = !DILocation(line: 18, column: 10, scope: !25) +!27 = !DILocation(line: 19, column: 5, scope: !25) +!28 = !DILocation(line: 20, column: 19, scope: !10) +!29 = !DILocation(line: 20, column: 21, scope: !10) +!30 = !DILocation(line: 20, column: 5, scope: !10) +!31 = !DILocation(line: 21, 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 index 204a77c8e..416fc06fe 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_malloc-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main(i32 noundef %argc) #0 !dbg !10 { @@ -11,51 +11,47 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !16, !DIExpression(), !17) + #dbg_declare(ptr %p, !18, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.else, !dbg !24 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 + %2 = load ptr, ptr %p, align 8, !dbg !26 + store i32 20, ptr %2, align 4, !dbg !28 + br label %if.end, !dbg !29 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 + %3 = load ptr, ptr %p, align 8, !dbg !30 + %4 = load i32, ptr %3, align 4, !dbg !32 + %cmp = icmp eq i32 %4, 10, !dbg !33 + %conv = zext i1 %cmp to i32, !dbg !33 + call void @svf_assert(i32 noundef %conv), !dbg !34 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 + %5 = load i32, ptr %retval, align 4, !dbg !35 + ret i32 %5, !dbg !35 } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 +declare ptr @malloc(i32 noundef) #1 -declare ptr @malloc(i32 noundef) #2 +declare void @svf_assert(i32 noundef) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_br_nd_malloc-0.c", directory: "/root/testsss/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} @@ -63,9 +59,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_nd_malloc-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "01fcb0a24b581011fd8004bb13ddb19b") !12 = !DISubroutineType(types: !13) !13 = !{!14, !14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -80,14 +76,13 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!26 = !DILocation(line: 7, column: 10, scope: !27) +!27 = distinct !DILexicalBlock(scope: !25, file: !11, line: 6, column: 13) +!28 = !DILocation(line: 7, column: 12, scope: !27) +!29 = !DILocation(line: 8, column: 5, scope: !27) +!30 = !DILocation(line: 10, column: 21, scope: !31) +!31 = distinct !DILexicalBlock(scope: !25, file: !11, line: 9, column: 9) +!32 = !DILocation(line: 10, column: 20, scope: !31) +!33 = !DILocation(line: 10, column: 22, scope: !31) +!34 = !DILocation(line: 10, column: 9, scope: !31) +!35 = !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 index 25daebba7..926da1fe3 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_true_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,8 +10,8 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) + #dbg_declare(ptr %y, !18, !DIExpression(), !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 @@ -27,21 +27,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_br_true_0-0.c", directory: "/root/testsss/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} @@ -49,9 +45,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_true_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "f602064476cd9d07e4ecd25225bef809") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index f7b82c2b9..613123915 100644 --- 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 @@ -1,27 +1,24 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %p.addr, !17, !DIExpression(), !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 + #dbg_declare(ptr %a, !25, !DIExpression(), !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 @@ -30,18 +27,17 @@ entry: ret i32 0, !dbg !31 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_0-0.c", directory: "/root/testsss/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} @@ -49,9 +45,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_funcall_ref_0-0.c", directory: "/root/testsss/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) 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 index 4004531d3..24d0ba192 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap(ptr noundef %p, ptr noundef %q) #0 !dbg !10 { @@ -10,10 +10,10 @@ entry: %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 + #dbg_declare(ptr %p.addr, !17, !DIExpression(), !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 + #dbg_declare(ptr %q.addr, !19, !DIExpression(), !20) + #dbg_declare(ptr %t, !21, !DIExpression(), !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 @@ -27,17 +27,14 @@ entry: 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 + #dbg_declare(ptr %a, !36, !DIExpression(), !37) store i32 0, ptr %a, align 4, !dbg !37 - call void @llvm.dbg.declare(metadata ptr %b, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %b, !38, !DIExpression(), !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 @@ -46,18 +43,17 @@ entry: ret i32 0, !dbg !44 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_1-0.c", directory: "/root/testsss/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} @@ -65,9 +61,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_funcall_ref_1-0.c", directory: "/root/testsss/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) 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 index 86520854c..4c3b8f6a7 100644 --- 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 @@ -1,28 +1,25 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_2-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %p.addr, !17, !DIExpression(), !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 + #dbg_declare(ptr %a, !23, !DIExpression(), !24) store i32 0, ptr %a, align 4, !dbg !24 - call void @llvm.dbg.declare(metadata ptr %res, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %res, !25, !DIExpression(), !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 @@ -31,18 +28,17 @@ entry: ret i32 0, !dbg !31 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_2-0.c", directory: "/root/testsss/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} @@ -50,9 +46,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_funcall_ref_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "c35c5bf4b069b96d7c622bea08931938") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index a224a5926..e8c911e8a 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_nullptr_def_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct._twoIntsStruct = type { i32, i32 } @@ -11,54 +11,50 @@ 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 + #dbg_declare(ptr %twoIntsStructPointer, !23, !DIExpression(), !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 + %intOne = getelementptr inbounds nuw %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 + %intTwo = getelementptr inbounds nuw %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 + %intTwo1 = getelementptr inbounds nuw %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !35 if.then: ; preds = %entry - store ptr null, ptr %twoIntsStructPointer, align 8, !dbg !37 - br label %if.end, !dbg !39 + store ptr null, ptr %twoIntsStructPointer, align 8, !dbg !36 + br label %if.end, !dbg !38 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 + %5 = load ptr, ptr %twoIntsStructPointer, align 8, !dbg !39 + %intTwo2 = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %5, i32 0, i32 1, !dbg !40 + %6 = load i32, ptr %intTwo2, align 4, !dbg !40 + %cmp3 = icmp eq i32 %6, 3, !dbg !41 + %conv = zext i1 %cmp3 to i32, !dbg !41 + %call = call i32 (i32, ...) @svf_assert(i32 noundef %conv), !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(...) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_nullptr_def_0-0.c", directory: "/root/testsss/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") +!5 = !DIFile(filename: "src/ae_assert_tests/BASIC_nullptr_def_0-0.c", directory: "/root/testsss/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) @@ -71,7 +67,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!18 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -89,12 +85,11 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!36 = !DILocation(line: 25, column: 30, scope: !37) +!37 = distinct !DILexicalBlock(scope: !33, file: !5, line: 24, column: 43) +!38 = !DILocation(line: 26, column: 5, scope: !37) +!39 = !DILocation(line: 27, column: 13, scope: !19) +!40 = !DILocation(line: 27, column: 35, scope: !19) +!41 = !DILocation(line: 27, column: 42, scope: !19) +!42 = !DILocation(line: 27, column: 2, scope: !19) +!43 = !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 index 2d7e49ad6..458bf45da 100644 --- 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 @@ -1,15 +1,15 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_assign_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %p, !16, !DIExpression(), !18) + #dbg_declare(ptr %a, !19, !DIExpression(), !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 @@ -20,21 +20,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_ptr_assign_0-0.c", directory: "/root/testsss/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} @@ -42,9 +38,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_assign_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "cb1dc5512cccf3bb03c349e8288ea0b1") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 0e978ee3c..47baa2279 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_call1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -12,71 +12,67 @@ entry: %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 + #dbg_declare(ptr %p, !16, !DIExpression(), !18) + #dbg_declare(ptr %q, !19, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.end, !dbg !24 if.then: ; preds = %entry - br label %if.end, !dbg !27 + br label %if.end, !dbg !26 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 + #dbg_declare(ptr %x, !28, !DIExpression(), !29) + %call1 = call i32 @a(), !dbg !30 + store i32 %call1, ptr %x, align 4, !dbg !29 + #dbg_declare(ptr %y, !31, !DIExpression(), !32) + %call2 = call i32 @c(i32 noundef 2), !dbg !33 + store i32 %call2, ptr %y, align 4, !dbg !32 + %0 = load i32, ptr %x, align 4, !dbg !34 + %cmp = icmp sge i32 %0, 5, !dbg !35 + br i1 %cmp, label %land.rhs, label %land.end, !dbg !36 land.rhs: ; preds = %if.end - %1 = load i32, ptr %y, align 4, !dbg !38 - %cmp3 = icmp sge i32 %1, 7, !dbg !39 + %1 = load i32, ptr %y, align 4, !dbg !37 + %cmp3 = icmp sge i32 %1, 7, !dbg !38 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 + %2 = phi i1 [ false, %if.end ], [ %cmp3, %land.rhs ], !dbg !39 + call void @svf_assert(i1 noundef zeroext %2), !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_int() #2 +declare i32 @nd_int() #1 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @a() #0 !dbg !43 { +define dso_local i32 @a() #0 !dbg !42 { entry: - ret i32 10, !dbg !44 + ret i32 10, !dbg !43 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @c(i32 noundef %x) #0 !dbg !45 { +define dso_local i32 @c(i32 noundef %x) #0 !dbg !44 { 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 + #dbg_declare(ptr %x.addr, !45, !DIExpression(), !46) + %0 = load i32, ptr %x.addr, align 4, !dbg !47 + %add = add nsw i32 %0, 5, !dbg !48 + ret i32 %add, !dbg !49 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_ptr_call1-0.c", directory: "/root/testsss/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} @@ -84,9 +80,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_call1-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "170ac1ec762dee7b184a9abdb83dd549") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -101,28 +97,27 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!26 = !DILocation(line: 19, column: 3, scope: !27) +!27 = distinct !DILexicalBlock(scope: !25, file: !11, line: 13, column: 17) +!28 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 21, type: !14) +!29 = !DILocation(line: 21, column: 7, scope: !10) +!30 = !DILocation(line: 21, column: 11, scope: !10) +!31 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 22, type: !14) +!32 = !DILocation(line: 22, column: 7, scope: !10) +!33 = !DILocation(line: 22, column: 11, scope: !10) +!34 = !DILocation(line: 24, column: 14, scope: !10) +!35 = !DILocation(line: 24, column: 15, scope: !10) +!36 = !DILocation(line: 24, column: 20, scope: !10) +!37 = !DILocation(line: 24, column: 23, scope: !10) +!38 = !DILocation(line: 24, column: 24, scope: !10) +!39 = !DILocation(line: 0, scope: !10) +!40 = !DILocation(line: 24, column: 3, scope: !10) +!41 = !DILocation(line: 26, column: 3, scope: !10) +!42 = distinct !DISubprogram(name: "a", scope: !11, file: !11, line: 29, type: !12, scopeLine: 29, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!43 = !DILocation(line: 29, column: 10, scope: !42) +!44 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 30, type: !21, scopeLine: 30, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) +!45 = !DILocalVariable(name: "x", arg: 1, scope: !44, file: !11, line: 30, type: !14) +!46 = !DILocation(line: 30, column: 11, scope: !44) +!47 = !DILocation(line: 30, column: 22, scope: !44) +!48 = !DILocation(line: 30, column: 23, scope: !44) +!49 = !DILocation(line: 30, column: 15, scope: !44) 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 index c05392796..3f081f328 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_call2-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [2 x i8] c"X\00", align 1, !dbg !0 @@ -13,13 +13,13 @@ entry: %x = alloca i32, align 4 %res = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %y, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %y, !23, !DIExpression(), !24) %call = call i32 @c(i32 noundef 2), !dbg !25 store i32 %call, ptr %y, align 4, !dbg !24 - call void @llvm.dbg.declare(metadata ptr %x, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %x, !26, !DIExpression(), !27) %call1 = call i32 @c(i32 noundef 3), !dbg !28 store i32 %call1, ptr %x, align 4, !dbg !27 - call void @llvm.dbg.declare(metadata ptr %res, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %res, !29, !DIExpression(), !30) %0 = load i32, ptr %res, align 4, !dbg !31 call void @set_value(i32 noundef %0, i32 noundef 2, i32 noundef 3), !dbg !32 %1 = load i32, ptr %x, align 4, !dbg !33 @@ -30,28 +30,24 @@ entry: 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: noinline nounwind optnone uwtable define dso_local i32 @c(i32 noundef %z) #0 !dbg !39 { 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 !42, metadata !DIExpression()), !dbg !43 + #dbg_declare(ptr %z.addr, !42, !DIExpression(), !43) %0 = load i32, ptr %z.addr, align 4, !dbg !44 ret i32 %0, !dbg !45 } -declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #2 +declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #1 -declare void @svf_print(i32 noundef, ptr noundef) #2 +declare void @svf_print(i32 noundef, ptr noundef) #1 -declare void @svf_assert_eq(i32 noundef, i32 noundef) #2 +declare void @svf_assert_eq(i32 noundef, 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -59,13 +55,13 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 16, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_call2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d062e32c50bd991f94a65334c8d20b07") +!2 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_call2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "d062e32c50bd991f94a65334c8d20b07") !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 = 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/BASIC_ptr_call2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d062e32c50bd991f94a65334c8d20b07") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_ptr_call2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "d062e32c50bd991f94a65334c8d20b07") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -74,7 +70,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!17 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !18 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 11, type: !19, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !22) !19 = !DISubroutineType(types: !20) !20 = !{!21} 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 index 690c340c0..4125b6c43 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap(ptr noundef %p, ptr noundef %q) #0 !dbg !10 { @@ -10,10 +10,10 @@ entry: %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 + #dbg_declare(ptr %p.addr, !18, !DIExpression(), !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 + #dbg_declare(ptr %q.addr, !20, !DIExpression(), !21) + #dbg_declare(ptr %t, !22, !DIExpression(), !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 @@ -32,10 +32,7 @@ entry: 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 +declare void @svf_assert(i1 noundef zeroext) #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !39 { @@ -44,26 +41,25 @@ entry: %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 + #dbg_declare(ptr %a1, !43, !DIExpression(), !44) + #dbg_declare(ptr %b1, !45, !DIExpression(), !46) + #dbg_declare(ptr %a, !47, !DIExpression(), !48) store ptr %a1, ptr %a, align 8, !dbg !48 - call void @llvm.dbg.declare(metadata ptr %b, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %b, !49, !DIExpression(), !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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_0-0.c", directory: "/root/testsss/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} @@ -71,9 +67,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_func_0-0.c", directory: "/root/testsss/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) 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 index 5ed87d42a..393bd18b7 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -12,75 +12,71 @@ entry: %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 + #dbg_declare(ptr %p, !16, !DIExpression(), !18) + #dbg_declare(ptr %q, !19, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.end, !dbg !24 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 + store ptr @a, ptr %p, align 8, !dbg !26 + store ptr @c, ptr %q, align 8, !dbg !28 + br label %if.end, !dbg !29 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 + #dbg_declare(ptr %x, !30, !DIExpression(), !31) + %0 = load ptr, ptr %p, align 8, !dbg !32 + %call1 = call i32 %0(), !dbg !32 + store i32 %call1, ptr %x, align 4, !dbg !31 + #dbg_declare(ptr %y, !33, !DIExpression(), !34) + %1 = load ptr, ptr %q, align 8, !dbg !35 + %call2 = call i32 %1(i32 noundef 2), !dbg !35 + store i32 %call2, ptr %y, align 4, !dbg !34 + %2 = load i32, ptr %x, align 4, !dbg !36 + %cmp = icmp sge i32 %2, 5, !dbg !37 + br i1 %cmp, label %land.rhs, label %land.end, !dbg !38 land.rhs: ; preds = %if.end - %3 = load i32, ptr %y, align 4, !dbg !40 - %cmp3 = icmp sge i32 %3, 7, !dbg !41 + %3 = load i32, ptr %y, align 4, !dbg !39 + %cmp3 = icmp sge i32 %3, 7, !dbg !40 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 + %4 = phi i1 [ false, %if.end ], [ %cmp3, %land.rhs ], !dbg !41 + call void @svf_assert(i1 noundef zeroext %4), !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 @nd_int() #2 +declare i32 @nd_int() #1 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @a() #0 !dbg !45 { +define dso_local i32 @a() #0 !dbg !44 { entry: - ret i32 10, !dbg !46 + ret i32 10, !dbg !45 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @c(i32 noundef %x) #0 !dbg !47 { +define dso_local i32 @c(i32 noundef %x) #0 !dbg !46 { 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 + #dbg_declare(ptr %x.addr, !47, !DIExpression(), !48) + %0 = load i32, ptr %x.addr, align 4, !dbg !49 + %add = add nsw i32 %0, 5, !dbg !50 + ret i32 %add, !dbg !51 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_1-0.c", directory: "/root/testsss/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} @@ -88,9 +84,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_func_1-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "c780b1b60dee127e0bd37f2c6b480056") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -105,30 +101,29 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!26 = !DILocation(line: 14, column: 9, scope: !27) +!27 = distinct !DILexicalBlock(scope: !25, file: !11, line: 13, column: 17) +!28 = !DILocation(line: 15, column: 9, scope: !27) +!29 = !DILocation(line: 16, column: 3, scope: !27) +!30 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 18, type: !14) +!31 = !DILocation(line: 18, column: 7, scope: !10) +!32 = !DILocation(line: 18, column: 11, scope: !10) +!33 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 19, type: !14) +!34 = !DILocation(line: 19, column: 7, scope: !10) +!35 = !DILocation(line: 19, column: 11, scope: !10) +!36 = !DILocation(line: 21, column: 14, scope: !10) +!37 = !DILocation(line: 21, column: 15, scope: !10) +!38 = !DILocation(line: 21, column: 20, scope: !10) +!39 = !DILocation(line: 21, column: 23, scope: !10) +!40 = !DILocation(line: 21, column: 24, scope: !10) +!41 = !DILocation(line: 0, scope: !10) +!42 = !DILocation(line: 21, column: 3, scope: !10) +!43 = !DILocation(line: 23, column: 3, scope: !10) +!44 = distinct !DISubprogram(name: "a", scope: !11, file: !11, line: 26, type: !12, scopeLine: 26, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!45 = !DILocation(line: 26, column: 10, scope: !44) +!46 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 27, type: !21, scopeLine: 27, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) +!47 = !DILocalVariable(name: "x", arg: 1, scope: !46, file: !11, line: 27, type: !14) +!48 = !DILocation(line: 27, column: 11, scope: !46) +!49 = !DILocation(line: 27, column: 22, scope: !46) +!50 = !DILocation(line: 27, column: 23, scope: !46) +!51 = !DILocation(line: 27, column: 15, scope: !46) 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 index 3a2e823cc..d2c5f63c2 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_4-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !10 { @@ -14,71 +14,67 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !19, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !21, !DIExpression(), !22) + #dbg_declare(ptr %q, !23, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.else, !dbg !29 if.then: ; preds = %entry - store ptr @c, ptr %q, align 8, !dbg !32 - br label %if.end, !dbg !34 + store ptr @c, ptr %q, align 8, !dbg !31 + br label %if.end, !dbg !33 if.else: ; preds = %entry - store ptr @c, ptr %q, align 8, !dbg !35 + store ptr @c, ptr %q, align 8, !dbg !34 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 + #dbg_declare(ptr %y, !36, !DIExpression(), !37) + store i32 5, ptr %y, align 4, !dbg !37 + #dbg_declare(ptr %r, !38, !DIExpression(), !39) + %0 = load ptr, ptr %q, align 8, !dbg !40 + %call1 = call i32 %0(ptr noundef %y), !dbg !40 + store i32 %call1, ptr %r, align 4, !dbg !39 + %1 = load i32, ptr %y, align 4, !dbg !41 + %cmp = icmp sge i32 %1, 7, !dbg !42 + call void @svf_assert(i1 noundef zeroext %cmp), !dbg !43 + %2 = load i32, ptr %retval, align 4, !dbg !44 + ret i32 %2, !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 +declare i32 @nd_int() #1 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @c(ptr noundef %x) #0 !dbg !46 { +define dso_local i32 @c(ptr noundef %x) #0 !dbg !45 { 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 + #dbg_declare(ptr %x.addr, !46, !DIExpression(), !47) + %0 = load ptr, ptr %x.addr, align 8, !dbg !48 + %1 = load i32, ptr %0, align 4, !dbg !49 + %add = add nsw i32 %1, 5, !dbg !50 + %2 = load ptr, ptr %x.addr, align 8, !dbg !51 + store i32 %add, ptr %2, align 4, !dbg !52 + %call = call i32 @nd_int(), !dbg !53 + %tobool = icmp ne i32 %call, 0, !dbg !53 + %3 = zext i1 %tobool to i64, !dbg !53 + %cond = select i1 %tobool, i32 0, i32 1, !dbg !53 + ret i32 %cond, !dbg !54 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_4-0.c", directory: "/root/testsss/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} @@ -86,9 +82,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_func_4-0.c", directory: "/root/testsss/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) @@ -108,28 +104,27 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!31 = !DILocation(line: 10, column: 7, scope: !32) +!32 = distinct !DILexicalBlock(scope: !30, file: !11, line: 9, column: 17) +!33 = !DILocation(line: 11, column: 3, scope: !32) +!34 = !DILocation(line: 12, column: 9, scope: !35) +!35 = distinct !DILexicalBlock(scope: !30, file: !11, line: 11, column: 10) +!36 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 14, type: !14) +!37 = !DILocation(line: 14, column: 7, scope: !10) +!38 = !DILocalVariable(name: "r", scope: !10, file: !11, line: 15, type: !14) +!39 = !DILocation(line: 15, column: 7, scope: !10) +!40 = !DILocation(line: 15, column: 11, scope: !10) +!41 = !DILocation(line: 17, column: 14, scope: !10) +!42 = !DILocation(line: 17, column: 16, scope: !10) +!43 = !DILocation(line: 17, column: 3, scope: !10) +!44 = !DILocation(line: 18, column: 1, scope: !10) +!45 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 20, type: !25, scopeLine: 20, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) +!46 = !DILocalVariable(name: "x", arg: 1, scope: !45, file: !11, line: 20, type: !27) +!47 = !DILocation(line: 20, column: 12, scope: !45) +!48 = !DILocation(line: 21, column: 9, scope: !45) +!49 = !DILocation(line: 21, column: 8, scope: !45) +!50 = !DILocation(line: 21, column: 10, scope: !45) +!51 = !DILocation(line: 21, column: 4, scope: !45) +!52 = !DILocation(line: 21, column: 6, scope: !45) +!53 = !DILocation(line: 22, column: 11, scope: !45) +!54 = !DILocation(line: 22, column: 3, scope: !45) 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 index 509d407a5..4437be83f 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_6-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !10 { @@ -11,13 +11,13 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !19, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !21, !DIExpression(), !22) + #dbg_declare(ptr %q, !23, !DIExpression(), !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 + #dbg_declare(ptr %y, !30, !DIExpression(), !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 @@ -27,15 +27,12 @@ entry: 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 + #dbg_declare(ptr %x.addr, !38, !DIExpression(), !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 @@ -45,20 +42,19 @@ entry: ret void, !dbg !46 } -declare i32 @nd_int() #2 +declare i32 @nd_int() #1 -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_6-0.c", directory: "/root/testsss/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} @@ -66,9 +62,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_func_6-0.c", directory: "/root/testsss/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) 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 index b4053ee6e..e196a9ab6 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_s32_2-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @__const.main.a = private unnamed_addr constant [3 x i32] [i32 1, i32 2, i32 3], align 4 @@ -10,9 +10,9 @@ 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 + #dbg_declare(ptr %a, !18, !DIExpression(), !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 + #dbg_declare(ptr %p, !23, !DIExpression(), !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 @@ -21,22 +21,18 @@ entry: 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 @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { 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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_ptr_s32_2-0.c", directory: "/root/testsss/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) @@ -47,9 +43,9 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!12 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!14 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_s32_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fb6df4584ba3688c8b656d4d1e01eb61") !15 = !DISubroutineType(types: !16) !16 = !{!4} !17 = !{} 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 index 8e675405c..5d8b24d8c 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_struct_array_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.A = type { i32, [3 x i32] } @@ -11,20 +11,20 @@ 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 + #dbg_declare(ptr %a, !16, !DIExpression(), !25) + %b = getelementptr inbounds nuw %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 + %b1 = getelementptr inbounds nuw %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 + %b3 = getelementptr inbounds nuw %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 + %a5 = getelementptr inbounds nuw %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 + %b6 = getelementptr inbounds nuw %struct.A, ptr %a, i32 0, i32 1, !dbg !37 + %a7 = getelementptr inbounds nuw %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 @@ -34,21 +34,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_struct_array_0-0.c", directory: "/root/testsss/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} @@ -56,9 +52,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_struct_array_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "964c3c8a922dba2af5e9119a11f58ef0") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 1934df99f..6e5c1a76c 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_struct_assign_0-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.Struct = type { i32, i32 } @@ -12,11 +12,11 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !22) + #dbg_declare(ptr %p, !23, !DIExpression(), !25) + %y = getelementptr inbounds nuw %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 + %y1 = getelementptr inbounds nuw %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 @@ -25,21 +25,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_struct_assign_0-0.c", directory: "/root/testsss/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} @@ -47,9 +43,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_struct_assign_0-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "9de6f29f1655805490d8474658bc3a5a") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 38ab48263..403eda7c4 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -11,11 +11,11 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) + #dbg_declare(ptr %y, !18, !DIExpression(), !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 + #dbg_declare(ptr %cond, !22, !DIExpression(), !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 @@ -63,21 +63,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb 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(...) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch-0.c", directory: "/root/testsss/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} @@ -85,9 +81,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "9c4237da1d6907a101d32f871f2e4cf1") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 6d6943844..2ab06d744 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc @@ -1,23 +1,23 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @nd() #0 !dbg !10 { entry: - ret i32 1, !dbg !16 + ret i32 1, !dbg !15 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { +define dso_local i32 @main() #0 !dbg !16 { 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 + #dbg_declare(ptr %x, !18, !DIExpression(), !19) + #dbg_declare(ptr %y, !20, !DIExpression(), !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 @@ -64,21 +64,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb3 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch01-0.c", directory: "/root/testsss/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} @@ -86,25 +82,25 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch01-0.c", directory: "/root/testsss/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) +!15 = !DILocation(line: 6, column: 5, scope: !10) +!16 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) +!17 = !{} +!18 = !DILocalVariable(name: "x", scope: !16, file: !11, line: 10, type: !14) +!19 = !DILocation(line: 10, column: 7, scope: !16) +!20 = !DILocalVariable(name: "y", scope: !16, file: !11, line: 10, type: !14) +!21 = !DILocation(line: 10, column: 10, scope: !16) +!22 = !DILocation(line: 11, column: 5, scope: !16) +!23 = !DILocation(line: 12, column: 5, scope: !16) +!24 = !DILocation(line: 13, column: 11, scope: !16) +!25 = !DILocation(line: 13, column: 3, scope: !16) !26 = !DILocation(line: 16, column: 11, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 14, column: 3) +!27 = distinct !DILexicalBlock(scope: !16, 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) @@ -115,8 +111,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!38 = !DILocation(line: 29, column: 16, scope: !16) +!39 = !DILocation(line: 29, column: 21, scope: !16) +!40 = !DILocation(line: 29, column: 18, scope: !16) +!41 = !DILocation(line: 29, column: 5, scope: !16) +!42 = !DILocation(line: 30, column: 5, scope: !16) 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 index f4dca727c..b846a91cc 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -11,11 +11,11 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) + #dbg_declare(ptr %y, !18, !DIExpression(), !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 + #dbg_declare(ptr %cond, !22, !DIExpression(), !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 @@ -62,21 +62,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch02-0.c", directory: "/root/testsss/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} @@ -84,9 +80,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch02-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 93a67f376..3a6ef6477 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc @@ -1,23 +1,23 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @nd() #0 !dbg !10 { entry: - ret i32 1, !dbg !16 + ret i32 1, !dbg !15 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { +define dso_local i32 @main() #0 !dbg !16 { 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 + #dbg_declare(ptr %x, !18, !DIExpression(), !19) + #dbg_declare(ptr %y, !20, !DIExpression(), !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 @@ -64,21 +64,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb3 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch03-0.c", directory: "/root/testsss/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} @@ -86,25 +82,25 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch03-0.c", directory: "/root/testsss/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) +!15 = !DILocation(line: 6, column: 5, scope: !10) +!16 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) +!17 = !{} +!18 = !DILocalVariable(name: "x", scope: !16, file: !11, line: 10, type: !14) +!19 = !DILocation(line: 10, column: 9, scope: !16) +!20 = !DILocalVariable(name: "y", scope: !16, file: !11, line: 10, type: !14) +!21 = !DILocation(line: 10, column: 12, scope: !16) +!22 = !DILocation(line: 11, column: 7, scope: !16) +!23 = !DILocation(line: 12, column: 7, scope: !16) +!24 = !DILocation(line: 13, column: 13, scope: !16) +!25 = !DILocation(line: 13, column: 5, scope: !16) !26 = !DILocation(line: 16, column: 15, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 14, column: 5) +!27 = distinct !DILexicalBlock(scope: !16, 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) @@ -115,8 +111,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!38 = !DILocation(line: 29, column: 16, scope: !16) +!39 = !DILocation(line: 29, column: 21, scope: !16) +!40 = !DILocation(line: 29, column: 18, scope: !16) +!41 = !DILocation(line: 29, column: 5, scope: !16) +!42 = !DILocation(line: 30, column: 5, scope: !16) 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 index 93463b472..31ee0bb56 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc @@ -1,27 +1,27 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @nd() #0 !dbg !10 { entry: - ret i32 1, !dbg !16 + ret i32 1, !dbg !15 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { +define dso_local i32 @main() #0 !dbg !16 { 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 + #dbg_declare(ptr %x, !18, !DIExpression(), !19) + #dbg_declare(ptr %y, !20, !DIExpression(), !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 + #dbg_declare(ptr %i, !24, !DIExpression(), !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 [ @@ -67,21 +67,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb3 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch04-0.c", directory: "/root/testsss/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} @@ -89,28 +85,28 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch04-0.c", directory: "/root/testsss/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) +!15 = !DILocation(line: 6, column: 5, scope: !10) +!16 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) +!17 = !{} +!18 = !DILocalVariable(name: "x", scope: !16, file: !11, line: 10, type: !14) +!19 = !DILocation(line: 10, column: 7, scope: !16) +!20 = !DILocalVariable(name: "y", scope: !16, file: !11, line: 10, type: !14) +!21 = !DILocation(line: 10, column: 10, scope: !16) +!22 = !DILocation(line: 11, column: 5, scope: !16) +!23 = !DILocation(line: 12, column: 5, scope: !16) +!24 = !DILocalVariable(name: "i", scope: !16, 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) +!26 = !DILocation(line: 13, column: 13, scope: !16) +!27 = !DILocation(line: 14, column: 11, scope: !16) +!28 = !DILocation(line: 14, column: 3, scope: !16) !29 = !DILocation(line: 17, column: 11, scope: !30) -!30 = distinct !DILexicalBlock(scope: !17, file: !11, line: 15, column: 3) +!30 = distinct !DILexicalBlock(scope: !16, 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) @@ -121,8 +117,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!41 = !DILocation(line: 30, column: 16, scope: !16) +!42 = !DILocation(line: 30, column: 21, scope: !16) +!43 = !DILocation(line: 30, column: 18, scope: !16) +!44 = !DILocation(line: 30, column: 5, scope: !16) +!45 = !DILocation(line: 31, column: 5, scope: !16) 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 index 88e8263d7..9627117ac 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc @@ -1,23 +1,23 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @nd() #0 !dbg !10 { entry: - ret i32 1, !dbg !16 + ret i32 1, !dbg !15 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { +define dso_local i32 @main() #0 !dbg !16 { 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 + #dbg_declare(ptr %x, !18, !DIExpression(), !19) + #dbg_declare(ptr %y, !20, !DIExpression(), !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 @@ -64,21 +64,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb3 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch05-0.c", directory: "/root/testsss/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} @@ -86,25 +82,25 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch05-0.c", directory: "/root/testsss/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) +!15 = !DILocation(line: 6, column: 5, scope: !10) +!16 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) +!17 = !{} +!18 = !DILocalVariable(name: "x", scope: !16, file: !11, line: 10, type: !14) +!19 = !DILocation(line: 10, column: 9, scope: !16) +!20 = !DILocalVariable(name: "y", scope: !16, file: !11, line: 10, type: !14) +!21 = !DILocation(line: 10, column: 12, scope: !16) +!22 = !DILocation(line: 11, column: 7, scope: !16) +!23 = !DILocation(line: 12, column: 7, scope: !16) +!24 = !DILocation(line: 13, column: 13, scope: !16) +!25 = !DILocation(line: 13, column: 5, scope: !16) !26 = !DILocation(line: 16, column: 15, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 14, column: 5) +!27 = distinct !DILexicalBlock(scope: !16, 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) @@ -115,8 +111,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!38 = !DILocation(line: 29, column: 16, scope: !16) +!39 = !DILocation(line: 29, column: 21, scope: !16) +!40 = !DILocation(line: 29, column: 18, scope: !16) +!41 = !DILocation(line: 29, column: 5, scope: !16) +!42 = !DILocation(line: 30, column: 5, scope: !16) 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 index c07e9343e..1fbda8406 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -11,11 +11,11 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) + #dbg_declare(ptr %y, !18, !DIExpression(), !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 + #dbg_declare(ptr %cond, !22, !DIExpression(), !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 @@ -62,21 +62,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch06-0.c", directory: "/root/testsss/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} @@ -84,9 +80,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch06-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 3f05c6db1..dd87fa6ef 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc @@ -1,23 +1,23 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @nd() #0 !dbg !10 { entry: - ret i32 1, !dbg !16 + ret i32 1, !dbg !15 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { +define dso_local i32 @main() #0 !dbg !16 { 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 + #dbg_declare(ptr %x, !18, !DIExpression(), !19) + #dbg_declare(ptr %y, !20, !DIExpression(), !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 @@ -64,21 +64,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb3 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch07-0.c", directory: "/root/testsss/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} @@ -86,25 +82,25 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch07-0.c", directory: "/root/testsss/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) +!15 = !DILocation(line: 6, column: 5, scope: !10) +!16 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) +!17 = !{} +!18 = !DILocalVariable(name: "x", scope: !16, file: !11, line: 10, type: !14) +!19 = !DILocation(line: 10, column: 9, scope: !16) +!20 = !DILocalVariable(name: "y", scope: !16, file: !11, line: 10, type: !14) +!21 = !DILocation(line: 10, column: 12, scope: !16) +!22 = !DILocation(line: 11, column: 7, scope: !16) +!23 = !DILocation(line: 12, column: 7, scope: !16) +!24 = !DILocation(line: 13, column: 13, scope: !16) +!25 = !DILocation(line: 13, column: 5, scope: !16) !26 = !DILocation(line: 16, column: 15, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 14, column: 5) +!27 = distinct !DILexicalBlock(scope: !16, 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) @@ -115,8 +111,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!38 = !DILocation(line: 29, column: 16, scope: !16) +!39 = !DILocation(line: 29, column: 21, scope: !16) +!40 = !DILocation(line: 29, column: 18, scope: !16) +!41 = !DILocation(line: 29, column: 5, scope: !16) +!42 = !DILocation(line: 30, column: 5, scope: !16) 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 index e4633275c..a9afcbce7 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc @@ -1,27 +1,27 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @nd() #0 !dbg !10 { entry: - ret i32 1, !dbg !16 + ret i32 1, !dbg !15 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { +define dso_local i32 @main() #0 !dbg !16 { 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 + #dbg_declare(ptr %x, !18, !DIExpression(), !19) + #dbg_declare(ptr %y, !20, !DIExpression(), !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 + #dbg_declare(ptr %i, !24, !DIExpression(), !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 [ @@ -67,21 +67,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb3 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch08-0.c", directory: "/root/testsss/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} @@ -89,28 +85,28 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch08-0.c", directory: "/root/testsss/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) +!15 = !DILocation(line: 6, column: 5, scope: !10) +!16 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) +!17 = !{} +!18 = !DILocalVariable(name: "x", scope: !16, file: !11, line: 10, type: !14) +!19 = !DILocation(line: 10, column: 9, scope: !16) +!20 = !DILocalVariable(name: "y", scope: !16, file: !11, line: 10, type: !14) +!21 = !DILocation(line: 10, column: 12, scope: !16) +!22 = !DILocation(line: 11, column: 7, scope: !16) +!23 = !DILocation(line: 12, column: 7, scope: !16) +!24 = !DILocalVariable(name: "i", scope: !16, 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) +!26 = !DILocation(line: 13, column: 15, scope: !16) +!27 = !DILocation(line: 14, column: 13, scope: !16) +!28 = !DILocation(line: 14, column: 5, scope: !16) !29 = !DILocation(line: 17, column: 15, scope: !30) -!30 = distinct !DILexicalBlock(scope: !17, file: !11, line: 15, column: 5) +!30 = distinct !DILexicalBlock(scope: !16, 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) @@ -121,8 +117,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!41 = !DILocation(line: 30, column: 16, scope: !16) +!42 = !DILocation(line: 30, column: 21, scope: !16) +!43 = !DILocation(line: 30, column: 18, scope: !16) +!44 = !DILocation(line: 30, column: 5, scope: !16) +!45 = !DILocation(line: 31, column: 5, scope: !16) 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 index 201391e39..461f7b00b 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc @@ -1,23 +1,23 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @nd() #0 !dbg !10 { entry: - ret i32 1, !dbg !16 + ret i32 1, !dbg !15 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { +define dso_local i32 @main() #0 !dbg !16 { 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 + #dbg_declare(ptr %x, !18, !DIExpression(), !19) + #dbg_declare(ptr %y, !20, !DIExpression(), !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 @@ -64,21 +64,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb3 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch09-0.c", directory: "/root/testsss/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} @@ -86,25 +82,25 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 6, type: !12, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch09-0.c", directory: "/root/testsss/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) +!15 = !DILocation(line: 8, column: 5, scope: !10) +!16 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 11, type: !12, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) +!17 = !{} +!18 = !DILocalVariable(name: "x", scope: !16, file: !11, line: 12, type: !14) +!19 = !DILocation(line: 12, column: 9, scope: !16) +!20 = !DILocalVariable(name: "y", scope: !16, file: !11, line: 12, type: !14) +!21 = !DILocation(line: 12, column: 12, scope: !16) +!22 = !DILocation(line: 13, column: 7, scope: !16) +!23 = !DILocation(line: 14, column: 7, scope: !16) +!24 = !DILocation(line: 15, column: 13, scope: !16) +!25 = !DILocation(line: 15, column: 5, scope: !16) !26 = !DILocation(line: 18, column: 15, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 16, column: 5) +!27 = distinct !DILexicalBlock(scope: !16, 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) @@ -115,8 +111,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!38 = !DILocation(line: 31, column: 16, scope: !16) +!39 = !DILocation(line: 31, column: 21, scope: !16) +!40 = !DILocation(line: 31, column: 18, scope: !16) +!41 = !DILocation(line: 31, column: 5, scope: !16) +!42 = !DILocation(line: 32, column: 5, scope: !16) 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 index 7b9c47ec5..e9edf5ec5 100644 --- a/test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc +++ b/test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -11,11 +11,11 @@ entry: %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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) + #dbg_declare(ptr %y, !18, !DIExpression(), !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 + #dbg_declare(ptr %cond, !22, !DIExpression(), !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 @@ -62,21 +62,17 @@ sw.epilog: ; preds = %sw.default, %sw.bb 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_switch10-0.c", directory: "/root/testsss/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} @@ -84,9 +80,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch10-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index a62f2c6c2..cb7347da6 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_test_11-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -11,11 +11,11 @@ entry: %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 + #dbg_declare(ptr %data, !16, !DIExpression(), !17) store i32 0, ptr %data, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %data1, metadata !18, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %data1, !18, !DIExpression(), !20) store i32 1, ptr %data1, align 4, !dbg !20 - call void @llvm.dbg.declare(metadata ptr %data2, metadata !21, metadata !DIExpression()), !dbg !23 + #dbg_declare(ptr %data2, !21, !DIExpression(), !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 @@ -23,21 +23,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BASIC_test_11-0.c", directory: "/root/testsss/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} @@ -45,9 +41,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_test_11-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "b959132c620c1d5511825589aa0b5c10") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index d9d1e93a3..486a7daae 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/BUF_OVERFLOW_test_47-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !30 { @@ -11,18 +11,18 @@ entry: %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 + #dbg_declare(ptr %buffer, !35, !DIExpression(), !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 + call void @srand(i32 noundef %call) #4, !dbg !41 + #dbg_declare(ptr %randomNumber, !42, !DIExpression(), !43) + %call1 = call i32 @rand() #4, !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 + #dbg_declare(ptr %ch, !46, !DIExpression(), !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 + %call2 = call ptr @__ctype_b_loc() #5, !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 @@ -32,58 +32,54 @@ entry: %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 + br i1 %tobool, label %if.then, label %if.else, !dbg !50 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 + %4 = load i32, ptr %randomNumber, align 4, !dbg !52 + %idxprom5 = sext i32 %4 to i64, !dbg !54 + %arrayidx6 = getelementptr inbounds [58 x i32], ptr %buffer, i64 0, i64 %idxprom5, !dbg !54 + store i32 1, ptr %arrayidx6, align 4, !dbg !55 + br label %if.end, !dbg !56 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 + %5 = load i32, ptr %randomNumber, align 4, !dbg !57 + %idxprom7 = sext i32 %5 to i64, !dbg !59 + %arrayidx8 = getelementptr inbounds [58 x i32], ptr %buffer, i64 0, i64 %idxprom7, !dbg !59 + store i32 1, ptr %arrayidx8, align 4, !dbg !60 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 + %6 = load i32, ptr %retval, align 4, !dbg !61 + ret i32 %6, !dbg !61 } -; 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 void @srand(i32 noundef) #1 -declare i32 @time(...) #3 +declare i32 @time(...) #2 ; Function Attrs: nounwind -declare i32 @rand() #2 +declare i32 @rand() #1 ; Function Attrs: nounwind willreturn memory(none) -declare ptr @__ctype_b_loc() #4 +declare ptr @__ctype_b_loc() #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 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } +attributes #5 = { 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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !19, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/BUF_OVERFLOW_test_47-0.c", directory: "/root/testsss/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") +!4 = !DIFile(filename: "/usr/include/ctype.h", directory: "", checksumkind: CSK_MD5, checksum: "43fd45dcf96e8fb7d8f14700096497c7") !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) @@ -108,9 +104,9 @@ attributes #6 = { nounwind willreturn memory(none) } !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"} +!29 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!31 = !DIFile(filename: "src/ae_assert_tests/BUF_OVERFLOW_test_47-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "352e37dfff62dbe992ec1404ff1c67f5") !32 = !DISubroutineType(types: !33) !33 = !{!20} !34 = !{} @@ -131,14 +127,13 @@ attributes #6 = { nounwind willreturn memory(none) } !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) +!52 = !DILocation(line: 15, column: 10, scope: !53) +!53 = distinct !DILexicalBlock(scope: !51, file: !31, line: 13, column: 22) +!54 = !DILocation(line: 15, column: 3, scope: !53) +!55 = !DILocation(line: 15, column: 24, scope: !53) +!56 = !DILocation(line: 16, column: 5, scope: !53) +!57 = !DILocation(line: 19, column: 10, scope: !58) +!58 = distinct !DILexicalBlock(scope: !51, file: !31, line: 17, column: 10) +!59 = !DILocation(line: 19, column: 3, scope: !58) +!60 = !DILocation(line: 19, column: 24, scope: !58) +!61 = !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 index ea802782f..d85e475dc 100644 --- a/test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc +++ b/test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !12 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %f, !16, !DIExpression(), !18) store float 0xC0091EB860000000, ptr %f, align 4, !dbg !18 - call void @llvm.dbg.declare(metadata ptr %si, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %si, !19, !DIExpression(), !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 @@ -22,21 +22,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CAST_fptosi.c", directory: "/root/testsss/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} @@ -46,9 +42,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!11 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!13 = !DIFile(filename: "src/ae_assert_tests/CAST_fptosi.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "05f2a344e08b283f616ac46982cbf04c") !14 = !DISubroutineType(types: !2) !15 = !{} !16 = !DILocalVariable(name: "f", scope: !12, file: !13, line: 4, type: !17) diff --git a/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc b/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc index 25e293aaa..56cda9d03 100644 --- a/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc +++ b/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [3 x i8] c"UI\00", align 1, !dbg !0 @@ -12,9 +12,9 @@ entry: %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 + #dbg_declare(ptr %f, !25, !DIExpression(), !27) store float 0x40091EB860000000, ptr %f, align 4, !dbg !27 - call void @llvm.dbg.declare(metadata ptr %ui, metadata !28, metadata !DIExpression()), !dbg !29 + #dbg_declare(ptr %ui, !28, !DIExpression(), !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 @@ -26,16 +26,12 @@ entry: 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) #1 -declare void @svf_print(i32 noundef, ptr noundef) #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} @@ -43,13 +39,13 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CAST_fptoui.c", directory: "/root/testsss/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") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CAST_fptoui.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "4c5eb2118728d711f6befe00e91db836") !9 = !{!10} !10 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) !11 = !{!0} @@ -60,7 +56,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!19 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} diff --git a/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc b/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc index 09a11c3e1..a75190faa 100644 --- a/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc +++ b/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !12 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %d, !18, !DIExpression(), !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 + #dbg_declare(ptr %f, !21, !DIExpression(), !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 @@ -22,21 +22,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CAST_fptrunc.c", directory: "/root/testsss/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} @@ -46,9 +42,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!11 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!13 = !DIFile(filename: "src/ae_assert_tests/CAST_fptrunc.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "2e88ac487de5d0c1c4be8578bacc0fcb") !14 = !DISubroutineType(types: !15) !15 = !{!16} !16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) diff --git a/test_cases_bc/ae_assert_tests/CAST_sext.c.bc b/test_cases_bc/ae_assert_tests/CAST_sext.c.bc index a77105ca5..926db9673 100644 --- a/test_cases_bc/ae_assert_tests/CAST_sext.c.bc +++ b/test_cases_bc/ae_assert_tests/CAST_sext.c.bc @@ -1,16 +1,16 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CAST_sext.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %size, !16, !DIExpression(), !18) store i8 -1, ptr %size, align 1, !dbg !18 - call void @llvm.dbg.declare(metadata ptr %c, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %c, !19, !DIExpression(), !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 @@ -20,21 +20,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CAST_sext.c", directory: "/root/testsss/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} @@ -42,9 +38,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/CAST_sext.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "69d6f5c6750e914bc2270f5c46351d37") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) diff --git a/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc b/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc index 864ac431a..89e2da692 100644 --- a/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc +++ b/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !12 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %si, !18, !DIExpression(), !19) store i32 -42, ptr %si, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %f, metadata !20, metadata !DIExpression()), !dbg !21 + #dbg_declare(ptr %f, !20, !DIExpression(), !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 @@ -22,21 +22,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CAST_sitofp.c", directory: "/root/testsss/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} @@ -46,9 +42,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!11 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!13 = !DIFile(filename: "src/ae_assert_tests/CAST_sitofp.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "f299735690641c664ae43ccba7dac4dc") !14 = !DISubroutineType(types: !15) !15 = !{!16} !16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) diff --git a/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc b/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc index 6c568b141..1cc347482 100644 --- a/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc +++ b/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !16 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %largeValue, !22, !DIExpression(), !26) store i64 256, ptr %largeValue, align 8, !dbg !26 - call void @llvm.dbg.declare(metadata ptr %truncatedValue, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %truncatedValue, !27, !DIExpression(), !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 @@ -23,26 +23,22 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CAST_trunc.c", directory: "/root/testsss/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") +!4 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "649b383a60bfa3eb90e85840b2b0be20") !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") +!6 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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} @@ -51,9 +47,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!15 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!17 = !DIFile(filename: "src/ae_assert_tests/CAST_trunc.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "cf95474b31e6546b0cf82e7999d64a74") !18 = !DISubroutineType(types: !19) !19 = !{!20} !20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) diff --git a/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc b/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc index 0ad3e7ab0..a71ab877a 100644 --- a/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc +++ b/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !12 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %ui, !18, !DIExpression(), !20) store i32 42, ptr %ui, align 4, !dbg !20 - call void @llvm.dbg.declare(metadata ptr %f, metadata !21, metadata !DIExpression()), !dbg !22 + #dbg_declare(ptr %f, !21, !DIExpression(), !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 @@ -22,21 +22,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CAST_uitofp.c", directory: "/root/testsss/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} @@ -46,9 +42,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!11 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!13 = !DIFile(filename: "src/ae_assert_tests/CAST_uitofp.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ee427f11a1d5c3cc9eabda368128b6f5") !14 = !DISubroutineType(types: !15) !15 = !{!16} !16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) diff --git a/test_cases_bc/ae_assert_tests/CAST_zext.c.bc b/test_cases_bc/ae_assert_tests/CAST_zext.c.bc index dbdc5cccb..80f4ae642 100644 --- a/test_cases_bc/ae_assert_tests/CAST_zext.c.bc +++ b/test_cases_bc/ae_assert_tests/CAST_zext.c.bc @@ -1,16 +1,16 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CAST_zext.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %size, !16, !DIExpression(), !18) store i8 -1, ptr %size, align 1, !dbg !18 - call void @llvm.dbg.declare(metadata ptr %c, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %c, !19, !DIExpression(), !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 @@ -21,21 +21,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CAST_zext.c", directory: "/root/testsss/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} @@ -43,9 +39,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/CAST_zext.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "dc4ad4d019087cd91900b640e0f3fe7d") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 7b477af4c..e22b5a40a 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2019-19847-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @spiro_to_bpath0(ptr noundef %dm) #0 !dbg !10 { @@ -9,8 +9,8 @@ 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 + #dbg_declare(ptr %dm.addr, !17, !DIExpression(), !18) + #dbg_declare(ptr %index, !19, !DIExpression(), !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 @@ -20,14 +20,11 @@ entry: 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 + #dbg_declare(ptr %d, !29, !DIExpression(), !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 @@ -46,15 +43,14 @@ entry: 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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/CVE-2019-19847-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7b91574c69bf47480e7c784203b7580e") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2019-19847-0.c", directory: "/root/testsss/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} @@ -62,9 +58,9 @@ attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memo !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/CVE-2019-19847-0.c", directory: "/root/testsss/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) @@ -96,7 +92,7 @@ attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memo !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) +!43 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 21, type: !44, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !0) !44 = !DISubroutineType(types: !45) !45 = !{!20} !46 = !DILocation(line: 22, column: 5, 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 index 397abf7e9..8bb6dd2bf 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2020-13598-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.FILINFO = type { [256 x i8] } %struct.fs_dirent = type { [13 x i8] } @@ -13,41 +13,37 @@ define dso_local void @fatfs_stat(ptr noundef %entry1, ptr noundef byval(%struct 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 + #dbg_declare(ptr %entry.addr, !36, !DIExpression(), !37) + #dbg_declare(ptr %fno, !38, !DIExpression(), !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 + %name = getelementptr inbounds nuw %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 + %fname = getelementptr inbounds nuw %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 + %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %arraydecay2) #2, !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 +declare ptr @strcpy(ptr noundef, ptr noundef) #1 ; 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 + #dbg_declare(ptr %fsdir, !52, !DIExpression(), !53) + #dbg_declare(ptr %filinfo, !54, !DIExpression(), !55) + %fname = getelementptr inbounds nuw %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 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef @.str) #2, !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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -55,13 +51,13 @@ attributes #3 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2020-13598-0.c", directory: "/root/testsss/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") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2020-13598-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fa9fd30bbc3fb31123484e9354e4fdf5") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -70,7 +66,7 @@ attributes #3 = { nounwind } !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"} +!17 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} 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 index 3be09c91c..40f8da081 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2020-29203-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.cJSON = type { ptr, ptr, ptr } %struct.Hometown = type { [8 x i8] } @@ -15,24 +15,21 @@ 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 + #dbg_declare(ptr %string.addr, !39, !DIExpression(), !40) + #dbg_declare(ptr %item, !41, !DIExpression(), !42) + %call = call noalias ptr @malloc(i64 noundef 24) #6, !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 + %valuestring = getelementptr inbounds nuw %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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noinline nounwind optnone uwtable define internal ptr @cJSON_strdup(ptr noundef %str) #0 !dbg !51 { @@ -41,15 +38,15 @@ entry: %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 + #dbg_declare(ptr %str.addr, !54, !DIExpression(), !55) + #dbg_declare(ptr %len, !56, !DIExpression(), !60) %0 = load ptr, ptr %str.addr, align 8, !dbg !61 - %call = call i64 @strlen(ptr noundef %0) #8, !dbg !62 + %call = call i64 @strlen(ptr noundef %0) #7, !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 + #dbg_declare(ptr %copy, !64, !DIExpression(), !65) %1 = load i64, ptr %len, align 8, !dbg !66 - %call1 = call noalias ptr @malloc(i64 noundef %1) #7, !dbg !67 + %call1 = call noalias ptr @malloc(i64 noundef %1) #6, !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 @@ -66,12 +63,12 @@ entry: %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 + #dbg_declare(ptr %array.addr, !77, !DIExpression(), !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 + #dbg_declare(ptr %item.addr, !79, !DIExpression(), !80) + #dbg_declare(ptr %c, !81, !DIExpression(), !82) %0 = load ptr, ptr %array.addr, align 8, !dbg !83 - %child = getelementptr inbounds %struct.cJSON, ptr %0, i32 0, i32 0, !dbg !84 + %child = getelementptr inbounds nuw %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 @@ -81,7 +78,7 @@ entry: 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 + %child1 = getelementptr inbounds nuw %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 @@ -96,15 +93,15 @@ entry: %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 + #dbg_declare(ptr %object.addr, !98, !DIExpression(), !99) store ptr %string, ptr %string.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %string.addr, metadata !100, metadata !DIExpression()), !dbg !101 + #dbg_declare(ptr %string.addr, !100, !DIExpression(), !101) store ptr %item, ptr %item.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %item.addr, metadata !102, metadata !DIExpression()), !dbg !103 + #dbg_declare(ptr %item.addr, !102, !DIExpression(), !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 + %string1 = getelementptr inbounds nuw %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 @@ -117,13 +114,13 @@ 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 + #dbg_declare(ptr %json, !117, !DIExpression(), !118) + %call = call noalias ptr @malloc(i64 noundef 24) #6, !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 + #dbg_declare(ptr %test, !123, !DIExpression(), !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 @@ -137,14 +134,14 @@ entry: %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 + #dbg_declare(ptr %json_obj.addr, !140, !DIExpression(), !141) + #dbg_declare(ptr %json_temp, !142, !DIExpression(), !143) + #dbg_declare(ptr %struct_hometown, !144, !DIExpression(), !143) + %call = call noalias ptr @malloc(i64 noundef 8) #6, !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 + br i1 %tobool, label %if.then, label %if.end, !dbg !145 if.then: ; preds = %entry %1 = load ptr, ptr %struct_hometown, align 8, !dbg !145 @@ -153,21 +150,21 @@ if.then: ; preds = %entry 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 + %child = getelementptr inbounds nuw %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 + br i1 %tobool1, label %if.then2, label %if.end4, !dbg !148 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 + %name = getelementptr inbounds nuw %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 + %valuestring = getelementptr inbounds nuw %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 + %call3 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %7) #8, !dbg !148 br label %if.end4, !dbg !148 if.end4: ; preds = %if.then2, %if.end @@ -176,27 +173,26 @@ if.end4: ; preds = %if.then2, %if.end } ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 +declare i64 @strlen(ptr 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) #4 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #6 +declare ptr @strcpy(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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nounwind allocsize(0) } +attributes #7 = { nounwind willreturn memory(read) } +attributes #8 = { nounwind } !llvm.dbg.cu = !{!12} !llvm.module.flags = !{!25, !26, !27, !28, !29, !30, !31} @@ -204,7 +200,7 @@ attributes #9 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2020-29203-0.c", directory: "/root/testsss/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} @@ -214,8 +210,8 @@ attributes #9 = { nounwind } !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") +!12 = distinct !DICompileUnit(language: DW_LANG_C11, file: !13, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !14, globals: !24, splitDebugInlining: false, nameTableKind: None) +!13 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2020-29203-0.c", directory: "/root/testsss/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) @@ -234,7 +230,7 @@ attributes #9 = { nounwind } !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"} +!32 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -259,8 +255,8 @@ attributes #9 = { nounwind } !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") +!57 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !58, line: 18, baseType: !59) +!58 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -289,7 +285,7 @@ attributes #9 = { nounwind } !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) +!87 = !DILocation(line: 49, column: 9, scope: !86) !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) 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 index ea100d1a0..9a0c34b8f 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-39602-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.session = type { [1024 x i8] } @@ -15,19 +15,16 @@ target triple = "x86_64-unknown-linux-gnu" 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 + #dbg_declare(ptr %sess, !45, !DIExpression(), !53) + %arg = getelementptr inbounds nuw %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 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef @.str) #5, !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 +declare ptr @strcpy(ptr noundef, ptr noundef) #1 ; Function Attrs: noinline nounwind optnone uwtable define internal void @do_mkd(ptr noundef %sess) #0 !dbg !59 { @@ -35,77 +32,76 @@ 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 + #dbg_declare(ptr %sess.addr, !63, !DIExpression(), !64) %0 = load ptr, ptr %sess.addr, align 8, !dbg !65 - %arg = getelementptr inbounds %struct.session, ptr %0, i32 0, i32 0, !dbg !67 + %arg = getelementptr inbounds nuw %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 + %call = call i32 @mkdir(ptr noundef %arraydecay, i32 noundef 493) #5, !dbg !68 %cmp = icmp slt i32 %call, 0, !dbg !69 - br i1 %cmp, label %if.then, label %if.end6, !dbg !70 + br i1 %cmp, label %if.then, label %if.end6, !dbg !69 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 + %call1 = call ptr @__errno_location() #6, !dbg !70 + %1 = load i32, ptr %call1, align 4, !dbg !70 + %cmp2 = icmp eq i32 %1, 17, !dbg !73 + br i1 %cmp2, label %if.then3, label %if.else, !dbg !73 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 + %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef @.str.2), !dbg !74 + br label %if.end, !dbg !76 if.else: ; preds = %if.then - %call5 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef @.str.3), !dbg !79 + %call5 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef @.str.3), !dbg !77 br label %if.end if.end: ; preds = %if.else, %if.then3 - br label %if.end16, !dbg !81 + br label %if.end16, !dbg !79 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 + #dbg_declare(ptr %buf, !80, !DIExpression(), !81) + call void @llvm.memset.p0.i64(ptr align 16 %buf, i8 0, i64 1024, i1 false), !dbg !81 + %arraydecay7 = getelementptr inbounds [1024 x i8], ptr %buf, i64 0, i64 0, !dbg !82 + %call8 = call ptr @getcwd(ptr noundef %arraydecay7, i64 noundef 1024) #5, !dbg !84 + %cmp9 = icmp ne ptr %call8, null, !dbg !85 + br i1 %cmp9, label %if.then10, label %if.end16, !dbg !85 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 + %arraydecay11 = getelementptr inbounds [1024 x i8], ptr %buf, i64 0, i64 0, !dbg !86 + %arraydecay12 = getelementptr inbounds [1024 x i8], ptr %buf, i64 0, i64 0, !dbg !88 + %2 = load ptr, ptr %sess.addr, align 8, !dbg !89 + %arg13 = getelementptr inbounds nuw %struct.session, ptr %2, i32 0, i32 0, !dbg !90 + %arraydecay14 = getelementptr inbounds [1024 x i8], ptr %arg13, i64 0, i64 0, !dbg !89 + %call15 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %arraydecay11, ptr noundef @.str.4, ptr noundef %arraydecay12, ptr noundef %arraydecay14) #5, !dbg !91 + br label %if.end16, !dbg !92 if.end16: ; preds = %if.then10, %if.end6, %if.end - ret void, !dbg !96 + ret void, !dbg !93 } ; Function Attrs: nounwind -declare i32 @mkdir(ptr noundef, i32 noundef) #2 +declare i32 @mkdir(ptr noundef, i32 noundef) #1 ; Function Attrs: nounwind willreturn memory(none) -declare ptr @__errno_location() #3 +declare ptr @__errno_location() #2 -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 ; Function Attrs: nounwind -declare ptr @getcwd(ptr noundef, i64 noundef) #2 +declare ptr @getcwd(ptr noundef, i64 noundef) #1 ; Function Attrs: nounwind -declare i32 @sprintf(ptr noundef, ptr noundef, ...) #2 +declare i32 @sprintf(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 = { 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #5 = { nounwind } +attributes #6 = { nounwind willreturn memory(none) } !llvm.dbg.cu = !{!27} !llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} @@ -113,7 +109,7 @@ attributes #7 = { nounwind willreturn memory(none) } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2021-39602-0.c", directory: "/root/testsss/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} @@ -138,8 +134,8 @@ attributes #7 = { nounwind willreturn memory(none) } !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") +!27 = distinct !DICompileUnit(language: DW_LANG_C11, file: !28, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !29, globals: !31, splitDebugInlining: false, nameTableKind: None) +!28 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2021-39602-0.c", directory: "/root/testsss/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} @@ -150,7 +146,7 @@ attributes #7 = { nounwind willreturn memory(none) } !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"} +!39 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -181,30 +177,27 @@ attributes #7 = { nounwind willreturn memory(none) } !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) +!70 = !DILocation(line: 27, column: 6, scope: !71) +!71 = distinct !DILexicalBlock(scope: !72, file: !2, line: 27, column: 6) +!72 = distinct !DILexicalBlock(scope: !66, file: !2, line: 26, column: 33) +!73 = !DILocation(line: 27, column: 12, scope: !71) +!74 = !DILocation(line: 28, column: 4, scope: !75) +!75 = distinct !DILexicalBlock(scope: !71, file: !2, line: 27, column: 23) +!76 = !DILocation(line: 29, column: 3, scope: !75) +!77 = !DILocation(line: 31, column: 4, scope: !78) +!78 = distinct !DILexicalBlock(scope: !71, file: !2, line: 30, column: 8) +!79 = !DILocation(line: 33, column: 3, scope: !72) +!80 = !DILocalVariable(name: "buf", scope: !59, file: !2, line: 35, type: !50) +!81 = !DILocation(line: 35, column: 7, scope: !59) +!82 = !DILocation(line: 36, column: 12, scope: !83) +!83 = distinct !DILexicalBlock(scope: !59, file: !2, line: 36, column: 5) +!84 = !DILocation(line: 36, column: 5, scope: !83) +!85 = !DILocation(line: 36, column: 34, scope: !83) +!86 = !DILocation(line: 38, column: 11, scope: !87) +!87 = distinct !DILexicalBlock(scope: !83, file: !2, line: 36, column: 43) +!88 = !DILocation(line: 38, column: 37, scope: !87) +!89 = !DILocation(line: 38, column: 41, scope: !87) +!90 = !DILocation(line: 38, column: 47, scope: !87) +!91 = !DILocation(line: 38, column: 3, scope: !87) +!92 = !DILocation(line: 40, column: 2, scope: !87) +!93 = !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 index 84b07fe00..8ef828f27 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-44975-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.r_io_t = type { i8 } %struct.RCoreObjc = type { ptr, i64, ptr, ptr } @@ -19,11 +19,11 @@ entry: %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 + #dbg_declare(ptr %io.addr, !35, !DIExpression(), !36) store ptr %buf, ptr %buf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %buf.addr, !37, !DIExpression(), !38) store i32 %len, ptr %len.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %len.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %len.addr, !39, !DIExpression(), !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 @@ -45,7 +45,7 @@ if.then: ; preds = %land.lhs.true2, %la 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 + %Oxff = getelementptr inbounds nuw %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 @@ -62,13 +62,10 @@ return: ; preds = %if.end, %if.then 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 void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; 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 { @@ -79,93 +76,93 @@ entry: %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 + #dbg_declare(ptr %io.addr, !66, !DIExpression(), !67) store ptr %buf, ptr %buf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf.addr, metadata !68, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %buf.addr, !68, !DIExpression(), !69) store i32 %len, ptr %len.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %len.addr, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %len.addr, !70, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !74 if.then: ; preds = %entry - store i1 false, ptr %retval, align 1, !dbg !76 - br label %return, !dbg !76 + store i1 false, ptr %retval, align 1, !dbg !75 + br label %return, !dbg !75 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 + #dbg_declare(ptr %ret, !77, !DIExpression(), !78) + %1 = load ptr, ptr %io.addr, align 8, !dbg !79 + %2 = load ptr, ptr %buf.addr, align 8, !dbg !80 + %3 = load i32, ptr %len.addr, align 4, !dbg !81 + %call = call i32 @r_io_pread_at(ptr noundef %1, ptr noundef %2, i32 noundef %3), !dbg !82 + %cmp1 = icmp sgt i32 %call, 0, !dbg !83 + %storedv = zext i1 %cmp1 to i8, !dbg !78 + store i8 %storedv, ptr %ret, align 1, !dbg !78 + %4 = load i8, ptr %ret, align 1, !dbg !84 + %loadedv = trunc i8 %4 to i1, !dbg !84 + store i1 %loadedv, ptr %retval, align 1, !dbg !85 + br label %return, !dbg !85 return: ; preds = %if.end, %if.then - %5 = load i1, ptr %retval, align 1, !dbg !87 - ret i1 %5, !dbg !87 + %5 = load i1, ptr %retval, align 1, !dbg !86 + ret i1 %5, !dbg !86 } ; 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 { +define dso_local zeroext i1 @r_io_read_at(ptr noundef %io, ptr noundef %buf, i32 noundef %len) #0 !dbg !87 { 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 + #dbg_declare(ptr %io.addr, !88, !DIExpression(), !89) store ptr %buf, ptr %buf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf.addr, metadata !91, metadata !DIExpression()), !dbg !92 + #dbg_declare(ptr %buf.addr, !90, !DIExpression(), !91) 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 + #dbg_declare(ptr %len.addr, !92, !DIExpression(), !93) + %0 = load ptr, ptr %io.addr, align 8, !dbg !94 + %tobool = icmp ne ptr %0, null, !dbg !94 + br i1 %tobool, label %land.lhs.true, label %if.then, !dbg !96 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 + %1 = load ptr, ptr %buf.addr, align 8, !dbg !97 + %tobool1 = icmp ne ptr %1, null, !dbg !97 + br i1 %tobool1, label %land.lhs.true2, label %if.then, !dbg !98 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 + %2 = load i32, ptr %len.addr, align 4, !dbg !99 + %cmp = icmp sge i32 %2, 0, !dbg !100 + br i1 %cmp, label %if.end, label %if.then, !dbg !101 if.then: ; preds = %land.lhs.true2, %land.lhs.true, %entry - store i1 false, ptr %retval, align 1, !dbg !103 - br label %return, !dbg !103 + store i1 false, ptr %retval, align 1, !dbg !102 + br label %return, !dbg !102 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 + %3 = load i32, ptr %len.addr, align 4, !dbg !104 + %cmp3 = icmp eq i32 %3, 0, !dbg !106 + br i1 %cmp3, label %if.then4, label %if.end5, !dbg !106 if.then4: ; preds = %if.end - store i1 false, ptr %retval, align 1, !dbg !109 - br label %return, !dbg !109 + store i1 false, ptr %retval, align 1, !dbg !107 + br label %return, !dbg !107 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 + %4 = load ptr, ptr %io.addr, align 8, !dbg !109 + %5 = load ptr, ptr %buf.addr, align 8, !dbg !110 + %6 = load i32, ptr %len.addr, align 4, !dbg !111 + %call = call zeroext i1 @internal_r_io_read_at(ptr noundef %4, ptr noundef %5, i32 noundef %6), !dbg !112 + store i1 %call, ptr %retval, align 1, !dbg !113 + br label %return, !dbg !113 return: ; preds = %if.end5, %if.then4, %if.then - %7 = load i1, ptr %retval, align 1, !dbg !116 - ret i1 %7, !dbg !116 + %7 = load i1, ptr %retval, align 1, !dbg !114 + ret i1 %7, !dbg !114 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local zeroext i1 @objc_build_refs(ptr noundef %objc) #0 !dbg !117 { +define dso_local zeroext i1 @objc_build_refs(ptr noundef %objc) #0 !dbg !115 { entry: %retval = alloca i1, align 1 %objc.addr = alloca ptr, align 8 @@ -174,139 +171,138 @@ entry: %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 + #dbg_declare(ptr %objc.addr, !140, !DIExpression(), !141) + #dbg_declare(ptr %ss_const, !142, !DIExpression(), !143) + %0 = load ptr, ptr %objc.addr, align 8, !dbg !144 + %_const = getelementptr inbounds nuw %struct.RCoreObjc, ptr %0, i32 0, i32 3, !dbg !145 + %1 = load ptr, ptr %_const, align 8, !dbg !145 + %vsize = getelementptr inbounds nuw %struct.r_bin_section_t, ptr %1, i32 0, i32 0, !dbg !146 + %2 = load i64, ptr %vsize, align 8, !dbg !146 + store i64 %2, ptr %ss_const, align 8, !dbg !143 + #dbg_declare(ptr %ss_selrefs, !147, !DIExpression(), !148) + %3 = load ptr, ptr %objc.addr, align 8, !dbg !149 + %_selrefs = getelementptr inbounds nuw %struct.RCoreObjc, ptr %3, i32 0, i32 2, !dbg !150 + %4 = load ptr, ptr %_selrefs, align 8, !dbg !150 + %vsize1 = getelementptr inbounds nuw %struct.r_bin_section_t, ptr %4, i32 0, i32 0, !dbg !151 + %5 = load i64, ptr %vsize1, align 8, !dbg !151 + store i64 %5, ptr %ss_selrefs, align 8, !dbg !148 + #dbg_declare(ptr %maxsize, !152, !DIExpression(), !153) + %6 = load i64, ptr %ss_const, align 8, !dbg !154 + %7 = load i64, ptr %ss_selrefs, align 8, !dbg !154 + %cmp = icmp ugt i64 %6, %7, !dbg !154 + br i1 %cmp, label %cond.true, label %cond.false, !dbg !154 cond.true: ; preds = %entry - %8 = load i64, ptr %ss_const, align 8, !dbg !156 - br label %cond.end, !dbg !156 + %8 = load i64, ptr %ss_const, align 8, !dbg !154 + br label %cond.end, !dbg !154 cond.false: ; preds = %entry - %9 = load i64, ptr %ss_selrefs, align 8, !dbg !156 - br label %cond.end, !dbg !156 + %9 = load i64, ptr %ss_selrefs, align 8, !dbg !154 + br label %cond.end, !dbg !154 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 = phi i64 [ %8, %cond.true ], [ %9, %cond.false ], !dbg !154 + store i64 %cond, ptr %maxsize, align 8, !dbg !153 + %10 = load i64, ptr %maxsize, align 8, !dbg !155 + %11 = load ptr, ptr %objc.addr, align 8, !dbg !155 + %file_size = getelementptr inbounds nuw %struct.RCoreObjc, ptr %11, i32 0, i32 1, !dbg !155 + %12 = load i64, ptr %file_size, align 8, !dbg !155 + %cmp2 = icmp ugt i64 %10, %12, !dbg !155 + br i1 %cmp2, label %cond.true3, label %cond.false5, !dbg !155 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 + %13 = load ptr, ptr %objc.addr, align 8, !dbg !155 + %file_size4 = getelementptr inbounds nuw %struct.RCoreObjc, ptr %13, i32 0, i32 1, !dbg !155 + %14 = load i64, ptr %file_size4, align 8, !dbg !155 + br label %cond.end6, !dbg !155 cond.false5: ; preds = %cond.end - %15 = load i64, ptr %maxsize, align 8, !dbg !157 - br label %cond.end6, !dbg !157 + %15 = load i64, ptr %maxsize, align 8, !dbg !155 + br label %cond.end6, !dbg !155 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 + %cond7 = phi i64 [ %14, %cond.true3 ], [ %15, %cond.false5 ], !dbg !155 + store i64 %cond7, ptr %maxsize, align 8, !dbg !156 + #dbg_declare(ptr %buf, !157, !DIExpression(), !158) + %16 = load i64, ptr %maxsize, align 8, !dbg !159 + %call = call noalias ptr @calloc(i64 noundef 1, i64 noundef %16) #4, !dbg !160 + store ptr %call, ptr %buf, align 8, !dbg !158 + %17 = load ptr, ptr %buf, align 8, !dbg !161 + %tobool = icmp ne ptr %17, null, !dbg !161 + br i1 %tobool, label %if.end, label %if.then, !dbg !163 if.then: ; preds = %cond.end6 - store i1 false, ptr %retval, align 1, !dbg !166 - br label %return, !dbg !166 + store i1 false, ptr %retval, align 1, !dbg !164 + br label %return, !dbg !164 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 + %18 = load ptr, ptr %objc.addr, align 8, !dbg !166 + %core = getelementptr inbounds nuw %struct.RCoreObjc, ptr %18, i32 0, i32 0, !dbg !168 + %19 = load ptr, ptr %core, align 8, !dbg !168 + %io = getelementptr inbounds nuw %struct.r_core_t, ptr %19, i32 0, i32 0, !dbg !169 + %20 = load ptr, ptr %io, align 8, !dbg !169 + %21 = load ptr, ptr %buf, align 8, !dbg !170 + %22 = load i64, ptr %ss_const, align 8, !dbg !171 + %conv = trunc i64 %22 to i32, !dbg !171 + %call8 = call zeroext i1 @r_io_read_at(ptr noundef %20, ptr noundef %21, i32 noundef %conv), !dbg !172 + br i1 %call8, label %if.end11, label %if.then9, !dbg !173 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 + %23 = load i64, ptr %ss_const, align 8, !dbg !174 + %call10 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i64 noundef %23), !dbg !176 + store i1 false, ptr %retval, align 1, !dbg !177 + br label %return, !dbg !177 if.end11: ; preds = %if.end - store i1 true, ptr %retval, align 1, !dbg !180 - br label %return, !dbg !180 + store i1 true, ptr %retval, align 1, !dbg !178 + br label %return, !dbg !178 return: ; preds = %if.end11, %if.then9, %if.then - %24 = load i1, ptr %retval, align 1, !dbg !181 - ret i1 %24, !dbg !181 + %24 = load i1, ptr %retval, align 1, !dbg !179 + ret i1 %24, !dbg !179 } ; Function Attrs: nounwind allocsize(0,1) -declare noalias ptr @calloc(i64 noundef, i64 noundef) #4 +declare noalias ptr @calloc(i64 noundef, i64 noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !182 { +define dso_local i32 @main() #0 !dbg !180 { 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 + #dbg_declare(ptr %io, !183, !DIExpression(), !184) + %Oxff = getelementptr inbounds nuw %struct.r_io_t, ptr %io, i32 0, i32 0, !dbg !185 + store i8 97, ptr %Oxff, align 1, !dbg !186 + #dbg_declare(ptr %core, !187, !DIExpression(), !188) + %io1 = getelementptr inbounds nuw %struct.r_core_t, ptr %core, i32 0, i32 0, !dbg !189 + store ptr %io, ptr %io1, align 8, !dbg !190 + #dbg_declare(ptr %selrefs, !191, !DIExpression(), !192) + #dbg_declare(ptr %rconst, !193, !DIExpression(), !194) + %vsize = getelementptr inbounds nuw %struct.r_bin_section_t, ptr %selrefs, i32 0, i32 0, !dbg !195 + store i64 3, ptr %vsize, align 8, !dbg !196 + %vsize2 = getelementptr inbounds nuw %struct.r_bin_section_t, ptr %rconst, i32 0, i32 0, !dbg !197 + store i64 10, ptr %vsize2, align 8, !dbg !198 + #dbg_declare(ptr %objc, !199, !DIExpression(), !200) + %core3 = getelementptr inbounds nuw %struct.RCoreObjc, ptr %objc, i32 0, i32 0, !dbg !201 + store ptr %core, ptr %core3, align 8, !dbg !202 + %file_size = getelementptr inbounds nuw %struct.RCoreObjc, ptr %objc, i32 0, i32 1, !dbg !203 + store i64 5, ptr %file_size, align 8, !dbg !204 + %_selrefs = getelementptr inbounds nuw %struct.RCoreObjc, ptr %objc, i32 0, i32 2, !dbg !205 + store ptr %selrefs, ptr %_selrefs, align 8, !dbg !206 + %_const = getelementptr inbounds nuw %struct.RCoreObjc, ptr %objc, i32 0, i32 3, !dbg !207 + store ptr %rconst, ptr %_const, align 8, !dbg !208 + %call = call zeroext i1 @objc_build_refs(ptr noundef %objc), !dbg !209 + ret i32 0, !dbg !210 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind allocsize(0,1) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind allocsize(0,1) } !llvm.dbg.cu = !{!12} !llvm.module.flags = !{!15, !16, !17, !18, !19, !20, !21} @@ -314,7 +310,7 @@ attributes #5 = { nounwind allocsize(0,1) } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2021-44975-0.c", directory: "/root/testsss/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} @@ -324,8 +320,8 @@ attributes #5 = { nounwind allocsize(0,1) } !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") +!12 = distinct !DICompileUnit(language: DW_LANG_C11, file: !13, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !14, splitDebugInlining: false, nameTableKind: None) +!13 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2021-44975-0.c", directory: "/root/testsss/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} @@ -334,7 +330,7 @@ attributes #5 = { nounwind allocsize(0,1) } !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"} +!22 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -360,7 +356,7 @@ attributes #5 = { nounwind allocsize(0,1) } !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) +!48 = !DILocation(line: 38, column: 5, scope: !42) !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) @@ -387,141 +383,139 @@ attributes #5 = { nounwind allocsize(0,1) } !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) +!75 = !DILocation(line: 51, column: 3, scope: !76) +!76 = distinct !DILexicalBlock(scope: !73, file: !2, line: 50, column: 15) +!77 = !DILocalVariable(name: "ret", scope: !62, file: !2, line: 53, type: !65) +!78 = !DILocation(line: 53, column: 7, scope: !62) +!79 = !DILocation(line: 53, column: 28, scope: !62) +!80 = !DILocation(line: 53, column: 32, scope: !62) +!81 = !DILocation(line: 53, column: 37, scope: !62) +!82 = !DILocation(line: 53, column: 13, scope: !62) +!83 = !DILocation(line: 53, column: 42, scope: !62) +!84 = !DILocation(line: 54, column: 9, scope: !62) +!85 = !DILocation(line: 54, column: 2, scope: !62) +!86 = !DILocation(line: 55, column: 1, scope: !62) +!87 = 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) +!88 = !DILocalVariable(name: "io", arg: 1, scope: !87, file: !2, line: 58, type: !27) +!89 = !DILocation(line: 58, column: 24, scope: !87) +!90 = !DILocalVariable(name: "buf", arg: 2, scope: !87, file: !2, line: 58, type: !33) +!91 = !DILocation(line: 58, column: 33, scope: !87) +!92 = !DILocalVariable(name: "len", arg: 3, scope: !87, file: !2, line: 58, type: !26) +!93 = !DILocation(line: 58, column: 42, scope: !87) +!94 = !DILocation(line: 59, column: 7, scope: !95) +!95 = distinct !DILexicalBlock(scope: !87, file: !2, line: 59, column: 5) +!96 = !DILocation(line: 59, column: 10, scope: !95) +!97 = !DILocation(line: 59, column: 13, scope: !95) +!98 = !DILocation(line: 59, column: 17, scope: !95) +!99 = !DILocation(line: 59, column: 20, scope: !95) +!100 = !DILocation(line: 59, column: 24, scope: !95) +!101 = !DILocation(line: 59, column: 5, scope: !95) +!102 = !DILocation(line: 60, column: 3, scope: !103) +!103 = distinct !DILexicalBlock(scope: !95, file: !2, line: 59, column: 31) +!104 = !DILocation(line: 62, column: 6, scope: !105) +!105 = distinct !DILexicalBlock(scope: !87, file: !2, line: 62, column: 6) +!106 = !DILocation(line: 62, column: 10, scope: !105) +!107 = !DILocation(line: 63, column: 3, scope: !108) +!108 = distinct !DILexicalBlock(scope: !105, file: !2, line: 62, column: 16) +!109 = !DILocation(line: 65, column: 32, scope: !87) +!110 = !DILocation(line: 65, column: 36, scope: !87) +!111 = !DILocation(line: 65, column: 41, scope: !87) +!112 = !DILocation(line: 65, column: 9, scope: !87) +!113 = !DILocation(line: 65, column: 2, scope: !87) +!114 = !DILocation(line: 66, column: 1, scope: !87) +!115 = distinct !DISubprogram(name: "objc_build_refs", scope: !2, file: !2, line: 68, type: !116, scopeLine: 68, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !34) +!116 = !DISubroutineType(types: !117) +!117 = !{!65, !118} +!118 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !119, size: 64) +!119 = !DIDerivedType(tag: DW_TAG_typedef, name: "RCoreObjc", file: !2, line: 35, baseType: !120) +!120 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !2, line: 30, size: 256, elements: !121) +!121 = !{!122, !128, !132, !139} +!122 = !DIDerivedType(tag: DW_TAG_member, name: "core", scope: !120, file: !2, line: 31, baseType: !123, size: 64) +!123 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !124, size: 64) +!124 = !DIDerivedType(tag: DW_TAG_typedef, name: "RCore", file: !2, line: 28, baseType: !125) +!125 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "r_core_t", file: !2, line: 25, size: 64, elements: !126) +!126 = !{!127} +!127 = !DIDerivedType(tag: DW_TAG_member, name: "io", scope: !125, file: !2, line: 26, baseType: !27, size: 64) +!128 = !DIDerivedType(tag: DW_TAG_member, name: "file_size", scope: !120, file: !2, line: 32, baseType: !129, size: 64, offset: 64) +!129 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !130, line: 18, baseType: !131) +!130 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") +!131 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!132 = !DIDerivedType(tag: DW_TAG_member, name: "_selrefs", scope: !120, file: !2, line: 33, baseType: !133, size: 64, offset: 128) +!133 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !134, size: 64) +!134 = !DIDerivedType(tag: DW_TAG_typedef, name: "RBinSection", file: !2, line: 23, baseType: !135) +!135 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "r_bin_section_t", file: !2, line: 21, size: 64, elements: !136) +!136 = !{!137} +!137 = !DIDerivedType(tag: DW_TAG_member, name: "vsize", scope: !135, file: !2, line: 22, baseType: !138, size: 64) +!138 = !DIBasicType(name: "unsigned long long", size: 64, encoding: DW_ATE_unsigned) +!139 = !DIDerivedType(tag: DW_TAG_member, name: "_const", scope: !120, file: !2, line: 34, baseType: !133, size: 64, offset: 192) +!140 = !DILocalVariable(name: "objc", arg: 1, scope: !115, file: !2, line: 68, type: !118) +!141 = !DILocation(line: 68, column: 33, scope: !115) +!142 = !DILocalVariable(name: "ss_const", scope: !115, file: !2, line: 69, type: !129) +!143 = !DILocation(line: 69, column: 9, scope: !115) +!144 = !DILocation(line: 69, column: 20, scope: !115) +!145 = !DILocation(line: 69, column: 26, scope: !115) +!146 = !DILocation(line: 69, column: 34, scope: !115) +!147 = !DILocalVariable(name: "ss_selrefs", scope: !115, file: !2, line: 70, type: !129) +!148 = !DILocation(line: 70, column: 9, scope: !115) +!149 = !DILocation(line: 70, column: 22, scope: !115) +!150 = !DILocation(line: 70, column: 28, scope: !115) +!151 = !DILocation(line: 70, column: 38, scope: !115) +!152 = !DILocalVariable(name: "maxsize", scope: !115, file: !2, line: 73, type: !129) +!153 = !DILocation(line: 73, column: 9, scope: !115) +!154 = !DILocation(line: 73, column: 19, scope: !115) +!155 = !DILocation(line: 74, column: 12, scope: !115) +!156 = !DILocation(line: 74, column: 10, scope: !115) +!157 = !DILocalVariable(name: "buf", scope: !115, file: !2, line: 76, type: !33) +!158 = !DILocation(line: 76, column: 7, scope: !115) +!159 = !DILocation(line: 76, column: 24, scope: !115) +!160 = !DILocation(line: 76, column: 13, scope: !115) +!161 = !DILocation(line: 77, column: 7, scope: !162) +!162 = distinct !DILexicalBlock(scope: !115, file: !2, line: 77, column: 6) +!163 = !DILocation(line: 77, column: 6, scope: !162) +!164 = !DILocation(line: 78, column: 3, scope: !165) +!165 = distinct !DILexicalBlock(scope: !162, file: !2, line: 77, column: 12) +!166 = !DILocation(line: 80, column: 21, scope: !167) +!167 = distinct !DILexicalBlock(scope: !115, file: !2, line: 80, column: 6) +!168 = !DILocation(line: 80, column: 27, scope: !167) +!169 = !DILocation(line: 80, column: 33, scope: !167) +!170 = !DILocation(line: 80, column: 37, scope: !167) +!171 = !DILocation(line: 80, column: 42, scope: !167) +!172 = !DILocation(line: 80, column: 7, scope: !167) +!173 = !DILocation(line: 80, column: 6, scope: !167) +!174 = !DILocation(line: 81, column: 61, scope: !175) +!175 = distinct !DILexicalBlock(scope: !167, file: !2, line: 80, column: 53) +!176 = !DILocation(line: 81, column: 3, scope: !175) +!177 = !DILocation(line: 82, column: 3, scope: !175) +!178 = !DILocation(line: 84, column: 2, scope: !115) +!179 = !DILocation(line: 85, column: 1, scope: !115) +!180 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 87, type: !181, scopeLine: 87, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !34) +!181 = !DISubroutineType(types: !182) +!182 = !{!26} +!183 = !DILocalVariable(name: "io", scope: !180, file: !2, line: 88, type: !28) +!184 = !DILocation(line: 88, column: 6, scope: !180) +!185 = !DILocation(line: 89, column: 5, scope: !180) +!186 = !DILocation(line: 89, column: 10, scope: !180) +!187 = !DILocalVariable(name: "core", scope: !180, file: !2, line: 91, type: !124) +!188 = !DILocation(line: 91, column: 8, scope: !180) +!189 = !DILocation(line: 92, column: 7, scope: !180) +!190 = !DILocation(line: 92, column: 10, scope: !180) +!191 = !DILocalVariable(name: "selrefs", scope: !180, file: !2, line: 94, type: !134) +!192 = !DILocation(line: 94, column: 14, scope: !180) +!193 = !DILocalVariable(name: "rconst", scope: !180, file: !2, line: 95, type: !134) +!194 = !DILocation(line: 95, column: 14, scope: !180) +!195 = !DILocation(line: 96, column: 10, scope: !180) +!196 = !DILocation(line: 96, column: 16, scope: !180) +!197 = !DILocation(line: 97, column: 9, scope: !180) +!198 = !DILocation(line: 97, column: 15, scope: !180) +!199 = !DILocalVariable(name: "objc", scope: !180, file: !2, line: 99, type: !119) +!200 = !DILocation(line: 99, column: 12, scope: !180) +!201 = !DILocation(line: 100, column: 7, scope: !180) +!202 = !DILocation(line: 100, column: 12, scope: !180) +!203 = !DILocation(line: 101, column: 7, scope: !180) +!204 = !DILocation(line: 101, column: 17, scope: !180) +!205 = !DILocation(line: 102, column: 7, scope: !180) +!206 = !DILocation(line: 102, column: 16, scope: !180) +!207 = !DILocation(line: 103, column: 7, scope: !180) +!208 = !DILocation(line: 103, column: 14, scope: !180) +!209 = !DILocation(line: 105, column: 2, scope: !180) +!210 = !DILocation(line: 106, column: 1, scope: !180) 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 index a7b23742b..afe0a366c 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-45341-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,28 +16,28 @@ entry: %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 + #dbg_declare(ptr %ifstr.addr, !33, !DIExpression(), !34) + #dbg_declare(ptr %wd, !35, !DIExpression(), !37) + #dbg_declare(ptr %buf, !38, !DIExpression(), !42) + #dbg_declare(ptr %ifstr_cpy, !43, !DIExpression(), !44) %0 = load ptr, ptr %ifstr.addr, align 8, !dbg !45 - %call = call i64 @strlen(ptr noundef %0) #6, !dbg !46 + %call = call i64 @strlen(ptr noundef %0) #5, !dbg !46 %add = add i64 %call, 1, !dbg !47 - %call1 = call noalias ptr @malloc(i64 noundef %add) #7, !dbg !48 + %call1 = call noalias ptr @malloc(i64 noundef %add) #6, !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 + %call2 = call ptr @strcpy(ptr noundef %1, ptr noundef %2) #7, !dbg !51 + #dbg_declare(ptr %token, !52, !DIExpression(), !53) %3 = load ptr, ptr %ifstr_cpy, align 8, !dbg !54 - %call3 = call ptr @strtok(ptr noundef %3, ptr noundef @.str) #8, !dbg !55 + %call3 = call ptr @strtok(ptr noundef %3, ptr noundef @.str) #7, !dbg !55 store ptr %call3, ptr %token, align 8, !dbg !53 - %call4 = call ptr @strtok(ptr noundef null, ptr noundef @.str) #8, !dbg !56 + %call4 = call ptr @strtok(ptr noundef null, ptr noundef @.str) #7, !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 + %call5 = call i32 @atoi(ptr noundef %4) #5, !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 + %call6 = call ptr @strtok(ptr noundef null, ptr noundef @.str.1) #7, !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 @@ -51,47 +51,43 @@ entry: 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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 +declare i64 @strlen(ptr noundef) #2 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #4 +declare ptr @strcpy(ptr noundef, ptr noundef) #3 ; Function Attrs: nounwind -declare ptr @strtok(ptr noundef, ptr noundef) #4 +declare ptr @strtok(ptr noundef, ptr noundef) #3 ; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #3 +declare i32 @atoi(ptr 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) #5 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 ; 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 + #dbg_declare(ptr %ifstr, !75, !DIExpression(), !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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind allocsize(0) } +attributes #7 = { nounwind } !llvm.dbg.cu = !{!17} !llvm.module.flags = !{!20, !21, !22, !23, !24, !25, !26} @@ -99,7 +95,7 @@ attributes #8 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2021-45341-0.c", directory: "/root/testsss/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} @@ -114,8 +110,8 @@ attributes #8 = { nounwind } !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") +!17 = distinct !DICompileUnit(language: DW_LANG_C11, file: !18, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) +!18 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2021-45341-0.c", directory: "/root/testsss/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} @@ -124,7 +120,7 @@ attributes #8 = { nounwind } !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"} +!27 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} 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 index 6ab1328c7..73c4f4654 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-23850-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct._WString = type { ptr } @@ -14,40 +14,36 @@ entry: %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 + #dbg_declare(ptr %entity.addr, !36, !DIExpression(), !37) + #dbg_declare(ptr %out, !38, !DIExpression(), !42) + #dbg_declare(ptr %in, !43, !DIExpression(), !44) %0 = load ptr, ptr %entity.addr, align 8, !dbg !45 - %str = getelementptr inbounds %struct._WString, ptr %0, i32 0, i32 0, !dbg !46 + %str = getelementptr inbounds nuw %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 + %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %2) #2, !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 +declare ptr @strcpy(ptr noundef, ptr noundef) #1 ; 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 + #dbg_declare(ptr %wString, !55, !DIExpression(), !56) + %str = getelementptr inbounds nuw %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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!18, !19, !20, !21, !22, !23, !24} @@ -55,20 +51,20 @@ attributes #3 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-23850-0.c", directory: "/root/testsss/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") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !17, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2022-23850-0.c", directory: "/root/testsss/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") +!13 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "", checksumkind: CSK_MD5, checksum: "256fcabbefa27ca8cf5e6d37525e6e16") !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") +!15 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !16 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) !17 = !{!0} !18 = !{i32 7, !"Dwarf Version", i32 5} @@ -78,7 +74,7 @@ attributes #3 = { nounwind } !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"} +!25 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} 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 index 326fc7194..6f3649861 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-26129-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @parse_update_subtlv(ptr noundef %a, i32 noundef %alen) #0 !dbg !10 { @@ -12,12 +12,12 @@ entry: %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 + #dbg_declare(ptr %a.addr, !19, !DIExpression(), !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 + #dbg_declare(ptr %alen.addr, !21, !DIExpression(), !22) + #dbg_declare(ptr %type, !23, !DIExpression(), !24) + #dbg_declare(ptr %len, !25, !DIExpression(), !26) + #dbg_declare(ptr %i, !27, !DIExpression(), !28) store i32 0, ptr %i, align 4, !dbg !28 br label %while.cond, !dbg !29 @@ -39,70 +39,66 @@ while.body: ; preds = %while.cond %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 + br i1 %cmp1, label %if.then, label %if.end, !dbg !41 if.then: ; preds = %while.body - br label %while.end, !dbg !43 + br label %while.end, !dbg !42 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 + %7 = load ptr, ptr %a.addr, align 8, !dbg !44 + %8 = load i32, ptr %i, align 4, !dbg !45 + %add3 = add nsw i32 %8, 1, !dbg !46 + %idxprom4 = sext i32 %add3 to i64, !dbg !44 + %arrayidx5 = getelementptr inbounds i8, ptr %7, i64 %idxprom4, !dbg !44 + %9 = load i8, ptr %arrayidx5, align 1, !dbg !44 + %conv6 = zext i8 %9 to i32, !dbg !44 + store i32 %conv6, ptr %len, align 4, !dbg !47 + %10 = load i32, ptr %i, align 4, !dbg !48 + %11 = load i32, ptr %len, align 4, !dbg !50 + %add7 = add nsw i32 %10, %11, !dbg !51 + %add8 = add nsw i32 %add7, 2, !dbg !52 + %12 = load i32, ptr %alen.addr, align 4, !dbg !53 + %cmp9 = icmp sgt i32 %add8, %12, !dbg !54 + br i1 %cmp9, label %if.then11, label %if.end12, !dbg !54 if.then11: ; preds = %if.end - br label %while.end, !dbg !57 + br label %while.end, !dbg !55 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 + %13 = load i32, ptr %len, align 4, !dbg !57 + %add13 = add nsw i32 %13, 2, !dbg !58 + %14 = load i32, ptr %i, align 4, !dbg !59 + %add14 = add nsw i32 %14, %add13, !dbg !59 + store i32 %add14, ptr %i, align 4, !dbg !59 + br label %while.cond, !dbg !29, !llvm.loop !60 while.end: ; preds = %if.then11, %if.then, %while.cond - ret void, !dbg !65 + ret void, !dbg !63 } -; 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 { +define dso_local i32 @main() #0 !dbg !64 { 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 + #dbg_declare(ptr %a, !67, !DIExpression(), !72) + call void @llvm.memset.p0.i64(ptr align 1 %a, i8 0, i64 5, i1 false), !dbg !72 + %arraydecay = getelementptr inbounds [5 x i8], ptr %a, i64 0, i64 0, !dbg !73 + call void @parse_update_subtlv(ptr noundef %arraydecay, i32 noundef 5), !dbg !74 + ret i32 0, !dbg !75 } ; 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 @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { 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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2022-26129-0.c", directory: "/root/testsss/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} @@ -110,9 +106,9 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-26129-0.c", directory: "/root/testsss/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) @@ -143,39 +139,37 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } !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) +!42 = !DILocation(line: 16, column: 13, scope: !43) +!43 = distinct !DILexicalBlock(scope: !38, file: !11, line: 15, column: 26) +!44 = !DILocation(line: 20, column: 15, scope: !34) +!45 = !DILocation(line: 20, column: 17, scope: !34) +!46 = !DILocation(line: 20, column: 19, scope: !34) +!47 = !DILocation(line: 20, column: 13, scope: !34) +!48 = !DILocation(line: 22, column: 6, scope: !49) +!49 = distinct !DILexicalBlock(scope: !34, file: !11, line: 22, column: 6) +!50 = !DILocation(line: 22, column: 10, scope: !49) +!51 = !DILocation(line: 22, column: 8, scope: !49) +!52 = !DILocation(line: 22, column: 14, scope: !49) +!53 = !DILocation(line: 22, column: 20, scope: !49) +!54 = !DILocation(line: 22, column: 18, scope: !49) +!55 = !DILocation(line: 23, column: 13, scope: !56) +!56 = distinct !DILexicalBlock(scope: !49, file: !11, line: 22, column: 26) +!57 = !DILocation(line: 26, column: 8, scope: !34) +!58 = !DILocation(line: 26, column: 12, scope: !34) +!59 = !DILocation(line: 26, column: 5, scope: !34) +!60 = distinct !{!60, !29, !61, !62} +!61 = !DILocation(line: 27, column: 2, scope: !10) +!62 = !{!"llvm.loop.mustprogress"} +!63 = !DILocation(line: 28, column: 1, scope: !10) +!64 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 30, type: !65, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) +!65 = !DISubroutineType(types: !66) +!66 = !{!17} +!67 = !DILocalVariable(name: "a", scope: !64, file: !11, line: 31, type: !68) +!68 = !DICompositeType(tag: DW_TAG_array_type, baseType: !69, size: 40, elements: !70) +!69 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!70 = !{!71} +!71 = !DISubrange(count: 5) +!72 = !DILocation(line: 31, column: 7, scope: !64) +!73 = !DILocation(line: 32, column: 22, scope: !64) +!74 = !DILocation(line: 32, column: 2, scope: !64) +!75 = !DILocation(line: 33, column: 1, scope: !64) 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 index fff82fc48..ad75af03f 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-27239-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.parsed_mount_info = type { [45 x i8], i8, [2 x i8] } @@ -20,52 +20,49 @@ 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 + #dbg_declare(ptr %token.addr, !57, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !63 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !65 - br label %return, !dbg !65 + store i32 -1, ptr %retval, align 4, !dbg !64 + br label %return, !dbg !64 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 + %2 = load ptr, ptr %token.addr, align 8, !dbg !65 + %call1 = call i32 @strcmp(ptr noundef %2, ptr noundef @.str.1) #6, !dbg !67 + %cmp2 = icmp eq i32 %call1, 0, !dbg !68 + br i1 %cmp2, label %if.then5, label %lor.lhs.false, !dbg !69 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 + %3 = load ptr, ptr %token.addr, align 8, !dbg !70 + %call3 = call i32 @strcmp(ptr noundef %3, ptr noundef @.str.2) #6, !dbg !71 + %cmp4 = icmp eq i32 %call3, 0, !dbg !72 + br i1 %cmp4, label %if.then5, label %if.end6, !dbg !69 if.then5: ; preds = %lor.lhs.false, %if.end - store i32 6, ptr %retval, align 4, !dbg !75 - br label %return, !dbg !75 + store i32 6, ptr %retval, align 4, !dbg !73 + br label %return, !dbg !73 if.end6: ; preds = %lor.lhs.false - store i32 -1, ptr %retval, align 4, !dbg !76 - br label %return, !dbg !76 + store i32 -1, ptr %retval, align 4, !dbg !74 + br label %return, !dbg !74 return: ; preds = %if.end6, %if.then5, %if.then - %4 = load i32, ptr %retval, align 4, !dbg !77 - ret i32 %4, !dbg !77 + %4 = load i32, ptr %retval, align 4, !dbg !75 + ret i32 %4, !dbg !75 } -; 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 +declare i32 @printf(ptr noundef, ...) #1 ; Function Attrs: nounwind willreturn memory(read) -declare i32 @strcmp(ptr noundef, ptr noundef) #3 +declare i32 @strcmp(ptr noundef, ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @parse_options(ptr noundef %data, ptr noundef %parsed_info) #0 !dbg !78 { +define dso_local i32 @parse_options(ptr noundef %data, ptr noundef %parsed_info) #0 !dbg !76 { entry: %retval = alloca i32, align 4 %data.addr = alloca ptr, align 8 @@ -77,181 +74,181 @@ entry: %__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 + #dbg_declare(ptr %data.addr, !88, !DIExpression(), !89) 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 + #dbg_declare(ptr %parsed_info.addr, !90, !DIExpression(), !91) + #dbg_declare(ptr %value, !92, !DIExpression(), !94) + %0 = load ptr, ptr %data.addr, align 8, !dbg !95 + %call = call i64 @strlen(ptr noundef %0) #6, !dbg !96 + %add = add i64 %call, 1, !dbg !97 + %call1 = call noalias ptr @malloc(i64 noundef %add) #7, !dbg !98 + store ptr %call1, ptr %value, align 8, !dbg !94 + #dbg_declare(ptr %equals, !99, !DIExpression(), !100) + %1 = load ptr, ptr %data.addr, align 8, !dbg !101 + %call2 = call i64 @strlen(ptr noundef %1) #6, !dbg !102 + %add3 = add i64 %call2, 1, !dbg !103 + %call4 = call noalias ptr @malloc(i64 noundef %add3) #7, !dbg !104 + store ptr %call4, ptr %equals, align 8, !dbg !100 + #dbg_declare(ptr %next_keyword, !105, !DIExpression(), !106) + %2 = load ptr, ptr %data.addr, align 8, !dbg !107 + %call5 = call i64 @strlen(ptr noundef %2) #6, !dbg !108 + %add6 = add i64 %call5, 1, !dbg !109 + %call7 = call noalias ptr @malloc(i64 noundef %add6) #7, !dbg !110 + store ptr %call7, ptr %next_keyword, align 8, !dbg !106 + %3 = load ptr, ptr %data.addr, align 8, !dbg !111 + %tobool = icmp ne ptr %3, null, !dbg !111 + br i1 %tobool, label %if.end, label %if.then, !dbg !113 if.then: ; preds = %entry - store i32 1, ptr %retval, align 4, !dbg !116 - br label %return, !dbg !116 + store i32 1, ptr %retval, align 4, !dbg !114 + br label %return, !dbg !114 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 + %4 = load ptr, ptr %data.addr, align 8, !dbg !115 + %call8 = call i64 @strlen(ptr noundef %4) #6, !dbg !116 + %add9 = add i64 %call8, 1, !dbg !117 + %5 = call ptr @llvm.stacksave.p0(), !dbg !118 + store ptr %5, ptr %saved_stack, align 8, !dbg !118 + %vla = alloca i8, i64 %add9, align 16, !dbg !118 + store i64 %add9, ptr %__vla_expr0, align 8, !dbg !118 + #dbg_declare(ptr %__vla_expr0, !119, !DIExpression(), !121) + #dbg_declare(ptr %vla, !122, !DIExpression(), !126) + %6 = load ptr, ptr %data.addr, align 8, !dbg !127 + %call10 = call ptr @strcpy(ptr noundef %vla, ptr noundef %6) #8, !dbg !128 + %call11 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %vla), !dbg !129 + #dbg_declare(ptr %token, !130, !DIExpression(), !131) + %call12 = call ptr @strtok(ptr noundef %vla, ptr noundef @.str.4) #8, !dbg !132 + store ptr %call12, ptr %token, align 8, !dbg !131 + br label %while.cond, !dbg !133 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 + %7 = load ptr, ptr %token, align 8, !dbg !134 + %cmp = icmp ne ptr %7, null, !dbg !135 + br i1 %cmp, label %while.body, label %while.end, !dbg !133 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 + %8 = load ptr, ptr %next_keyword, align 8, !dbg !136 + %9 = load ptr, ptr %token, align 8, !dbg !138 + %call13 = call ptr @strcpy(ptr noundef %8, ptr noundef %9) #8, !dbg !139 + store ptr null, ptr %value, align 8, !dbg !140 + %10 = load ptr, ptr %next_keyword, align 8, !dbg !141 + %call14 = call ptr @strchr(ptr noundef %10, i32 noundef 61) #6, !dbg !143 + store ptr %call14, ptr %equals, align 8, !dbg !144 + %cmp15 = icmp ne ptr %call14, null, !dbg !145 + br i1 %cmp15, label %if.then16, label %if.end17, !dbg !145 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 + %11 = load ptr, ptr %equals, align 8, !dbg !146 + store i8 0, ptr %11, align 1, !dbg !148 + %12 = load ptr, ptr %equals, align 8, !dbg !149 + %add.ptr = getelementptr inbounds i8, ptr %12, i64 1, !dbg !150 + store ptr %add.ptr, ptr %value, align 8, !dbg !151 + br label %if.end17, !dbg !152 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 + %13 = load ptr, ptr %value, align 8, !dbg !153 + %tobool18 = icmp ne ptr %13, null, !dbg !153 + br i1 %tobool18, label %land.lhs.true, label %if.end31, !dbg !155 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 + %14 = load ptr, ptr %next_keyword, align 8, !dbg !156 + %call19 = call i32 @parse_opt_token(ptr noundef %14), !dbg !157 + %cmp20 = icmp eq i32 %call19, 6, !dbg !158 + br i1 %cmp20, label %if.then21, label %if.end31, !dbg !155 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 + %15 = load ptr, ptr %value, align 8, !dbg !159 + %call22 = call i64 @strnlen(ptr noundef %15, i64 noundef 46) #6, !dbg !162 + %cmp23 = icmp ule i64 %call22, 46, !dbg !163 + br i1 %cmp23, label %if.then24, label %if.end30, !dbg !163 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 + %16 = load ptr, ptr %parsed_info.addr, align 8, !dbg !164 + %addrlist = getelementptr inbounds nuw %struct.parsed_mount_info, ptr %16, i32 0, i32 0, !dbg !166 + %arraydecay = getelementptr inbounds [45 x i8], ptr %addrlist, i64 0, i64 0, !dbg !164 + %17 = load ptr, ptr %value, align 8, !dbg !167 + %call25 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %17) #8, !dbg !168 + %18 = load ptr, ptr %parsed_info.addr, align 8, !dbg !169 + %verboseflag = getelementptr inbounds nuw %struct.parsed_mount_info, ptr %18, i32 0, i32 1, !dbg !171 + %bf.load = load i8, ptr %verboseflag, align 1, !dbg !171 + %bf.clear = and i8 %bf.load, 1, !dbg !171 + %bf.cast = zext i8 %bf.clear to i32, !dbg !171 + %tobool26 = icmp ne i32 %bf.cast, 0, !dbg !169 + br i1 %tobool26, label %if.then27, label %if.end29, !dbg !169 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 + %19 = load ptr, ptr @stderr, align 8, !dbg !172 + %20 = load ptr, ptr %value, align 8, !dbg !173 + %call28 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %19, ptr noundef @.str.5, ptr noundef %20) #8, !dbg !174 + br label %if.end29, !dbg !174 if.end29: ; preds = %if.then27, %if.then24 - br label %if.end30, !dbg !181 + br label %if.end30, !dbg !175 if.end30: ; preds = %if.end29, %if.then21 - br label %if.end31, !dbg !182 + br label %if.end31, !dbg !176 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 + %call32 = call ptr @strtok(ptr noundef null, ptr noundef @.str.4) #8, !dbg !177 + store ptr %call32, ptr %token, align 8, !dbg !178 + br label %while.cond, !dbg !133, !llvm.loop !179 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 + store i32 0, ptr %retval, align 4, !dbg !182 + %21 = load ptr, ptr %saved_stack, align 8, !dbg !183 + call void @llvm.stackrestore.p0(ptr %21), !dbg !183 br label %return return: ; preds = %while.end, %if.then - %22 = load i32, ptr %retval, align 4, !dbg !189 - ret i32 %22, !dbg !189 + %22 = load i32, ptr %retval, align 4, !dbg !183 + ret i32 %22, !dbg !183 } ; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #4 +declare noalias ptr @malloc(i64 noundef) #3 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 +declare i64 @strlen(ptr noundef) #2 ; Function Attrs: nocallback nofree nosync nounwind willreturn -declare ptr @llvm.stacksave() #5 +declare ptr @llvm.stacksave.p0() #4 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #6 +declare ptr @strcpy(ptr noundef, ptr noundef) #5 ; Function Attrs: nounwind -declare ptr @strtok(ptr noundef, ptr noundef) #6 +declare ptr @strtok(ptr noundef, ptr noundef) #5 ; Function Attrs: nounwind willreturn memory(read) -declare ptr @strchr(ptr noundef, i32 noundef) #3 +declare ptr @strchr(ptr noundef, i32 noundef) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strnlen(ptr noundef, i64 noundef) #3 +declare i64 @strnlen(ptr noundef, i64 noundef) #2 -declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2 +; Function Attrs: nounwind +declare i32 @fprintf(ptr noundef, ptr noundef, ...) #5 ; Function Attrs: nocallback nofree nosync nounwind willreturn -declare void @llvm.stackrestore(ptr) #5 +declare void @llvm.stackrestore.p0(ptr) #4 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !190 { +define dso_local i32 @main() #0 !dbg !184 { 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 + #dbg_declare(ptr %parsed_info, !187, !DIExpression(), !188) + %call = call i32 @parse_options(ptr noundef @.str.6, ptr noundef %parsed_info), !dbg !189 + ret i32 0, !dbg !190 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nosync nounwind willreturn } +attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nounwind willreturn memory(read) } +attributes #7 = { nounwind allocsize(0) } +attributes #8 = { nounwind } !llvm.dbg.cu = !{!37} !llvm.module.flags = !{!42, !43, !44, !45, !46, !47, !48} @@ -259,7 +256,7 @@ attributes #9 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-27239-0.c", directory: "/root/testsss/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} @@ -294,8 +291,8 @@ attributes #9 = { nounwind } !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") +!37 = distinct !DICompileUnit(language: DW_LANG_C11, file: !38, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !39, globals: !41, splitDebugInlining: false, nameTableKind: None) +!38 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2022-27239-0.c", directory: "/root/testsss/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} @@ -306,7 +303,7 @@ attributes #9 = { nounwind } !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"} +!49 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -321,136 +318,130 @@ attributes #9 = { nounwind } !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) +!64 = !DILocation(line: 25, column: 3, scope: !62) +!65 = !DILocation(line: 31, column: 13, scope: !66) +!66 = distinct !DILexicalBlock(scope: !50, file: !2, line: 31, column: 6) +!67 = !DILocation(line: 31, column: 6, scope: !66) +!68 = !DILocation(line: 31, column: 26, scope: !66) +!69 = !DILocation(line: 31, column: 31, scope: !66) +!70 = !DILocation(line: 31, column: 41, scope: !66) +!71 = !DILocation(line: 31, column: 34, scope: !66) +!72 = !DILocation(line: 31, column: 56, scope: !66) +!73 = !DILocation(line: 32, column: 3, scope: !66) +!74 = !DILocation(line: 34, column: 2, scope: !50) +!75 = !DILocation(line: 35, column: 1, scope: !50) +!76 = distinct !DISubprogram(name: "parse_options", scope: !2, file: !2, line: 38, type: !77, scopeLine: 38, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !56) +!77 = !DISubroutineType(types: !78) +!78 = !{!53, !54, !79} +!79 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !80, size: 64) +!80 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "parsed_mount_info", file: !2, line: 17, size: 384, elements: !81) +!81 = !{!82, !86} +!82 = !DIDerivedType(tag: DW_TAG_member, name: "addrlist", scope: !80, file: !2, line: 18, baseType: !83, size: 360) +!83 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 360, elements: !84) +!84 = !{!85} +!85 = !DISubrange(count: 45) +!86 = !DIDerivedType(tag: DW_TAG_member, name: "verboseflag", scope: !80, file: !2, line: 19, baseType: !87, size: 1, offset: 360, flags: DIFlagBitField, extraData: i64 360) +!87 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!88 = !DILocalVariable(name: "data", arg: 1, scope: !76, file: !2, line: 38, type: !54) +!89 = !DILocation(line: 38, column: 31, scope: !76) +!90 = !DILocalVariable(name: "parsed_info", arg: 2, scope: !76, file: !2, line: 38, type: !79) +!91 = !DILocation(line: 38, column: 63, scope: !76) +!92 = !DILocalVariable(name: "value", scope: !76, file: !2, line: 39, type: !93) +!93 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!94 = !DILocation(line: 39, column: 8, scope: !76) +!95 = !DILocation(line: 39, column: 30, scope: !76) +!96 = !DILocation(line: 39, column: 23, scope: !76) +!97 = !DILocation(line: 39, column: 36, scope: !76) +!98 = !DILocation(line: 39, column: 16, scope: !76) +!99 = !DILocalVariable(name: "equals", scope: !76, file: !2, line: 40, type: !93) +!100 = !DILocation(line: 40, column: 8, scope: !76) +!101 = !DILocation(line: 40, column: 31, scope: !76) +!102 = !DILocation(line: 40, column: 24, scope: !76) +!103 = !DILocation(line: 40, column: 37, scope: !76) +!104 = !DILocation(line: 40, column: 17, scope: !76) +!105 = !DILocalVariable(name: "next_keyword", scope: !76, file: !2, line: 41, type: !93) +!106 = !DILocation(line: 41, column: 8, scope: !76) +!107 = !DILocation(line: 41, column: 37, scope: !76) +!108 = !DILocation(line: 41, column: 30, scope: !76) +!109 = !DILocation(line: 41, column: 43, scope: !76) +!110 = !DILocation(line: 41, column: 23, scope: !76) +!111 = !DILocation(line: 43, column: 7, scope: !112) +!112 = distinct !DILexicalBlock(scope: !76, file: !2, line: 43, column: 6) +!113 = !DILocation(line: 43, column: 6, scope: !112) +!114 = !DILocation(line: 44, column: 3, scope: !112) +!115 = !DILocation(line: 46, column: 24, scope: !76) +!116 = !DILocation(line: 46, column: 17, scope: !76) +!117 = !DILocation(line: 46, column: 30, scope: !76) +!118 = !DILocation(line: 46, column: 5, scope: !76) +!119 = !DILocalVariable(name: "__vla_expr0", scope: !76, type: !120, flags: DIFlagArtificial) +!120 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!121 = !DILocation(line: 0, scope: !76) +!122 = !DILocalVariable(name: "buffer", scope: !76, file: !2, line: 46, type: !123) +!123 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, elements: !124) +!124 = !{!125} +!125 = !DISubrange(count: !119) +!126 = !DILocation(line: 46, column: 10, scope: !76) +!127 = !DILocation(line: 47, column: 20, scope: !76) +!128 = !DILocation(line: 47, column: 5, scope: !76) +!129 = !DILocation(line: 48, column: 5, scope: !76) +!130 = !DILocalVariable(name: "token", scope: !76, file: !2, line: 49, type: !93) +!131 = !DILocation(line: 49, column: 11, scope: !76) +!132 = !DILocation(line: 49, column: 19, scope: !76) +!133 = !DILocation(line: 50, column: 5, scope: !76) +!134 = !DILocation(line: 50, column: 11, scope: !76) +!135 = !DILocation(line: 50, column: 17, scope: !76) +!136 = !DILocation(line: 51, column: 16, scope: !137) +!137 = distinct !DILexicalBlock(scope: !76, file: !2, line: 50, column: 26) +!138 = !DILocation(line: 51, column: 30, scope: !137) +!139 = !DILocation(line: 51, column: 9, scope: !137) +!140 = !DILocation(line: 54, column: 15, scope: !137) +!141 = !DILocation(line: 55, column: 24, scope: !142) +!142 = distinct !DILexicalBlock(scope: !137, file: !2, line: 55, column: 7) +!143 = !DILocation(line: 55, column: 17, scope: !142) +!144 = !DILocation(line: 55, column: 15, scope: !142) +!145 = !DILocation(line: 55, column: 44, scope: !142) +!146 = !DILocation(line: 56, column: 5, scope: !147) +!147 = distinct !DILexicalBlock(scope: !142, file: !2, line: 55, column: 53) +!148 = !DILocation(line: 56, column: 12, scope: !147) +!149 = !DILocation(line: 57, column: 12, scope: !147) +!150 = !DILocation(line: 57, column: 19, scope: !147) +!151 = !DILocation(line: 57, column: 10, scope: !147) +!152 = !DILocation(line: 58, column: 3, scope: !147) +!153 = !DILocation(line: 60, column: 12, scope: !154) +!154 = distinct !DILexicalBlock(scope: !137, file: !2, line: 60, column: 12) +!155 = !DILocation(line: 60, column: 18, scope: !154) +!156 = !DILocation(line: 60, column: 37, scope: !154) +!157 = !DILocation(line: 60, column: 21, scope: !154) +!158 = !DILocation(line: 60, column: 51, scope: !154) +!159 = !DILocation(line: 61, column: 16, scope: !160) +!160 = distinct !DILexicalBlock(scope: !161, file: !2, line: 61, column: 8) +!161 = distinct !DILexicalBlock(scope: !154, file: !2, line: 60, column: 62) +!162 = !DILocation(line: 61, column: 8, scope: !160) +!163 = !DILocation(line: 61, column: 40, scope: !160) +!164 = !DILocation(line: 64, column: 12, scope: !165) +!165 = distinct !DILexicalBlock(scope: !160, file: !2, line: 61, column: 60) +!166 = !DILocation(line: 64, column: 25, scope: !165) +!167 = !DILocation(line: 64, column: 35, scope: !165) +!168 = !DILocation(line: 64, column: 5, scope: !165) +!169 = !DILocation(line: 65, column: 9, scope: !170) +!170 = distinct !DILexicalBlock(scope: !165, file: !2, line: 65, column: 9) +!171 = !DILocation(line: 65, column: 22, scope: !170) +!172 = !DILocation(line: 66, column: 14, scope: !170) +!173 = !DILocation(line: 66, column: 60, scope: !170) +!174 = !DILocation(line: 66, column: 6, scope: !170) +!175 = !DILocation(line: 67, column: 4, scope: !165) +!176 = !DILocation(line: 68, column: 3, scope: !161) +!177 = !DILocation(line: 70, column: 17, scope: !137) +!178 = !DILocation(line: 70, column: 15, scope: !137) +!179 = distinct !{!179, !133, !180, !181} +!180 = !DILocation(line: 71, column: 5, scope: !76) +!181 = !{!"llvm.loop.mustprogress"} +!182 = !DILocation(line: 73, column: 2, scope: !76) +!183 = !DILocation(line: 74, column: 1, scope: !76) +!184 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 76, type: !185, scopeLine: 76, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !56) +!185 = !DISubroutineType(types: !186) +!186 = !{!53} +!187 = !DILocalVariable(name: "parsed_info", scope: !184, file: !2, line: 77, type: !80) +!188 = !DILocation(line: 77, column: 30, scope: !184) +!189 = !DILocation(line: 78, column: 5, scope: !184) +!190 = !DILocation(line: 79, column: 1, scope: !184) 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 index 601adf053..a927bad57 100644 --- 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 @@ -1,41 +1,38 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-29023-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 { +define dso_local void @get_razer_report(ptr dead_on_unwind noalias writable 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 + #dbg_declare(ptr %agg.result, !34, !DIExpression(), !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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; 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 { +define dso_local void @razer_chroma_standard_matrix_set_custom_frame(ptr dead_on_unwind noalias writable 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 + #dbg_declare(ptr %start_col.addr, !41, !DIExpression(), !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 + #dbg_declare(ptr %stop_col.addr, !43, !DIExpression(), !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 + #dbg_declare(ptr %rgb_data.addr, !45, !DIExpression(), !46) + #dbg_declare(ptr %row_length, !47, !DIExpression(), !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 @@ -45,9 +42,9 @@ entry: %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 + #dbg_declare(ptr %agg.result, !55, !DIExpression(), !56) + call void @get_razer_report(ptr dead_on_unwind writable sret(%struct.razer_report) align 1 %agg.result), !dbg !57 + %arguments = getelementptr inbounds nuw %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 @@ -56,7 +53,7 @@ entry: } ; 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 @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 i64 @razer_attr_write_set_key_row(ptr noundef %buf, i64 noundef %count) #0 !dbg !64 { @@ -71,17 +68,17 @@ entry: %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 + #dbg_declare(ptr %buf.addr, !74, !DIExpression(), !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 + #dbg_declare(ptr %count.addr, !76, !DIExpression(), !77) + #dbg_declare(ptr %report, !78, !DIExpression(), !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 + #dbg_declare(ptr %offset, !80, !DIExpression(), !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 + #dbg_declare(ptr %row_id, !82, !DIExpression(), !83) + #dbg_declare(ptr %start_col, !84, !DIExpression(), !85) + #dbg_declare(ptr %stop_col, !86, !DIExpression(), !87) + #dbg_declare(ptr %row_length, !88, !DIExpression(), !89) br label %while.cond, !dbg !90 while.cond: ; preds = %if.end24, %entry @@ -95,104 +92,103 @@ while.body: ; preds = %while.cond %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 + br i1 %cmp1, label %if.then, label %if.end, !dbg !99 if.then: ; preds = %while.body - br label %while.end, !dbg !101 + br label %while.end, !dbg !100 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 + %4 = load ptr, ptr %buf.addr, align 8, !dbg !102 + %5 = load i64, ptr %offset, align 8, !dbg !103 + %inc = add i64 %5, 1, !dbg !103 + store i64 %inc, ptr %offset, align 8, !dbg !103 + %arrayidx = getelementptr inbounds nuw i8, ptr %4, i64 %5, !dbg !102 + %6 = load i8, ptr %arrayidx, align 1, !dbg !102 + store i8 %6, ptr %row_id, align 1, !dbg !104 + %7 = load ptr, ptr %buf.addr, align 8, !dbg !105 + %8 = load i64, ptr %offset, align 8, !dbg !106 + %inc2 = add i64 %8, 1, !dbg !106 + store i64 %inc2, ptr %offset, align 8, !dbg !106 + %arrayidx3 = getelementptr inbounds nuw i8, ptr %7, i64 %8, !dbg !105 + %9 = load i8, ptr %arrayidx3, align 1, !dbg !105 + store i8 %9, ptr %start_col, align 1, !dbg !107 + %10 = load ptr, ptr %buf.addr, align 8, !dbg !108 + %11 = load i64, ptr %offset, align 8, !dbg !109 + %inc4 = add i64 %11, 1, !dbg !109 + store i64 %inc4, ptr %offset, align 8, !dbg !109 + %arrayidx5 = getelementptr inbounds nuw i8, ptr %10, i64 %11, !dbg !108 + %12 = load i8, ptr %arrayidx5, align 1, !dbg !108 + store i8 %12, ptr %stop_col, align 1, !dbg !110 + %13 = load i8, ptr %stop_col, align 1, !dbg !111 + %conv = zext i8 %13 to i32, !dbg !111 + %add6 = add nsw i32 %conv, 1, !dbg !112 + %14 = load i8, ptr %start_col, align 1, !dbg !113 + %conv7 = zext i8 %14 to i32, !dbg !113 + %sub = sub nsw i32 %add6, %conv7, !dbg !114 + %mul = mul nsw i32 %sub, 3, !dbg !115 + %conv8 = trunc i32 %mul to i8, !dbg !116 + store i8 %conv8, ptr %row_length, align 1, !dbg !117 + %15 = load i8, ptr %start_col, align 1, !dbg !118 + %conv9 = zext i8 %15 to i32, !dbg !118 + %16 = load i8, ptr %stop_col, align 1, !dbg !120 + %conv10 = zext i8 %16 to i32, !dbg !120 + %cmp11 = icmp sgt i32 %conv9, %conv10, !dbg !121 + br i1 %cmp11, label %if.then17, label %lor.lhs.false, !dbg !122 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 + %17 = load i64, ptr %offset, align 8, !dbg !123 + %18 = load i8, ptr %row_length, align 1, !dbg !124 + %conv13 = zext i8 %18 to i64, !dbg !124 + %add14 = add i64 %17, %conv13, !dbg !125 + %19 = load i64, ptr %count.addr, align 8, !dbg !126 + %cmp15 = icmp ugt i64 %add14, %19, !dbg !127 + br i1 %cmp15, label %if.then17, label %if.end18, !dbg !122 if.then17: ; preds = %lor.lhs.false, %if.end - br label %while.end, !dbg !130 + br label %while.end, !dbg !128 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 + %20 = load i64, ptr %offset, align 8, !dbg !130 + %21 = load i8, ptr %row_length, align 1, !dbg !132 + %conv19 = zext i8 %21 to i64, !dbg !132 + %add20 = add i64 %20, %conv19, !dbg !133 + %22 = load i64, ptr %count.addr, align 8, !dbg !134 + %cmp21 = icmp ugt i64 %add20, %22, !dbg !135 + br i1 %cmp21, label %if.then23, label %if.end24, !dbg !135 if.then23: ; preds = %if.end18 - br label %while.end, !dbg !139 + br label %while.end, !dbg !136 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 + %23 = load i8, ptr %start_col, align 1, !dbg !138 + %24 = load i8, ptr %stop_col, align 1, !dbg !139 + %25 = load ptr, ptr %buf.addr, align 8, !dbg !140 + %26 = load i64, ptr %offset, align 8, !dbg !141 + %arrayidx25 = getelementptr inbounds nuw i8, ptr %25, i64 %26, !dbg !140 + call void @razer_chroma_standard_matrix_set_custom_frame(ptr dead_on_unwind writable sret(%struct.razer_report) align 1 %tmp, i8 noundef zeroext %23, i8 noundef zeroext %24, ptr noundef %arrayidx25), !dbg !142 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %report, ptr align 1 %tmp, i64 80, i1 false), !dbg !142 + %27 = load i8, ptr %row_length, align 1, !dbg !143 + %conv26 = zext i8 %27 to i64, !dbg !143 + %28 = load i64, ptr %offset, align 8, !dbg !144 + %add27 = add i64 %28, %conv26, !dbg !144 + store i64 %add27, ptr %offset, align 8, !dbg !144 + br label %while.cond, !dbg !90, !llvm.loop !145 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 + %29 = load i64, ptr %count.addr, align 8, !dbg !148 + ret i64 %29, !dbg !149 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !153 { +define dso_local i32 @main() #0 !dbg !150 { entry: - %call = call i64 @razer_attr_write_set_key_row(ptr noundef @.str, i64 noundef 144), !dbg !157 - ret i32 0, !dbg !158 + %call = call i64 @razer_attr_write_set_key_row(ptr noundef @.str, i64 noundef 144), !dbg !154 + ret i32 0, !dbg !155 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!16, !17, !18, !19, !20, !21, !22} @@ -200,16 +196,16 @@ attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-29023-0.c", directory: "/root/testsss/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") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !15, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2022-29023-0.c", directory: "/root/testsss/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") +!10 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !11, line: 18, baseType: !12) +!11 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -221,7 +217,7 @@ attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!23 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -265,10 +261,10 @@ attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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") +!67 = !DIDerivedType(tag: DW_TAG_typedef, name: "ssize_t", file: !68, line: 78, baseType: !69) +!68 = !DIFile(filename: "/usr/include/stdio.h", directory: "", checksumkind: CSK_MD5, checksum: "1e435c46987a169d9f9186f63a512303") +!69 = !DIDerivedType(tag: DW_TAG_typedef, name: "__ssize_t", file: !70, line: 194, baseType: !71) +!70 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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) @@ -298,62 +294,59 @@ attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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) +!100 = !DILocation(line: 51, column: 13, scope: !101) +!101 = distinct !DILexicalBlock(scope: !95, file: !2, line: 50, column: 32) +!102 = !DILocation(line: 54, column: 18, scope: !96) +!103 = !DILocation(line: 54, column: 28, scope: !96) +!104 = !DILocation(line: 54, column: 16, scope: !96) +!105 = !DILocation(line: 55, column: 21, scope: !96) +!106 = !DILocation(line: 55, column: 31, scope: !96) +!107 = !DILocation(line: 55, column: 19, scope: !96) +!108 = !DILocation(line: 56, column: 20, scope: !96) +!109 = !DILocation(line: 56, column: 30, scope: !96) +!110 = !DILocation(line: 56, column: 18, scope: !96) +!111 = !DILocation(line: 57, column: 24, scope: !96) +!112 = !DILocation(line: 57, column: 32, scope: !96) +!113 = !DILocation(line: 57, column: 38, scope: !96) +!114 = !DILocation(line: 57, column: 36, scope: !96) +!115 = !DILocation(line: 57, column: 49, scope: !96) +!116 = !DILocation(line: 57, column: 22, scope: !96) +!117 = !DILocation(line: 57, column: 20, scope: !96) +!118 = !DILocation(line: 62, column: 12, scope: !119) +!119 = distinct !DILexicalBlock(scope: !96, file: !2, line: 62, column: 12) +!120 = !DILocation(line: 62, column: 24, scope: !119) +!121 = !DILocation(line: 62, column: 22, scope: !119) +!122 = !DILocation(line: 62, column: 33, scope: !119) +!123 = !DILocation(line: 62, column: 36, scope: !119) +!124 = !DILocation(line: 62, column: 45, scope: !119) +!125 = !DILocation(line: 62, column: 43, scope: !119) +!126 = !DILocation(line: 62, column: 58, scope: !119) +!127 = !DILocation(line: 62, column: 56, scope: !119) +!128 = !DILocation(line: 63, column: 13, scope: !129) +!129 = distinct !DILexicalBlock(scope: !119, file: !2, line: 62, column: 65) +!130 = !DILocation(line: 65, column: 12, scope: !131) +!131 = distinct !DILexicalBlock(scope: !96, file: !2, line: 65, column: 12) +!132 = !DILocation(line: 65, column: 21, scope: !131) +!133 = !DILocation(line: 65, column: 19, scope: !131) +!134 = !DILocation(line: 65, column: 34, scope: !131) +!135 = !DILocation(line: 65, column: 32, scope: !131) +!136 = !DILocation(line: 66, column: 13, scope: !137) +!137 = distinct !DILexicalBlock(scope: !131, file: !2, line: 65, column: 41) +!138 = !DILocation(line: 69, column: 64, scope: !96) +!139 = !DILocation(line: 69, column: 75, scope: !96) +!140 = !DILocation(line: 69, column: 102, scope: !96) +!141 = !DILocation(line: 69, column: 106, scope: !96) +!142 = !DILocation(line: 69, column: 18, scope: !96) +!143 = !DILocation(line: 70, column: 19, scope: !96) +!144 = !DILocation(line: 70, column: 16, scope: !96) +!145 = distinct !{!145, !90, !146, !147} +!146 = !DILocation(line: 71, column: 5, scope: !64) +!147 = !{!"llvm.loop.mustprogress"} +!148 = !DILocation(line: 72, column: 12, scope: !64) +!149 = !DILocation(line: 72, column: 5, scope: !64) +!150 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 75, type: !151, scopeLine: 75, spFlags: DISPFlagDefinition, unit: !7) +!151 = !DISubroutineType(types: !152) +!152 = !{!153} +!153 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!154 = !DILocation(line: 76, column: 5, scope: !150) +!155 = !DILocation(line: 77, column: 1, scope: !150) 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 index efe811326..ba6eec0b1 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34835-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.i2c_msg = type { ptr } @@ -18,91 +18,88 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !26, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !28, !DIExpression(), !29) + #dbg_declare(ptr %length, !30, !DIExpression(), !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 + #dbg_declare(ptr %nbytes, !37, !DIExpression(), !41) + #dbg_declare(ptr %linebytes, !42, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !46 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !48 - br label %return, !dbg !48 + store i32 -1, ptr %retval, align 4, !dbg !47 + br label %return, !dbg !47 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 + %1 = load i32, ptr %argc.addr, align 4, !dbg !49 + %cmp1 = icmp sgt i32 %1, 3, !dbg !51 + br i1 %cmp1, label %if.then2, label %if.end3, !dbg !51 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 + %2 = load ptr, ptr %argv.addr, align 8, !dbg !52 + %arrayidx = getelementptr inbounds ptr, ptr %2, i64 3, !dbg !52 + %3 = load ptr, ptr %arrayidx, align 8, !dbg !52 + %call = call i64 @strtol(ptr noundef %3, ptr noundef null, i32 noundef 16) #3, !dbg !54 + %conv = trunc i64 %call to i32, !dbg !54 + store i32 %conv, ptr %length, align 4, !dbg !55 + br label %if.end3, !dbg !56 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 + %4 = load i32, ptr %length, align 4, !dbg !57 + store i32 %4, ptr %nbytes, align 4, !dbg !58 + br label %do.body, !dbg !59 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 + #dbg_declare(ptr %linebuf, !60, !DIExpression(), !66) + %5 = load i32, ptr %nbytes, align 4, !dbg !67 + %cmp4 = icmp sgt i32 %5, 16, !dbg !68 + br i1 %cmp4, label %cond.true, label %cond.false, !dbg !69 cond.true: ; preds = %do.body - br label %cond.end, !dbg !71 + br label %cond.end, !dbg !69 cond.false: ; preds = %do.body - %6 = load i32, ptr %nbytes, align 4, !dbg !72 - br label %cond.end, !dbg !71 + %6 = load i32, ptr %nbytes, align 4, !dbg !70 + br label %cond.end, !dbg !69 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 + %cond = phi i32 [ 16, %cond.true ], [ %6, %cond.false ], !dbg !69 + store i32 %cond, ptr %linebytes, align 4, !dbg !71 + %7 = load i32, ptr %linebytes, align 4, !dbg !72 + %call6 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %7), !dbg !73 + %arraydecay = getelementptr inbounds [16 x i8], ptr %linebuf, i64 0, i64 0, !dbg !74 + %8 = load i32, ptr %linebytes, align 4, !dbg !75 + %call7 = call i32 @i2c_read_bytewise(ptr noundef %arraydecay, i32 noundef %8), !dbg !76 + %9 = load i32, ptr %linebytes, align 4, !dbg !77 + %10 = load i32, ptr %nbytes, align 4, !dbg !78 + %sub = sub nsw i32 %10, %9, !dbg !78 + store i32 %sub, ptr %nbytes, align 4, !dbg !78 + br label %do.cond, !dbg !79 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 + %11 = load i32, ptr %nbytes, align 4, !dbg !80 + %cmp8 = icmp sgt i32 %11, 0, !dbg !81 + br i1 %cmp8, label %do.body, label %do.end, !dbg !79, !llvm.loop !82 do.end: ; preds = %do.cond - store i32 0, ptr %retval, align 4, !dbg !87 - br label %return, !dbg !87 + store i32 0, ptr %retval, align 4, !dbg !85 + br label %return, !dbg !85 return: ; preds = %do.end, %if.then - %12 = load i32, ptr %retval, align 4, !dbg !88 - ret i32 %12, !dbg !88 + %12 = load i32, ptr %retval, align 4, !dbg !86 + ret i32 %12, !dbg !86 } -; 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 i64 @strtol(ptr noundef, ptr noundef, i32 noundef) #1 -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @i2c_read_bytewise(ptr noundef %buffer, i32 noundef %len) #0 !dbg !89 { +define dso_local i32 @i2c_read_bytewise(ptr noundef %buffer, i32 noundef %len) #0 !dbg !87 { entry: %buffer.addr = alloca ptr, align 8 %len.addr = alloca i32, align 4 @@ -110,67 +107,66 @@ entry: %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 + #dbg_declare(ptr %buffer.addr, !93, !DIExpression(), !94) 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 + #dbg_declare(ptr %len.addr, !95, !DIExpression(), !96) + #dbg_declare(ptr %msg, !97, !DIExpression(), !104) + #dbg_declare(ptr %ptr, !105, !DIExpression(), !107) + #dbg_declare(ptr %i, !108, !DIExpression(), !109) + store i32 0, ptr %i, align 4, !dbg !110 + br label %for.cond, !dbg !112 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 + %0 = load i32, ptr %i, align 4, !dbg !113 + %1 = load i32, ptr %len.addr, align 4, !dbg !115 + %cmp = icmp ult i32 %0, %1, !dbg !116 + br i1 %cmp, label %for.body, label %for.end, !dbg !117 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 + %arraydecay = getelementptr inbounds [2 x %struct.i2c_msg], ptr %msg, i64 0, i64 0, !dbg !118 + %add.ptr = getelementptr inbounds %struct.i2c_msg, ptr %arraydecay, i64 1, !dbg !120 + store ptr %add.ptr, ptr %ptr, align 8, !dbg !121 + %2 = load ptr, ptr %buffer.addr, align 8, !dbg !122 + %3 = load i32, ptr %i, align 4, !dbg !123 + %idxprom = sext i32 %3 to i64, !dbg !122 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom, !dbg !122 + %4 = load ptr, ptr %ptr, align 8, !dbg !124 + %buf = getelementptr inbounds nuw %struct.i2c_msg, ptr %4, i32 0, i32 0, !dbg !125 + store ptr %arrayidx, ptr %buf, align 8, !dbg !126 + %5 = load ptr, ptr %ptr, align 8, !dbg !127 + %incdec.ptr = getelementptr inbounds nuw %struct.i2c_msg, ptr %5, i32 1, !dbg !127 + store ptr %incdec.ptr, ptr %ptr, align 8, !dbg !127 + br label %for.inc, !dbg !128 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 + %6 = load i32, ptr %i, align 4, !dbg !129 + %inc = add nsw i32 %6, 1, !dbg !129 + store i32 %inc, ptr %i, align 4, !dbg !129 + br label %for.cond, !dbg !130, !llvm.loop !131 for.end: ; preds = %for.cond - ret i32 0, !dbg !135 + ret i32 0, !dbg !133 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !136 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !134 { 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 + #dbg_declare(ptr %argc.addr, !138, !DIExpression(), !139) 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 + #dbg_declare(ptr %argv.addr, !140, !DIExpression(), !141) + %0 = load i32, ptr %argc.addr, align 4, !dbg !142 + %1 = load ptr, ptr %argv.addr, align 8, !dbg !143 + %call = call i32 @do_i2c_md(i32 noundef %0, ptr noundef %1), !dbg !144 + ret i32 0, !dbg !145 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -178,13 +174,13 @@ attributes #4 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-34835-0.c", directory: "/root/testsss/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") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2022-34835-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "5027a47770fc130a84532009834ceede") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -193,7 +189,7 @@ attributes #4 = { nounwind } !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"} +!17 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -208,14 +204,14 @@ attributes #4 = { nounwind } !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") +!32 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "", checksumkind: CSK_MD5, checksum: "256fcabbefa27ca8cf5e6d37525e6e16") !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") +!34 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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") +!39 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "649b383a60bfa3eb90e85840b2b0be20") !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) @@ -223,104 +219,102 @@ attributes #4 = { nounwind } !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) +!47 = !DILocation(line: 21, column: 3, scope: !48) +!48 = distinct !DILexicalBlock(scope: !45, file: !2, line: 20, column: 16) +!49 = !DILocation(line: 24, column: 6, scope: !50) +!50 = distinct !DILexicalBlock(scope: !18, file: !2, line: 24, column: 6) +!51 = !DILocation(line: 24, column: 11, scope: !50) +!52 = !DILocation(line: 25, column: 19, scope: !53) +!53 = distinct !DILexicalBlock(scope: !50, file: !2, line: 24, column: 16) +!54 = !DILocation(line: 25, column: 12, scope: !53) +!55 = !DILocation(line: 25, column: 10, scope: !53) +!56 = !DILocation(line: 26, column: 2, scope: !53) +!57 = !DILocation(line: 28, column: 11, scope: !18) +!58 = !DILocation(line: 28, column: 9, scope: !18) +!59 = !DILocation(line: 29, column: 2, scope: !18) +!60 = !DILocalVariable(name: "linebuf", scope: !61, file: !2, line: 30, type: !62) +!61 = distinct !DILexicalBlock(scope: !18, file: !2, line: 29, column: 5) +!62 = !DICompositeType(tag: DW_TAG_array_type, baseType: !63, size: 128, elements: !64) +!63 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) +!64 = !{!65} +!65 = !DISubrange(count: 16) +!66 = !DILocation(line: 30, column: 17, scope: !61) +!67 = !DILocation(line: 31, column: 16, scope: !61) +!68 = !DILocation(line: 31, column: 23, scope: !61) +!69 = !DILocation(line: 31, column: 15, scope: !61) +!70 = !DILocation(line: 31, column: 58, scope: !61) +!71 = !DILocation(line: 31, column: 13, scope: !61) +!72 = !DILocation(line: 32, column: 18, scope: !61) +!73 = !DILocation(line: 32, column: 3, scope: !61) +!74 = !DILocation(line: 33, column: 21, scope: !61) +!75 = !DILocation(line: 33, column: 30, scope: !61) +!76 = !DILocation(line: 33, column: 3, scope: !61) +!77 = !DILocation(line: 34, column: 13, scope: !61) +!78 = !DILocation(line: 34, column: 10, scope: !61) +!79 = !DILocation(line: 35, column: 2, scope: !61) +!80 = !DILocation(line: 35, column: 11, scope: !18) +!81 = !DILocation(line: 35, column: 18, scope: !18) +!82 = distinct !{!82, !59, !83, !84} +!83 = !DILocation(line: 35, column: 21, scope: !18) +!84 = !{!"llvm.loop.mustprogress"} +!85 = !DILocation(line: 37, column: 2, scope: !18) +!86 = !DILocation(line: 38, column: 1, scope: !18) +!87 = distinct !DISubprogram(name: "i2c_read_bytewise", scope: !2, file: !2, line: 45, type: !88, scopeLine: 45, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) +!88 = !DISubroutineType(types: !89) +!89 = !{!21, !90, !31} +!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !91, size: 64) +!91 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint8_t", file: !32, line: 24, baseType: !92) +!92 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint8_t", file: !34, line: 38, baseType: !63) +!93 = !DILocalVariable(name: "buffer", arg: 1, scope: !87, file: !2, line: 45, type: !90) +!94 = !DILocation(line: 45, column: 32, scope: !87) +!95 = !DILocalVariable(name: "len", arg: 2, scope: !87, file: !2, line: 45, type: !31) +!96 = !DILocation(line: 45, column: 49, scope: !87) +!97 = !DILocalVariable(name: "msg", scope: !87, file: !2, line: 46, type: !98) +!98 = !DICompositeType(tag: DW_TAG_array_type, baseType: !99, size: 128, elements: !102) +!99 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "i2c_msg", file: !2, line: 40, size: 64, elements: !100) +!100 = !{!101} +!101 = !DIDerivedType(tag: DW_TAG_member, name: "buf", scope: !99, file: !2, line: 41, baseType: !90, size: 64) !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) +!103 = !DISubrange(count: 2) +!104 = !DILocation(line: 46, column: 17, scope: !87) +!105 = !DILocalVariable(name: "ptr", scope: !87, file: !2, line: 46, type: !106) +!106 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !99, size: 64) +!107 = !DILocation(line: 46, column: 26, scope: !87) +!108 = !DILocalVariable(name: "i", scope: !87, file: !2, line: 47, type: !21) +!109 = !DILocation(line: 47, column: 6, scope: !87) +!110 = !DILocation(line: 50, column: 9, scope: !111) +!111 = distinct !DILexicalBlock(scope: !87, file: !2, line: 50, column: 2) +!112 = !DILocation(line: 50, column: 7, scope: !111) +!113 = !DILocation(line: 50, column: 14, scope: !114) +!114 = distinct !DILexicalBlock(scope: !111, file: !2, line: 50, column: 2) +!115 = !DILocation(line: 50, column: 18, scope: !114) +!116 = !DILocation(line: 50, column: 16, scope: !114) +!117 = !DILocation(line: 50, column: 2, scope: !111) +!118 = !DILocation(line: 51, column: 9, scope: !119) +!119 = distinct !DILexicalBlock(scope: !114, file: !2, line: 50, column: 28) +!120 = !DILocation(line: 51, column: 13, scope: !119) +!121 = !DILocation(line: 51, column: 7, scope: !119) +!122 = !DILocation(line: 53, column: 15, scope: !119) +!123 = !DILocation(line: 53, column: 22, scope: !119) +!124 = !DILocation(line: 53, column: 3, scope: !119) +!125 = !DILocation(line: 53, column: 8, scope: !119) +!126 = !DILocation(line: 53, column: 12, scope: !119) +!127 = !DILocation(line: 54, column: 6, scope: !119) +!128 = !DILocation(line: 55, column: 2, scope: !119) +!129 = !DILocation(line: 50, column: 24, scope: !114) +!130 = !DILocation(line: 50, column: 2, scope: !114) +!131 = distinct !{!131, !117, !132, !84} +!132 = !DILocation(line: 55, column: 2, scope: !111) +!133 = !DILocation(line: 57, column: 2, scope: !87) +!134 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 60, type: !135, scopeLine: 60, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) +!135 = !DISubroutineType(types: !136) +!136 = !{!21, !21, !137} +!137 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !24, size: 64) +!138 = !DILocalVariable(name: "argc", arg: 1, scope: !134, file: !2, line: 60, type: !21) +!139 = !DILocation(line: 60, column: 14, scope: !134) +!140 = !DILocalVariable(name: "argv", arg: 2, scope: !134, file: !2, line: 60, type: !137) +!141 = !DILocation(line: 60, column: 26, scope: !134) +!142 = !DILocation(line: 61, column: 12, scope: !134) +!143 = !DILocation(line: 61, column: 18, scope: !134) +!144 = !DILocation(line: 61, column: 2, scope: !134) +!145 = !DILocation(line: 62, column: 1, scope: !134) 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 index dcb386224..0857bc720 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34913-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -17,17 +17,17 @@ entry: %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 + #dbg_declare(ptr %docname.addr, !60, !DIExpression(), !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 + #dbg_declare(ptr %source.addr, !62, !DIExpression(), !63) + #dbg_declare(ptr %p, !64, !DIExpression(), !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 + #dbg_declare(ptr %appname, !67, !DIExpression(), !71) br label %while.cond, !dbg !72 while.cond: ; preds = %while.body, %entry - %call = call ptr @__ctype_b_loc() #7, !dbg !75 + %call = call ptr @__ctype_b_loc() #6, !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 @@ -42,7 +42,7 @@ while.cond: ; preds = %while.body, %entry 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 + %incdec.ptr = getelementptr inbounds nuw 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 @@ -55,7 +55,7 @@ while.end: ; preds = %while.cond 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 + %call5 = call ptr @__ctype_b_loc() #6, !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 @@ -67,149 +67,146 @@ lor.lhs.false: ; preds = %while.end %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 + br i1 %tobool12, label %if.end, label %if.then, !dbg !84 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 + %arraydecay = getelementptr inbounds [64 x i8], ptr %appname, i64 0, i64 0, !dbg !86 + %12 = load ptr, ptr %docname.addr, align 8, !dbg !88 + %call13 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %12) #7, !dbg !89 + br label %if.end, !dbg !90 if.end: ; preds = %if.then, %lor.lhs.false - ret void, !dbg !92 + ret void, !dbg !91 } -; 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 +declare ptr @__ctype_b_loc() #1 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #3 +declare ptr @strcpy(ptr noundef, ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @loadfile(ptr noundef %filename) #0 !dbg !93 { +define dso_local ptr @loadfile(ptr noundef %filename) #0 !dbg !92 { 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 + #dbg_declare(ptr %filename.addr, !95, !DIExpression(), !96) + #dbg_declare(ptr %len, !97, !DIExpression(), !98) + store i32 -1, ptr %len, align 4, !dbg !98 + #dbg_declare(ptr %fp, !99, !DIExpression(), !155) + #dbg_declare(ptr %buf, !156, !DIExpression(), !157) + store ptr null, ptr %buf, align 8, !dbg !157 + %0 = load ptr, ptr %filename.addr, align 8, !dbg !158 + %cmp = icmp ne ptr %0, null, !dbg !160 + br i1 %cmp, label %if.then, label %if.end31, !dbg !160 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 + %1 = load ptr, ptr %filename.addr, align 8, !dbg !161 + %call = call noalias ptr @fopen(ptr noundef %1, ptr noundef @.str), !dbg !163 + store ptr %call, ptr %fp, align 8, !dbg !164 + %2 = load ptr, ptr %fp, align 8, !dbg !165 + %cmp1 = icmp eq ptr %2, null, !dbg !167 + br i1 %cmp1, label %if.then2, label %if.end, !dbg !167 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 + %3 = load ptr, ptr %filename.addr, align 8, !dbg !168 + %call3 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %3), !dbg !170 + call void @exit(i32 noundef 1) #8, !dbg !171 + unreachable, !dbg !171 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 + %4 = load ptr, ptr %fp, align 8, !dbg !172 + %call4 = call i32 @fseek(ptr noundef %4, i64 noundef 0, i32 noundef 2), !dbg !174 + %cmp5 = icmp eq i32 %call4, -1, !dbg !175 + br i1 %cmp5, label %if.then6, label %if.end8, !dbg !175 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 + %call7 = call i32 (ptr, ...) @printf(ptr noundef @.str.2), !dbg !176 + call void @exit(i32 noundef 1) #8, !dbg !178 + unreachable, !dbg !178 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 + %5 = load ptr, ptr %fp, align 8, !dbg !179 + %call9 = call i64 @ftell(ptr noundef %5), !dbg !180 + %conv = trunc i64 %call9 to i32, !dbg !180 + store i32 %conv, ptr %len, align 4, !dbg !181 + %6 = load i32, ptr %len, align 4, !dbg !182 + %cmp10 = icmp eq i32 %6, -1, !dbg !184 + br i1 %cmp10, label %if.then12, label %if.end14, !dbg !184 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 + %call13 = call i32 (ptr, ...) @printf(ptr noundef @.str.3), !dbg !185 + call void @exit(i32 noundef 1) #8, !dbg !187 + unreachable, !dbg !187 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 + %7 = load ptr, ptr %fp, align 8, !dbg !188 + %call15 = call i32 @fseek(ptr noundef %7, i64 noundef 0, i32 noundef 0), !dbg !190 + %cmp16 = icmp eq i32 %call15, -1, !dbg !191 + br i1 %cmp16, label %if.then18, label %if.end20, !dbg !191 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 + %call19 = call i32 (ptr, ...) @printf(ptr noundef @.str.2), !dbg !192 + call void @exit(i32 noundef 1) #8, !dbg !194 + unreachable, !dbg !194 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 + %8 = load i32, ptr %len, align 4, !dbg !195 + %add = add nsw i32 %8, 1, !dbg !196 + %conv21 = sext i32 %add to i64, !dbg !195 + %call22 = call noalias ptr @malloc(i64 noundef %conv21) #9, !dbg !197 + store ptr %call22, ptr %buf, align 8, !dbg !198 + %9 = load ptr, ptr %buf, align 8, !dbg !199 + %10 = load i32, ptr %len, align 4, !dbg !201 + %conv23 = sext i32 %10 to i64, !dbg !201 + %11 = load ptr, ptr %fp, align 8, !dbg !202 + %call24 = call i64 @fread(ptr noundef %9, i64 noundef %conv23, i64 noundef 1, ptr noundef %11), !dbg !203 + %cmp25 = icmp eq i64 %call24, -1, !dbg !204 + br i1 %cmp25, label %if.then27, label %if.end29, !dbg !204 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 + %call28 = call i32 (ptr, ...) @printf(ptr noundef @.str.4), !dbg !205 + call void @exit(i32 noundef 1) #8, !dbg !207 + unreachable, !dbg !207 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 + %12 = load ptr, ptr %buf, align 8, !dbg !208 + %13 = load i32, ptr %len, align 4, !dbg !209 + %idxprom = sext i32 %13 to i64, !dbg !208 + %arrayidx = getelementptr inbounds i8, ptr %12, i64 %idxprom, !dbg !208 + store i8 0, ptr %arrayidx, align 1, !dbg !210 + %14 = load ptr, ptr %fp, align 8, !dbg !211 + %call30 = call i32 @fclose(ptr noundef %14), !dbg !212 + br label %if.end31, !dbg !213 if.end31: ; preds = %if.end29, %entry - %15 = load ptr, ptr %buf, align 8, !dbg !221 - ret ptr %15, !dbg !222 + %15 = load ptr, ptr %buf, align 8, !dbg !214 + ret ptr %15, !dbg !215 } -declare ptr @fopen(ptr noundef, ptr noundef) #4 +declare noalias ptr @fopen(ptr noundef, ptr noundef) #3 -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #5 +declare void @exit(i32 noundef) #4 -declare i32 @fseek(ptr noundef, i64 noundef, i32 noundef) #4 +declare i32 @fseek(ptr noundef, i64 noundef, i32 noundef) #3 -declare i64 @ftell(ptr noundef) #4 +declare i64 @ftell(ptr noundef) #3 ; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #6 +declare noalias ptr @malloc(i64 noundef) #5 -declare i64 @fread(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #4 +declare i64 @fread(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #3 -declare i32 @fclose(ptr noundef) #4 +declare i32 @fclose(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !223 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !216 { entry: %retval = alloca i32, align 4 %argc.addr = alloca i32, align 4 @@ -221,116 +218,115 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !220, !DIExpression(), !221) 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 + #dbg_declare(ptr %argv.addr, !222, !DIExpression(), !223) + #dbg_declare(ptr %files, !224, !DIExpression(), !226) + #dbg_declare(ptr %fc, !227, !DIExpression(), !228) + store i32 0, ptr %fc, align 4, !dbg !228 + #dbg_declare(ptr %i, !229, !DIExpression(), !231) + store i32 1, ptr %i, align 4, !dbg !231 + br label %for.cond, !dbg !232 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 + %0 = load i32, ptr %i, align 4, !dbg !233 + %1 = load i32, ptr %argc.addr, align 4, !dbg !235 + %cmp = icmp slt i32 %0, %1, !dbg !236 + br i1 %cmp, label %for.body, label %for.end, !dbg !237 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 + %2 = load ptr, ptr %argv.addr, align 8, !dbg !238 + %3 = load i32, ptr %i, align 4, !dbg !241 + %idxprom = sext i32 %3 to i64, !dbg !238 + %arrayidx = getelementptr inbounds ptr, ptr %2, i64 %idxprom, !dbg !238 + %4 = load ptr, ptr %arrayidx, align 8, !dbg !238 + %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0, !dbg !238 + %5 = load i8, ptr %arrayidx1, align 1, !dbg !238 + %conv = sext i8 %5 to i32, !dbg !238 + %cmp2 = icmp ne i32 %conv, 45, !dbg !242 + br i1 %cmp2, label %if.then, label %if.end, !dbg !242 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 + %6 = load i32, ptr %i, align 4, !dbg !243 + %7 = load i32, ptr %fc, align 4, !dbg !245 + %idxprom4 = sext i32 %7 to i64, !dbg !246 + %arrayidx5 = getelementptr inbounds [64 x i32], ptr %files, i64 0, i64 %idxprom4, !dbg !246 + store i32 %6, ptr %arrayidx5, align 4, !dbg !247 + %8 = load i32, ptr %fc, align 4, !dbg !248 + %inc = add nsw i32 %8, 1, !dbg !248 + store i32 %inc, ptr %fc, align 4, !dbg !248 + br label %if.end, !dbg !249 if.end: ; preds = %if.then, %for.body - br label %for.inc, !dbg !258 + br label %for.inc, !dbg !250 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 + %9 = load i32, ptr %i, align 4, !dbg !251 + %inc6 = add nsw i32 %9, 1, !dbg !251 + store i32 %inc6, ptr %i, align 4, !dbg !251 + br label %for.cond, !dbg !252, !llvm.loop !253 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 + #dbg_declare(ptr %i7, !255, !DIExpression(), !257) + store i32 0, ptr %i7, align 4, !dbg !257 + br label %for.cond8, !dbg !258 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 + %10 = load i32, ptr %i7, align 4, !dbg !259 + %11 = load i32, ptr %fc, align 4, !dbg !261 + %cmp9 = icmp slt i32 %10, %11, !dbg !262 + br i1 %cmp9, label %for.body11, label %for.end22, !dbg !263 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 + #dbg_declare(ptr %buf, !264, !DIExpression(), !266) + %12 = load ptr, ptr %argv.addr, align 8, !dbg !267 + %13 = load i32, ptr %i7, align 4, !dbg !268 + %idxprom12 = sext i32 %13 to i64, !dbg !269 + %arrayidx13 = getelementptr inbounds [64 x i32], ptr %files, i64 0, i64 %idxprom12, !dbg !269 + %14 = load i32, ptr %arrayidx13, align 4, !dbg !269 + %idxprom14 = sext i32 %14 to i64, !dbg !267 + %arrayidx15 = getelementptr inbounds ptr, ptr %12, i64 %idxprom14, !dbg !267 + %15 = load ptr, ptr %arrayidx15, align 8, !dbg !267 + %call = call ptr @loadfile(ptr noundef %15), !dbg !270 + store ptr %call, ptr %buf, align 8, !dbg !266 + %16 = load ptr, ptr %argv.addr, align 8, !dbg !271 + %17 = load i32, ptr %i7, align 4, !dbg !272 + %idxprom16 = sext i32 %17 to i64, !dbg !273 + %arrayidx17 = getelementptr inbounds [64 x i32], ptr %files, i64 0, i64 %idxprom16, !dbg !273 + %18 = load i32, ptr %arrayidx17, align 4, !dbg !273 + %idxprom18 = sext i32 %18 to i64, !dbg !271 + %arrayidx19 = getelementptr inbounds ptr, ptr %16, i64 %idxprom18, !dbg !271 + %19 = load ptr, ptr %arrayidx19, align 8, !dbg !271 + %20 = load ptr, ptr %buf, align 8, !dbg !274 + call void @md2roff(ptr noundef %19, ptr noundef %20), !dbg !275 + %21 = load ptr, ptr %buf, align 8, !dbg !276 + call void @free(ptr noundef %21) #7, !dbg !277 + br label %for.inc20, !dbg !278 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 + %22 = load i32, ptr %i7, align 4, !dbg !279 + %inc21 = add nsw i32 %22, 1, !dbg !279 + store i32 %inc21, ptr %i7, align 4, !dbg !279 + br label %for.cond8, !dbg !280, !llvm.loop !281 for.end22: ; preds = %for.cond8 - %23 = load i32, ptr %retval, align 4, !dbg !291 - ret i32 %23, !dbg !291 + %23 = load i32, ptr %retval, align 4, !dbg !283 + ret i32 %23, !dbg !283 } ; 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) } +declare void @free(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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nounwind willreturn memory(none) } +attributes #7 = { nounwind } +attributes #8 = { noreturn nounwind } +attributes #9 = { nounwind allocsize(0) } !llvm.dbg.cu = !{!21} !llvm.module.flags = !{!46, !47, !48, !49, !50, !51, !52} @@ -338,7 +334,7 @@ attributes #10 = { nounwind allocsize(0) } !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") +!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-34913-0.c", directory: "/root/testsss/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} @@ -357,11 +353,11 @@ attributes #10 = { nounwind allocsize(0) } !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") +!21 = distinct !DICompileUnit(language: DW_LANG_C11, file: !22, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !23, retainedTypes: !40, globals: !45, splitDebugInlining: false, nameTableKind: None) +!22 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2022-34913-0.c", directory: "/root/testsss/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") +!25 = !DIFile(filename: "/usr/include/ctype.h", directory: "", checksumkind: CSK_MD5, checksum: "43fd45dcf96e8fb7d8f14700096497c7") !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) @@ -389,7 +385,7 @@ attributes #10 = { nounwind allocsize(0) } !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"} +!53 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -422,209 +418,201 @@ attributes #10 = { nounwind allocsize(0) } !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) +!86 = !DILocation(line: 29, column: 11, scope: !87) +!87 = distinct !DILexicalBlock(scope: !82, file: !2, line: 27, column: 39) +!88 = !DILocation(line: 29, column: 20, scope: !87) +!89 = !DILocation(line: 29, column: 4, scope: !87) +!90 = !DILocation(line: 30, column: 3, scope: !87) +!91 = !DILocation(line: 32, column: 1, scope: !54) +!92 = distinct !DISubprogram(name: "loadfile", scope: !2, file: !2, line: 34, type: !93, scopeLine: 34, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !21, retainedNodes: !59) +!93 = !DISubroutineType(types: !94) +!94 = !{!44, !57} +!95 = !DILocalVariable(name: "filename", arg: 1, scope: !92, file: !2, line: 34, type: !57) +!96 = !DILocation(line: 34, column: 28, scope: !92) +!97 = !DILocalVariable(name: "len", scope: !92, file: !2, line: 35, type: !41) +!98 = !DILocation(line: 35, column: 6, scope: !92) +!99 = !DILocalVariable(name: "fp", scope: !92, file: !2, line: 36, type: !100) +!100 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !101, size: 64) +!101 = !DIDerivedType(tag: DW_TAG_typedef, name: "FILE", file: !102, line: 7, baseType: !103) +!102 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/FILE.h", directory: "", checksumkind: CSK_MD5, checksum: "571f9fb6223c42439075fdde11a0de5d") +!103 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_FILE", file: !104, line: 49, size: 1728, elements: !105) +!104 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h", directory: "", checksumkind: CSK_MD5, checksum: "7a6d4a00a37ee6b9a40cd04bd01f5d00") +!105 = !{!106, !107, !108, !109, !110, !111, !112, !113, !114, !115, !116, !117, !118, !121, !123, !124, !125, !129, !130, !132, !136, !139, !141, !144, !147, !148, !149, !153, !154} +!106 = !DIDerivedType(tag: DW_TAG_member, name: "_flags", scope: !103, file: !104, line: 51, baseType: !41, size: 32) +!107 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_ptr", scope: !103, file: !104, line: 54, baseType: !44, size: 64, offset: 64) +!108 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_end", scope: !103, file: !104, line: 55, baseType: !44, size: 64, offset: 128) +!109 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_base", scope: !103, file: !104, line: 56, baseType: !44, size: 64, offset: 192) +!110 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_base", scope: !103, file: !104, line: 57, baseType: !44, size: 64, offset: 256) +!111 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_ptr", scope: !103, file: !104, line: 58, baseType: !44, size: 64, offset: 320) +!112 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_end", scope: !103, file: !104, line: 59, baseType: !44, size: 64, offset: 384) +!113 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_base", scope: !103, file: !104, line: 60, baseType: !44, size: 64, offset: 448) +!114 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_end", scope: !103, file: !104, line: 61, baseType: !44, size: 64, offset: 512) +!115 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_base", scope: !103, file: !104, line: 64, baseType: !44, size: 64, offset: 576) +!116 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_backup_base", scope: !103, file: !104, line: 65, baseType: !44, size: 64, offset: 640) +!117 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_end", scope: !103, file: !104, line: 66, baseType: !44, size: 64, offset: 704) +!118 = !DIDerivedType(tag: DW_TAG_member, name: "_markers", scope: !103, file: !104, line: 68, baseType: !119, size: 64, offset: 768) +!119 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !120, size: 64) +!120 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_marker", file: !104, line: 36, flags: DIFlagFwdDecl) +!121 = !DIDerivedType(tag: DW_TAG_member, name: "_chain", scope: !103, file: !104, line: 70, baseType: !122, size: 64, offset: 832) +!122 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !103, size: 64) +!123 = !DIDerivedType(tag: DW_TAG_member, name: "_fileno", scope: !103, file: !104, line: 72, baseType: !41, size: 32, offset: 896) +!124 = !DIDerivedType(tag: DW_TAG_member, name: "_flags2", scope: !103, file: !104, line: 73, baseType: !41, size: 32, offset: 928) +!125 = !DIDerivedType(tag: DW_TAG_member, name: "_old_offset", scope: !103, file: !104, line: 74, baseType: !126, size: 64, offset: 960) +!126 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off_t", file: !127, line: 152, baseType: !128) +!127 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") +!128 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!129 = !DIDerivedType(tag: DW_TAG_member, name: "_cur_column", scope: !103, file: !104, line: 77, baseType: !42, size: 16, offset: 1024) +!130 = !DIDerivedType(tag: DW_TAG_member, name: "_vtable_offset", scope: !103, file: !104, line: 78, baseType: !131, size: 8, offset: 1040) +!131 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) +!132 = !DIDerivedType(tag: DW_TAG_member, name: "_shortbuf", scope: !103, file: !104, line: 79, baseType: !133, size: 8, offset: 1048) +!133 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 8, elements: !134) +!134 = !{!135} +!135 = !DISubrange(count: 1) +!136 = !DIDerivedType(tag: DW_TAG_member, name: "_lock", scope: !103, file: !104, line: 81, baseType: !137, size: 64, offset: 1088) +!137 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !138, size: 64) +!138 = !DIDerivedType(tag: DW_TAG_typedef, name: "_IO_lock_t", file: !104, line: 43, baseType: null) +!139 = !DIDerivedType(tag: DW_TAG_member, name: "_offset", scope: !103, file: !104, line: 89, baseType: !140, size: 64, offset: 1152) +!140 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off64_t", file: !127, line: 153, baseType: !128) +!141 = !DIDerivedType(tag: DW_TAG_member, name: "_codecvt", scope: !103, file: !104, line: 91, baseType: !142, size: 64, offset: 1216) +!142 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !143, size: 64) +!143 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_codecvt", file: !104, line: 37, flags: DIFlagFwdDecl) +!144 = !DIDerivedType(tag: DW_TAG_member, name: "_wide_data", scope: !103, file: !104, line: 92, baseType: !145, size: 64, offset: 1280) +!145 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !146, size: 64) +!146 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_wide_data", file: !104, line: 38, flags: DIFlagFwdDecl) +!147 = !DIDerivedType(tag: DW_TAG_member, name: "_freeres_list", scope: !103, file: !104, line: 93, baseType: !122, size: 64, offset: 1344) +!148 = !DIDerivedType(tag: DW_TAG_member, name: "_freeres_buf", scope: !103, file: !104, line: 94, baseType: !43, size: 64, offset: 1408) +!149 = !DIDerivedType(tag: DW_TAG_member, name: "__pad5", scope: !103, file: !104, line: 95, baseType: !150, size: 64, offset: 1472) +!150 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !151, line: 18, baseType: !152) +!151 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") +!152 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!153 = !DIDerivedType(tag: DW_TAG_member, name: "_mode", scope: !103, file: !104, line: 96, baseType: !41, size: 32, offset: 1536) +!154 = !DIDerivedType(tag: DW_TAG_member, name: "_unused2", scope: !103, file: !104, line: 98, baseType: !9, size: 160, offset: 1568) +!155 = !DILocation(line: 36, column: 8, scope: !92) +!156 = !DILocalVariable(name: "buf", scope: !92, file: !2, line: 37, type: !44) +!157 = !DILocation(line: 37, column: 8, scope: !92) +!158 = !DILocation(line: 39, column: 7, scope: !159) +!159 = distinct !DILexicalBlock(scope: !92, file: !2, line: 39, column: 7) +!160 = !DILocation(line: 39, column: 16, scope: !159) +!161 = !DILocation(line: 40, column: 14, scope: !162) +!162 = distinct !DILexicalBlock(scope: !159, file: !2, line: 39, column: 26) +!163 = !DILocation(line: 40, column: 8, scope: !162) +!164 = !DILocation(line: 40, column: 6, scope: !162) +!165 = !DILocation(line: 41, column: 7, scope: !166) +!166 = distinct !DILexicalBlock(scope: !162, file: !2, line: 41, column: 7) +!167 = !DILocation(line: 41, column: 10, scope: !166) +!168 = !DILocation(line: 42, column: 34, scope: !169) +!169 = distinct !DILexicalBlock(scope: !166, file: !2, line: 41, column: 19) +!170 = !DILocation(line: 42, column: 4, scope: !169) +!171 = !DILocation(line: 43, column: 4, scope: !169) +!172 = !DILocation(line: 45, column: 13, scope: !173) +!173 = distinct !DILexicalBlock(scope: !162, file: !2, line: 45, column: 7) +!174 = !DILocation(line: 45, column: 7, scope: !173) +!175 = !DILocation(line: 45, column: 31, scope: !173) +!176 = !DILocation(line: 46, column: 4, scope: !177) +!177 = distinct !DILexicalBlock(scope: !173, file: !2, line: 45, column: 38) +!178 = !DILocation(line: 47, column: 4, scope: !177) +!179 = !DILocation(line: 49, column: 15, scope: !162) +!180 = !DILocation(line: 49, column: 9, scope: !162) +!181 = !DILocation(line: 49, column: 7, scope: !162) +!182 = !DILocation(line: 50, column: 7, scope: !183) +!183 = distinct !DILexicalBlock(scope: !162, file: !2, line: 50, column: 7) +!184 = !DILocation(line: 50, column: 11, scope: !183) +!185 = !DILocation(line: 51, column: 4, scope: !186) +!186 = distinct !DILexicalBlock(scope: !183, file: !2, line: 50, column: 18) +!187 = !DILocation(line: 52, column: 4, scope: !186) +!188 = !DILocation(line: 54, column: 12, scope: !189) +!189 = distinct !DILexicalBlock(scope: !162, file: !2, line: 54, column: 6) +!190 = !DILocation(line: 54, column: 6, scope: !189) +!191 = !DILocation(line: 54, column: 30, scope: !189) +!192 = !DILocation(line: 55, column: 4, scope: !193) +!193 = distinct !DILexicalBlock(scope: !189, file: !2, line: 54, column: 37) +!194 = !DILocation(line: 56, column: 4, scope: !193) +!195 = !DILocation(line: 58, column: 25, scope: !162) +!196 = !DILocation(line: 58, column: 28, scope: !162) +!197 = !DILocation(line: 58, column: 18, scope: !162) +!198 = !DILocation(line: 58, column: 7, scope: !162) +!199 = !DILocation(line: 59, column: 12, scope: !200) +!200 = distinct !DILexicalBlock(scope: !162, file: !2, line: 59, column: 6) +!201 = !DILocation(line: 59, column: 17, scope: !200) +!202 = !DILocation(line: 59, column: 25, scope: !200) +!203 = !DILocation(line: 59, column: 6, scope: !200) +!204 = !DILocation(line: 59, column: 29, scope: !200) +!205 = !DILocation(line: 60, column: 4, scope: !206) +!206 = distinct !DILexicalBlock(scope: !200, file: !2, line: 59, column: 36) +!207 = !DILocation(line: 61, column: 4, scope: !206) +!208 = !DILocation(line: 63, column: 3, scope: !162) +!209 = !DILocation(line: 63, column: 7, scope: !162) +!210 = !DILocation(line: 63, column: 12, scope: !162) +!211 = !DILocation(line: 64, column: 10, scope: !162) +!212 = !DILocation(line: 64, column: 3, scope: !162) +!213 = !DILocation(line: 65, column: 2, scope: !162) +!214 = !DILocation(line: 67, column: 9, scope: !92) +!215 = !DILocation(line: 67, column: 2, scope: !92) +!216 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 70, type: !217, scopeLine: 70, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !21, retainedNodes: !59) +!217 = !DISubroutineType(types: !218) +!218 = !{!41, !41, !219} +!219 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !44, size: 64) +!220 = !DILocalVariable(name: "argc", arg: 1, scope: !216, file: !2, line: 70, type: !41) +!221 = !DILocation(line: 70, column: 14, scope: !216) +!222 = !DILocalVariable(name: "argv", arg: 2, scope: !216, file: !2, line: 70, type: !219) +!223 = !DILocation(line: 70, column: 26, scope: !216) +!224 = !DILocalVariable(name: "files", scope: !216, file: !2, line: 71, type: !225) +!225 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 2048, elements: !69) +!226 = !DILocation(line: 71, column: 6, scope: !216) +!227 = !DILocalVariable(name: "fc", scope: !216, file: !2, line: 72, type: !41) +!228 = !DILocation(line: 72, column: 6, scope: !216) +!229 = !DILocalVariable(name: "i", scope: !230, file: !2, line: 74, type: !41) +!230 = distinct !DILexicalBlock(scope: !216, file: !2, line: 74, column: 2) +!231 = !DILocation(line: 74, column: 12, scope: !230) +!232 = !DILocation(line: 74, column: 8, scope: !230) +!233 = !DILocation(line: 74, column: 19, scope: !234) +!234 = distinct !DILexicalBlock(scope: !230, file: !2, line: 74, column: 2) +!235 = !DILocation(line: 74, column: 23, scope: !234) +!236 = !DILocation(line: 74, column: 21, scope: !234) +!237 = !DILocation(line: 74, column: 2, scope: !230) +!238 = !DILocation(line: 75, column: 8, scope: !239) +!239 = distinct !DILexicalBlock(scope: !240, file: !2, line: 75, column: 8) +!240 = distinct !DILexicalBlock(scope: !234, file: !2, line: 74, column: 36) +!241 = !DILocation(line: 75, column: 13, scope: !239) +!242 = !DILocation(line: 75, column: 19, scope: !239) +!243 = !DILocation(line: 77, column: 16, scope: !244) +!244 = distinct !DILexicalBlock(scope: !239, file: !2, line: 75, column: 28) +!245 = !DILocation(line: 77, column: 10, scope: !244) +!246 = !DILocation(line: 77, column: 4, scope: !244) +!247 = !DILocation(line: 77, column: 14, scope: !244) +!248 = !DILocation(line: 78, column: 7, scope: !244) +!249 = !DILocation(line: 79, column: 3, scope: !244) +!250 = !DILocation(line: 80, column: 2, scope: !240) +!251 = !DILocation(line: 74, column: 31, scope: !234) +!252 = !DILocation(line: 74, column: 2, scope: !234) +!253 = distinct !{!253, !237, !254, !80} +!254 = !DILocation(line: 80, column: 2, scope: !230) +!255 = !DILocalVariable(name: "i", scope: !256, file: !2, line: 82, type: !41) +!256 = distinct !DILexicalBlock(scope: !216, file: !2, line: 82, column: 2) +!257 = !DILocation(line: 82, column: 12, scope: !256) +!258 = !DILocation(line: 82, column: 8, scope: !256) +!259 = !DILocation(line: 82, column: 19, scope: !260) +!260 = distinct !DILexicalBlock(scope: !256, file: !2, line: 82, column: 2) +!261 = !DILocation(line: 82, column: 23, scope: !260) +!262 = !DILocation(line: 82, column: 21, scope: !260) +!263 = !DILocation(line: 82, column: 2, scope: !256) +!264 = !DILocalVariable(name: "buf", scope: !265, file: !2, line: 83, type: !44) +!265 = distinct !DILexicalBlock(scope: !260, file: !2, line: 82, column: 34) +!266 = !DILocation(line: 83, column: 9, scope: !265) +!267 = !DILocation(line: 83, column: 24, scope: !265) +!268 = !DILocation(line: 83, column: 35, scope: !265) +!269 = !DILocation(line: 83, column: 29, scope: !265) +!270 = !DILocation(line: 83, column: 15, scope: !265) +!271 = !DILocation(line: 84, column: 11, scope: !265) +!272 = !DILocation(line: 84, column: 22, scope: !265) +!273 = !DILocation(line: 84, column: 16, scope: !265) +!274 = !DILocation(line: 84, column: 27, scope: !265) +!275 = !DILocation(line: 84, column: 3, scope: !265) +!276 = !DILocation(line: 85, column: 8, scope: !265) +!277 = !DILocation(line: 85, column: 3, scope: !265) +!278 = !DILocation(line: 86, column: 2, scope: !265) +!279 = !DILocation(line: 82, column: 29, scope: !260) +!280 = !DILocation(line: 82, column: 2, scope: !260) +!281 = distinct !{!281, !263, !282, !80} +!282 = !DILocation(line: 86, column: 2, scope: !256) +!283 = !DILocation(line: 87, column: 1, scope: !216) 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 index 6b74ace0f..a7e54c174 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34918-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.nft_set = type { i32, ptr } %struct.nft_data_desc = type { i32, i32 } @@ -14,38 +14,35 @@ entry: %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 + #dbg_declare(ptr %set.addr, !34, !DIExpression(), !35) store ptr %data, ptr %data.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %data.addr, metadata !36, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %data.addr, !36, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.end, !dbg !38 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 + %1 = load ptr, ptr %data.addr, align 8, !dbg !40 + %2 = load ptr, ptr %set.addr, align 8, !dbg !41 + %data1 = getelementptr inbounds nuw %struct.nft_set, ptr %2, i32 0, i32 1, !dbg !42 + %3 = load ptr, ptr %data1, align 8, !dbg !42 + %4 = load ptr, ptr %set.addr, align 8, !dbg !43 + %dlen = getelementptr inbounds nuw %struct.nft_set, ptr %4, i32 0, i32 0, !dbg !44 + %5 = load i32, ptr %dlen, align 8, !dbg !44 + %conv = sext i32 %5 to i64, !dbg !43 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1, ptr align 1 %3, i64 %conv, i1 false), !dbg !45 + br label %if.end, !dbg !45 if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %retval, align 8, !dbg !47 - ret ptr %6, !dbg !47 + %6 = load ptr, ptr %retval, align 8, !dbg !46 + ret ptr %6, !dbg !46 } -; 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 @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 ; 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 { +define dso_local i32 @nft_setelem_parse_data(ptr noundef %set, ptr noundef %desc, ptr noundef %data) #0 !dbg !47 { entry: %retval = alloca i32, align 4 %set.addr = alloca ptr, align 8 @@ -53,206 +50,205 @@ entry: %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 + #dbg_declare(ptr %set.addr, !60, !DIExpression(), !61) store ptr %desc, ptr %desc.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %desc.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %desc.addr, !62, !DIExpression(), !63) 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 + #dbg_declare(ptr %data.addr, !64, !DIExpression(), !65) + #dbg_declare(ptr %err, !66, !DIExpression(), !67) + %0 = load ptr, ptr %data.addr, align 8, !dbg !68 + %1 = load ptr, ptr %desc.addr, align 8, !dbg !69 + %call = call i32 @nft_data_init(ptr noundef %0, ptr noundef %1), !dbg !70 + store i32 %call, ptr %err, align 4, !dbg !71 + %2 = load i32, ptr %err, align 4, !dbg !72 + %cmp = icmp slt i32 %2, 0, !dbg !74 + br i1 %cmp, label %if.then, label %if.end, !dbg !74 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 + %3 = load i32, ptr %err, align 4, !dbg !75 + store i32 %3, ptr %retval, align 4, !dbg !76 + br label %return, !dbg !76 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 + %4 = load ptr, ptr %desc.addr, align 8, !dbg !77 + %type = getelementptr inbounds nuw %struct.nft_data_desc, ptr %4, i32 0, i32 0, !dbg !79 + %5 = load i32, ptr %type, align 4, !dbg !79 + %cmp1 = icmp ne i32 %5, 0, !dbg !80 + br i1 %cmp1, label %land.lhs.true, label %if.end5, !dbg !81 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 + %6 = load ptr, ptr %desc.addr, align 8, !dbg !82 + %len = getelementptr inbounds nuw %struct.nft_data_desc, ptr %6, i32 0, i32 1, !dbg !83 + %7 = load i32, ptr %len, align 4, !dbg !83 + %8 = load ptr, ptr %set.addr, align 8, !dbg !84 + %dlen = getelementptr inbounds nuw %struct.nft_set, ptr %8, i32 0, i32 0, !dbg !85 + %9 = load i32, ptr %dlen, align 8, !dbg !85 + %cmp2 = icmp ne i32 %7, %9, !dbg !86 + br i1 %cmp2, label %if.then3, label %if.end5, !dbg !81 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 + %10 = load ptr, ptr %data.addr, align 8, !dbg !87 + %11 = load ptr, ptr %desc.addr, align 8, !dbg !89 + %call4 = call i32 @nft_data_release(ptr noundef %10, ptr noundef %11), !dbg !90 + store i32 -1, ptr %retval, align 4, !dbg !91 + br label %return, !dbg !91 if.end5: ; preds = %land.lhs.true, %if.end - store i32 0, ptr %retval, align 4, !dbg !95 - br label %return, !dbg !95 + store i32 0, ptr %retval, align 4, !dbg !92 + br label %return, !dbg !92 return: ; preds = %if.end5, %if.then3, %if.then - %12 = load i32, ptr %retval, align 4, !dbg !96 - ret i32 %12, !dbg !96 + %12 = load i32, ptr %retval, align 4, !dbg !93 + ret i32 %12, !dbg !93 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nft_add_set_elem(ptr noundef %set) #0 !dbg !97 { +define dso_local i32 @nft_add_set_elem(ptr noundef %set) #0 !dbg !94 { 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 + #dbg_declare(ptr %set.addr, !97, !DIExpression(), !98) + #dbg_declare(ptr %data, !99, !DIExpression(), !100) + #dbg_declare(ptr %desc, !101, !DIExpression(), !102) + %0 = load ptr, ptr %set.addr, align 8, !dbg !103 + %dlen = getelementptr inbounds nuw %struct.nft_set, ptr %0, i32 0, i32 0, !dbg !104 + %1 = load i32, ptr %dlen, align 8, !dbg !104 + %len = getelementptr inbounds nuw %struct.nft_data_desc, ptr %desc, i32 0, i32 1, !dbg !105 + store i32 %1, ptr %len, align 4, !dbg !106 + %call = call i32 @nd(), !dbg !107 + %tobool = icmp ne i32 %call, 0, !dbg !107 + br i1 %tobool, label %if.then, label %if.end, !dbg !107 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 + %2 = load ptr, ptr %set.addr, align 8, !dbg !109 + %call1 = call i32 @nft_setelem_parse_data(ptr noundef %2, ptr noundef %desc, ptr noundef %data), !dbg !111 + br label %if.end, !dbg !112 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 + %3 = load ptr, ptr %set.addr, align 8, !dbg !113 + %data2 = getelementptr inbounds nuw %struct.nft_data, ptr %data, i32 0, i32 0, !dbg !114 + %4 = load ptr, ptr %data2, align 8, !dbg !114 + %call3 = call ptr @nft_set_elem_init(ptr noundef %3, ptr noundef %4), !dbg !115 + %5 = load i32, ptr %retval, align 4, !dbg !116 + ret i32 %5, !dbg !116 } -declare i32 @nd() #3 +declare i32 @nd() #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nft_data_init(ptr noundef %data, ptr noundef %desc) #0 !dbg !121 { +define dso_local i32 @nft_data_init(ptr noundef %data, ptr noundef %desc) #0 !dbg !117 { 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 + #dbg_declare(ptr %data.addr, !120, !DIExpression(), !121) 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 + #dbg_declare(ptr %desc.addr, !122, !DIExpression(), !123) + %call = call i32 @nd(), !dbg !124 + %tobool = icmp ne i32 %call, 0, !dbg !124 + br i1 %tobool, label %if.then, label %if.else, !dbg !124 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 + %0 = load ptr, ptr %desc.addr, align 8, !dbg !126 + %len = getelementptr inbounds nuw %struct.nft_data_desc, ptr %0, i32 0, i32 1, !dbg !128 + %1 = load i32, ptr %len, align 4, !dbg !128 + %call1 = call i32 (i32, ...) @ALLOC(i32 noundef %1), !dbg !129 + %conv = sext i32 %call1 to i64, !dbg !130 + %2 = inttoptr i64 %conv to ptr, !dbg !130 + %3 = load ptr, ptr %data.addr, align 8, !dbg !131 + %data2 = getelementptr inbounds nuw %struct.nft_data, ptr %3, i32 0, i32 0, !dbg !132 + store ptr %2, ptr %data2, align 8, !dbg !133 + %4 = load ptr, ptr %desc.addr, align 8, !dbg !134 + %type = getelementptr inbounds nuw %struct.nft_data_desc, ptr %4, i32 0, i32 0, !dbg !135 + store i32 0, ptr %type, align 4, !dbg !136 + br label %if.end, !dbg !137 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 + %5 = load ptr, ptr %desc.addr, align 8, !dbg !138 + %len3 = getelementptr inbounds nuw %struct.nft_data_desc, ptr %5, i32 0, i32 1, !dbg !140 + %6 = load i32, ptr %len3, align 4, !dbg !140 + %sub = sub nsw i32 %6, 2, !dbg !141 + %call4 = call i32 (i32, ...) @ALLOC(i32 noundef %sub), !dbg !142 + %conv5 = sext i32 %call4 to i64, !dbg !143 + %7 = inttoptr i64 %conv5 to ptr, !dbg !143 + %8 = load ptr, ptr %data.addr, align 8, !dbg !144 + %data6 = getelementptr inbounds nuw %struct.nft_data, ptr %8, i32 0, i32 0, !dbg !145 + store ptr %7, ptr %data6, align 8, !dbg !146 + %9 = load ptr, ptr %desc.addr, align 8, !dbg !147 + %type7 = getelementptr inbounds nuw %struct.nft_data_desc, ptr %9, i32 0, i32 0, !dbg !148 + store i32 0, ptr %type7, align 4, !dbg !149 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 + %10 = load i32, ptr %retval, align 4, !dbg !150 + ret i32 %10, !dbg !150 } -declare i32 @ALLOC(...) #3 +declare i32 @ALLOC(...) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nft_data_release(ptr noundef %data, ptr noundef %desc) #0 !dbg !156 { +define dso_local i32 @nft_data_release(ptr noundef %data, ptr noundef %desc) #0 !dbg !151 { 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 + #dbg_declare(ptr %data.addr, !152, !DIExpression(), !153) 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 + #dbg_declare(ptr %desc.addr, !154, !DIExpression(), !155) + %0 = load ptr, ptr %data.addr, align 8, !dbg !156 + %data1 = getelementptr inbounds nuw %struct.nft_data, ptr %0, i32 0, i32 0, !dbg !157 + %1 = load ptr, ptr %data1, align 8, !dbg !157 + call void @free(ptr noundef %1) #4, !dbg !158 + %2 = load ptr, ptr %data.addr, align 8, !dbg !159 + %data2 = getelementptr inbounds nuw %struct.nft_data, ptr %2, i32 0, i32 0, !dbg !160 + store ptr null, ptr %data2, align 8, !dbg !161 + %3 = load ptr, ptr %desc.addr, align 8, !dbg !162 + %len = getelementptr inbounds nuw %struct.nft_data_desc, ptr %3, i32 0, i32 1, !dbg !163 + store i32 0, ptr %len, align 4, !dbg !164 + %4 = load i32, ptr %retval, align 4, !dbg !165 + ret i32 %4, !dbg !165 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !171 { +define dso_local i32 @main() #0 !dbg !166 { 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 + #dbg_declare(ptr %set, !169, !DIExpression(), !170) + %dlen = getelementptr inbounds nuw %struct.nft_set, ptr %set, i32 0, i32 0, !dbg !171 + store i32 10, ptr %dlen, align 8, !dbg !172 + %dlen1 = getelementptr inbounds nuw %struct.nft_set, ptr %set, i32 0, i32 0, !dbg !173 + %0 = load i32, ptr %dlen1, align 8, !dbg !173 + %conv = sext i32 %0 to i64, !dbg !173 + %1 = alloca i8, i64 %conv, align 16, !dbg !173 + %data = getelementptr inbounds nuw %struct.nft_set, ptr %set, i32 0, i32 1, !dbg !174 + store ptr %1, ptr %data, align 8, !dbg !175 + %call = call i32 @nft_add_set_elem(ptr noundef %set), !dbg !176 + ret i32 0, !dbg !177 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { 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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !9, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CVE-2022-34918-0.c", directory: "/root/testsss/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") +!4 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-34918-0.c", directory: "/root/testsss/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) @@ -267,7 +263,7 @@ attributes #5 = { nounwind } !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"} +!19 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -288,146 +284,141 @@ attributes #5 = { nounwind } !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) +!40 = !DILocation(line: 36, column: 12, scope: !39) +!41 = !DILocation(line: 36, column: 18, scope: !39) +!42 = !DILocation(line: 36, column: 23, scope: !39) +!43 = !DILocation(line: 36, column: 29, scope: !39) +!44 = !DILocation(line: 36, column: 34, scope: !39) +!45 = !DILocation(line: 36, column: 5, scope: !39) +!46 = !DILocation(line: 37, column: 1, scope: !20) +!47 = distinct !DISubprogram(name: "nft_setelem_parse_data", scope: !4, file: !4, line: 39, type: !48, scopeLine: 42, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) +!48 = !DISubroutineType(types: !49) +!49 = !{!29, !50, !51, !56} +!50 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) +!51 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !52, size: 64) +!52 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "nft_data_desc", file: !4, line: 19, size: 64, elements: !53) +!53 = !{!54, !55} +!54 = !DIDerivedType(tag: DW_TAG_member, name: "type", scope: !52, file: !4, line: 24, baseType: !3, size: 32) +!55 = !DIDerivedType(tag: DW_TAG_member, name: "len", scope: !52, file: !4, line: 25, baseType: !29, size: 32, offset: 32) +!56 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !57, size: 64) +!57 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "nft_data", file: !4, line: 28, size: 64, elements: !58) +!58 = !{!59} +!59 = !DIDerivedType(tag: DW_TAG_member, name: "data", scope: !57, file: !4, line: 29, baseType: !10, size: 64) +!60 = !DILocalVariable(name: "set", arg: 1, scope: !47, file: !4, line: 39, type: !50) +!61 = !DILocation(line: 39, column: 45, scope: !47) +!62 = !DILocalVariable(name: "desc", arg: 2, scope: !47, file: !4, line: 40, type: !51) +!63 = !DILocation(line: 40, column: 50, scope: !47) +!64 = !DILocalVariable(name: "data", arg: 3, scope: !47, file: !4, line: 41, type: !56) +!65 = !DILocation(line: 41, column: 45, scope: !47) +!66 = !DILocalVariable(name: "err", scope: !47, file: !4, line: 43, type: !29) +!67 = !DILocation(line: 43, column: 7, scope: !47) +!68 = !DILocation(line: 44, column: 23, scope: !47) +!69 = !DILocation(line: 44, column: 29, scope: !47) +!70 = !DILocation(line: 44, column: 9, scope: !47) +!71 = !DILocation(line: 44, column: 7, scope: !47) +!72 = !DILocation(line: 45, column: 7, scope: !73) +!73 = distinct !DILexicalBlock(scope: !47, file: !4, line: 45, column: 7) +!74 = !DILocation(line: 45, column: 11, scope: !73) +!75 = !DILocation(line: 46, column: 12, scope: !73) +!76 = !DILocation(line: 46, column: 5, scope: !73) +!77 = !DILocation(line: 48, column: 7, scope: !78) +!78 = distinct !DILexicalBlock(scope: !47, file: !4, line: 48, column: 7) +!79 = !DILocation(line: 48, column: 13, scope: !78) +!80 = !DILocation(line: 48, column: 18, scope: !78) +!81 = !DILocation(line: 48, column: 38, scope: !78) +!82 = !DILocation(line: 48, column: 41, scope: !78) +!83 = !DILocation(line: 48, column: 47, scope: !78) +!84 = !DILocation(line: 48, column: 54, scope: !78) +!85 = !DILocation(line: 48, column: 59, scope: !78) +!86 = !DILocation(line: 48, column: 51, scope: !78) +!87 = !DILocation(line: 49, column: 22, scope: !88) +!88 = distinct !DILexicalBlock(scope: !78, file: !4, line: 48, column: 65) +!89 = !DILocation(line: 49, column: 28, scope: !88) +!90 = !DILocation(line: 49, column: 5, scope: !88) +!91 = !DILocation(line: 50, column: 5, scope: !88) +!92 = !DILocation(line: 53, column: 3, scope: !47) +!93 = !DILocation(line: 54, column: 1, scope: !47) +!94 = distinct !DISubprogram(name: "nft_add_set_elem", scope: !4, file: !4, line: 56, type: !95, scopeLine: 56, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) +!95 = !DISubroutineType(types: !96) +!96 = !{!29, !50} +!97 = !DILocalVariable(name: "set", arg: 1, scope: !94, file: !4, line: 56, type: !50) +!98 = !DILocation(line: 56, column: 38, scope: !94) +!99 = !DILocalVariable(name: "data", scope: !94, file: !4, line: 57, type: !57) +!100 = !DILocation(line: 57, column: 19, scope: !94) +!101 = !DILocalVariable(name: "desc", scope: !94, file: !4, line: 58, type: !52) +!102 = !DILocation(line: 58, column: 24, scope: !94) +!103 = !DILocation(line: 59, column: 14, scope: !94) +!104 = !DILocation(line: 59, column: 19, scope: !94) +!105 = !DILocation(line: 59, column: 8, scope: !94) +!106 = !DILocation(line: 59, column: 12, scope: !94) +!107 = !DILocation(line: 61, column: 7, scope: !108) +!108 = distinct !DILexicalBlock(scope: !94, file: !4, line: 61, column: 7) +!109 = !DILocation(line: 62, column: 28, scope: !110) +!110 = distinct !DILexicalBlock(scope: !108, file: !4, line: 61, column: 13) +!111 = !DILocation(line: 62, column: 5, scope: !110) +!112 = !DILocation(line: 63, column: 3, scope: !110) +!113 = !DILocation(line: 64, column: 21, scope: !94) +!114 = !DILocation(line: 64, column: 31, scope: !94) +!115 = !DILocation(line: 64, column: 3, scope: !94) +!116 = !DILocation(line: 65, column: 1, scope: !94) +!117 = distinct !DISubprogram(name: "nft_data_init", scope: !4, file: !4, line: 67, type: !118, scopeLine: 67, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) +!118 = !DISubroutineType(types: !119) +!119 = !{!29, !56, !51} +!120 = !DILocalVariable(name: "data", arg: 1, scope: !117, file: !4, line: 67, type: !56) +!121 = !DILocation(line: 67, column: 36, scope: !117) +!122 = !DILocalVariable(name: "desc", arg: 2, scope: !117, file: !4, line: 67, type: !51) +!123 = !DILocation(line: 67, column: 64, scope: !117) +!124 = !DILocation(line: 68, column: 9, scope: !125) +!125 = distinct !DILexicalBlock(scope: !117, file: !4, line: 68, column: 9) +!126 = !DILocation(line: 69, column: 33, scope: !127) +!127 = distinct !DILexicalBlock(scope: !125, file: !4, line: 68, column: 15) +!128 = !DILocation(line: 69, column: 39, scope: !127) +!129 = !DILocation(line: 69, column: 27, scope: !127) +!130 = !DILocation(line: 69, column: 20, scope: !127) +!131 = !DILocation(line: 69, column: 7, scope: !127) +!132 = !DILocation(line: 69, column: 13, scope: !127) +!133 = !DILocation(line: 69, column: 18, scope: !127) +!134 = !DILocation(line: 70, column: 7, scope: !127) +!135 = !DILocation(line: 70, column: 13, scope: !127) +!136 = !DILocation(line: 70, column: 18, scope: !127) +!137 = !DILocation(line: 71, column: 5, scope: !127) +!138 = !DILocation(line: 72, column: 33, scope: !139) +!139 = distinct !DILexicalBlock(scope: !125, file: !4, line: 71, column: 12) +!140 = !DILocation(line: 72, column: 39, scope: !139) +!141 = !DILocation(line: 72, column: 43, scope: !139) +!142 = !DILocation(line: 72, column: 27, scope: !139) +!143 = !DILocation(line: 72, column: 20, scope: !139) +!144 = !DILocation(line: 72, column: 7, scope: !139) +!145 = !DILocation(line: 72, column: 13, scope: !139) +!146 = !DILocation(line: 72, column: 18, scope: !139) +!147 = !DILocation(line: 73, column: 7, scope: !139) +!148 = !DILocation(line: 73, column: 13, scope: !139) +!149 = !DILocation(line: 73, column: 18, scope: !139) +!150 = !DILocation(line: 75, column: 1, scope: !117) +!151 = distinct !DISubprogram(name: "nft_data_release", scope: !4, file: !4, line: 77, type: !118, scopeLine: 77, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) +!152 = !DILocalVariable(name: "data", arg: 1, scope: !151, file: !4, line: 77, type: !56) +!153 = !DILocation(line: 77, column: 39, scope: !151) +!154 = !DILocalVariable(name: "desc", arg: 2, scope: !151, file: !4, line: 77, type: !51) +!155 = !DILocation(line: 77, column: 67, scope: !151) +!156 = !DILocation(line: 78, column: 9, scope: !151) +!157 = !DILocation(line: 78, column: 15, scope: !151) +!158 = !DILocation(line: 78, column: 4, scope: !151) +!159 = !DILocation(line: 79, column: 4, scope: !151) +!160 = !DILocation(line: 79, column: 10, scope: !151) +!161 = !DILocation(line: 79, column: 15, scope: !151) +!162 = !DILocation(line: 80, column: 4, scope: !151) +!163 = !DILocation(line: 80, column: 10, scope: !151) +!164 = !DILocation(line: 80, column: 14, scope: !151) +!165 = !DILocation(line: 81, column: 1, scope: !151) +!166 = distinct !DISubprogram(name: "main", scope: !4, file: !4, line: 83, type: !167, scopeLine: 83, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) +!167 = !DISubroutineType(types: !168) +!168 = !{!29} +!169 = !DILocalVariable(name: "set", scope: !166, file: !4, line: 84, type: !26) +!170 = !DILocation(line: 84, column: 18, scope: !166) +!171 = !DILocation(line: 85, column: 7, scope: !166) +!172 = !DILocation(line: 85, column: 12, scope: !166) +!173 = !DILocation(line: 86, column: 21, scope: !166) +!174 = !DILocation(line: 86, column: 7, scope: !166) +!175 = !DILocation(line: 86, column: 12, scope: !166) +!176 = !DILocation(line: 87, column: 3, scope: !166) +!177 = !DILocation(line: 88, column: 1, scope: !166) 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 index 9d3b3d2e4..f9e3ad697 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/CWE127_har_alloc-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !13 { @@ -9,8 +9,8 @@ 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 + #dbg_declare(ptr %data, !19, !DIExpression(), !20) + #dbg_declare(ptr %dataBuffer, !21, !DIExpression(), !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 @@ -20,14 +20,14 @@ entry: 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 + #dbg_declare(ptr %dest, !30, !DIExpression(), !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 + %call = call ptr @strcpy(ptr noundef %arraydecay2, ptr noundef %4) #4, !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 @@ -37,30 +37,26 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #3 +declare ptr @strcpy(ptr noundef, ptr noundef) #2 -declare void @svf_assert(i1 noundef zeroext) #4 +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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +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/CWE127_har_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "815713cf07dcea5d1098fa33fd12b875") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/CWE127_har_alloc-0.c", directory: "/root/testsss/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) @@ -71,9 +67,9 @@ attributes #5 = { nounwind } !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"} +!12 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!14 = !DIFile(filename: "src/ae_assert_tests/CWE127_har_alloc-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "815713cf07dcea5d1098fa33fd12b875") !15 = !DISubroutineType(types: !16) !16 = !{!17} !17 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index d06432e39..828f7c570 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_10-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [8 x i8] c"a value\00", align 1, !dbg !0 @@ -12,8 +12,8 @@ entry: %a = alloca i32, align 4 %res = 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 = call i32 @rand() #4, !dbg !25 + #dbg_declare(ptr %a, !23, !DIExpression(), !24) + %call = call i32 @rand() #3, !dbg !25 store i32 %call, ptr %a, align 4, !dbg !24 %0 = load i32, ptr %a, align 4, !dbg !26 %cmp = icmp sgt i32 %0, 5, !dbg !28 @@ -22,47 +22,43 @@ entry: land.lhs.true: ; preds = %entry %1 = load i32, ptr %a, align 4, !dbg !30 %cmp1 = icmp slt i32 %1, 7, !dbg !31 - br i1 %cmp1, label %if.then, label %if.else, !dbg !32 + br i1 %cmp1, label %if.then, label %if.else, !dbg !29 if.then: ; preds = %land.lhs.true - %2 = load i32, ptr %a, align 4, !dbg !33 - call void @svf_print(i32 noundef %2, ptr noundef @.str), !dbg !35 - %3 = load i32, ptr %a, align 4, !dbg !36 - %cmp2 = icmp eq i32 %3, 6, !dbg !37 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !38 - br label %if.end, !dbg !39 + %2 = load i32, ptr %a, align 4, !dbg !32 + call void @svf_print(i32 noundef %2, ptr noundef @.str), !dbg !34 + %3 = load i32, ptr %a, align 4, !dbg !35 + %cmp2 = icmp eq i32 %3, 6, !dbg !36 + call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !37 + br label %if.end, !dbg !38 if.else: ; preds = %land.lhs.true, %entry - call void @llvm.dbg.declare(metadata ptr %res, metadata !40, metadata !DIExpression()), !dbg !42 - %call3 = call i32 @rand() #4, !dbg !43 - store i32 %call3, ptr %res, align 4, !dbg !42 - %4 = load i32, ptr %a, align 4, !dbg !44 - %5 = load i32, ptr %res, align 4, !dbg !45 - call void @svf_assert_eq(i32 noundef %4, i32 noundef %5), !dbg !46 + #dbg_declare(ptr %res, !39, !DIExpression(), !41) + %call3 = call i32 @rand() #3, !dbg !42 + store i32 %call3, ptr %res, align 4, !dbg !41 + %4 = load i32, ptr %a, align 4, !dbg !43 + %5 = load i32, ptr %res, align 4, !dbg !44 + call void @svf_assert_eq(i32 noundef %4, i32 noundef %5), !dbg !45 br label %if.end if.end: ; preds = %if.else, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !47 - ret i32 %6, !dbg !47 + %6 = load i32, ptr %retval, align 4, !dbg !46 + ret i32 %6, !dbg !46 } -; 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 +declare i32 @rand() #1 -declare void @svf_print(i32 noundef, ptr noundef) #3 +declare void @svf_print(i32 noundef, ptr noundef) #2 -declare void @svf_assert(i1 noundef zeroext) #3 +declare void @svf_assert(i1 noundef zeroext) #2 -declare void @svf_assert_eq(i32 noundef, i32 noundef) #3 +declare void @svf_assert_eq(i32 noundef, 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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -70,13 +66,13 @@ attributes #4 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 11, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_10-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "248d118451c54312cc11c5c23e2987c7") +!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_10-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "248d118451c54312cc11c5c23e2987c7") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 64, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 8) -!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_10-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "248d118451c54312cc11c5c23e2987c7") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_10-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "248d118451c54312cc11c5c23e2987c7") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -85,7 +81,7 @@ attributes #4 = { nounwind } !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"} +!17 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -100,19 +96,18 @@ attributes #4 = { nounwind } !29 = !DILocation(line: 10, column: 15, scope: !27) !30 = !DILocation(line: 10, column: 18, scope: !27) !31 = !DILocation(line: 10, column: 20, scope: !27) -!32 = !DILocation(line: 10, column: 9, scope: !18) -!33 = !DILocation(line: 11, column: 19, scope: !34) -!34 = distinct !DILexicalBlock(scope: !27, file: !2, line: 10, column: 25) -!35 = !DILocation(line: 11, column: 9, scope: !34) -!36 = !DILocation(line: 12, column: 20, scope: !34) -!37 = !DILocation(line: 12, column: 22, scope: !34) -!38 = !DILocation(line: 12, column: 9, scope: !34) -!39 = !DILocation(line: 13, column: 5, scope: !34) -!40 = !DILocalVariable(name: "res", scope: !41, file: !2, line: 16, type: !21) -!41 = distinct !DILexicalBlock(scope: !27, file: !2, line: 14, column: 10) -!42 = !DILocation(line: 16, column: 13, scope: !41) -!43 = !DILocation(line: 16, column: 19, scope: !41) -!44 = !DILocation(line: 17, column: 23, scope: !41) -!45 = !DILocation(line: 17, column: 26, scope: !41) -!46 = !DILocation(line: 17, column: 9, scope: !41) -!47 = !DILocation(line: 19, column: 1, scope: !18) +!32 = !DILocation(line: 11, column: 19, scope: !33) +!33 = distinct !DILexicalBlock(scope: !27, file: !2, line: 10, column: 25) +!34 = !DILocation(line: 11, column: 9, scope: !33) +!35 = !DILocation(line: 12, column: 20, scope: !33) +!36 = !DILocation(line: 12, column: 22, scope: !33) +!37 = !DILocation(line: 12, column: 9, scope: !33) +!38 = !DILocation(line: 13, column: 5, scope: !33) +!39 = !DILocalVariable(name: "res", scope: !40, file: !2, line: 16, type: !21) +!40 = distinct !DILexicalBlock(scope: !27, file: !2, line: 14, column: 10) +!41 = !DILocation(line: 16, column: 13, scope: !40) +!42 = !DILocation(line: 16, column: 19, scope: !40) +!43 = !DILocation(line: 17, column: 23, scope: !40) +!44 = !DILocation(line: 17, column: 26, scope: !40) +!45 = !DILocation(line: 17, column: 9, scope: !40) +!46 = !DILocation(line: 19, column: 1, scope: !18) 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 index 62ae43112..af05851b5 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_11-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -9,7 +9,7 @@ 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 + #dbg_declare(ptr %a, !16, !DIExpression(), !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 @@ -18,37 +18,33 @@ entry: 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 + br i1 %cmp1, label %if.then, label %if.else, !dbg !21 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 + %2 = load i32, ptr %a, align 4, !dbg !24 + %cmp2 = icmp eq i32 %2, 6, !dbg !26 + call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !27 + br label %if.end, !dbg !28 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 + %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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_11-0.c", directory: "/root/testsss/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} @@ -56,9 +52,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_11-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "7004ccd5efa2dbc064acd48763f1ede2") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -71,10 +67,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!24 = !DILocation(line: 8, column: 20, scope: !25) +!25 = distinct !DILexicalBlock(scope: !19, file: !11, line: 7, column: 25) +!26 = !DILocation(line: 8, column: 22, scope: !25) +!27 = !DILocation(line: 8, column: 9, scope: !25) +!28 = !DILocation(line: 9, column: 5, scope: !25) +!29 = !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 index 2c382873a..bf3d65e30 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_12-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,57 +10,53 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) %call = call i32 (...) @rand(), !dbg !18 store i32 %call, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %b, !19, !DIExpression(), !20) store i32 1, ptr %b, align 4, !dbg !20 %0 = load i32, ptr %a, align 4, !dbg !21 %cmp = icmp sgt i32 %0, 5, !dbg !23 - br i1 %cmp, label %if.then, label %if.else, !dbg !24 + br i1 %cmp, label %if.then, label %if.else, !dbg !23 if.then: ; preds = %entry - %1 = load i32, ptr %a, align 4, !dbg !25 - %2 = load i32, ptr %b, align 4, !dbg !27 - %sub = sub nsw i32 %1, %2, !dbg !28 - store i32 %sub, ptr %b, align 4, !dbg !29 - %3 = load i32, ptr %b, align 4, !dbg !30 - %cmp1 = icmp sge i32 %3, 5, !dbg !31 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !32 - br label %if.end, !dbg !33 + %1 = load i32, ptr %a, align 4, !dbg !24 + %2 = load i32, ptr %b, align 4, !dbg !26 + %sub = sub nsw i32 %1, %2, !dbg !27 + store i32 %sub, ptr %b, align 4, !dbg !28 + %3 = load i32, ptr %b, align 4, !dbg !29 + %cmp1 = icmp sge 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 %a, align 4, !dbg !34 - %5 = load i32, ptr %b, align 4, !dbg !36 - %sub2 = sub nsw i32 %4, %5, !dbg !37 - store i32 %sub2, ptr %b, align 4, !dbg !38 - %6 = load i32, ptr %b, align 4, !dbg !39 - %cmp3 = icmp sle i32 %6, 4, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !41 + %4 = load i32, ptr %a, align 4, !dbg !33 + %5 = load i32, ptr %b, align 4, !dbg !35 + %sub2 = sub nsw i32 %4, %5, !dbg !36 + store i32 %sub2, ptr %b, align 4, !dbg !37 + %6 = load i32, ptr %b, align 4, !dbg !38 + %cmp3 = icmp sle i32 %6, 4, !dbg !39 + call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !40 br label %if.end if.end: ; preds = %if.else, %if.then - %7 = load i32, ptr %retval, align 4, !dbg !42 - ret i32 %7, !dbg !42 + %7 = load i32, ptr %retval, align 4, !dbg !41 + ret i32 %7, !dbg !41 } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 +declare i32 @rand(...) #1 -declare i32 @rand(...) #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "daa7f61be976a7374add8a1ba44adde2") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_12-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "daa7f61be976a7374add8a1ba44adde2") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -68,9 +64,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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_12-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "daa7f61be976a7374add8a1ba44adde2") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_12-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "daa7f61be976a7374add8a1ba44adde2") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -83,22 +79,21 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !21 = !DILocation(line: 8, column: 9, scope: !22) !22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 9) !23 = !DILocation(line: 8, column: 11, scope: !22) -!24 = !DILocation(line: 8, column: 9, scope: !10) -!25 = !DILocation(line: 9, column: 13, scope: !26) -!26 = distinct !DILexicalBlock(scope: !22, file: !11, line: 8, column: 16) -!27 = !DILocation(line: 9, column: 17, scope: !26) -!28 = !DILocation(line: 9, column: 15, scope: !26) -!29 = !DILocation(line: 9, column: 11, scope: !26) -!30 = !DILocation(line: 10, column: 20, scope: !26) -!31 = !DILocation(line: 10, column: 22, scope: !26) -!32 = !DILocation(line: 10, column: 9, scope: !26) -!33 = !DILocation(line: 11, column: 5, scope: !26) -!34 = !DILocation(line: 13, column: 13, scope: !35) -!35 = distinct !DILexicalBlock(scope: !22, file: !11, line: 12, column: 10) -!36 = !DILocation(line: 13, column: 17, scope: !35) -!37 = !DILocation(line: 13, column: 15, scope: !35) -!38 = !DILocation(line: 13, column: 11, scope: !35) -!39 = !DILocation(line: 14, column: 20, scope: !35) -!40 = !DILocation(line: 14, column: 22, scope: !35) -!41 = !DILocation(line: 14, column: 9, scope: !35) -!42 = !DILocation(line: 16, column: 1, scope: !10) +!24 = !DILocation(line: 9, column: 13, scope: !25) +!25 = distinct !DILexicalBlock(scope: !22, file: !11, line: 8, column: 16) +!26 = !DILocation(line: 9, column: 17, scope: !25) +!27 = !DILocation(line: 9, column: 15, scope: !25) +!28 = !DILocation(line: 9, column: 11, scope: !25) +!29 = !DILocation(line: 10, column: 20, scope: !25) +!30 = !DILocation(line: 10, column: 22, scope: !25) +!31 = !DILocation(line: 10, column: 9, scope: !25) +!32 = !DILocation(line: 11, column: 5, scope: !25) +!33 = !DILocation(line: 13, column: 13, scope: !34) +!34 = distinct !DILexicalBlock(scope: !22, file: !11, line: 12, column: 10) +!35 = !DILocation(line: 13, column: 17, scope: !34) +!36 = !DILocation(line: 13, column: 15, scope: !34) +!37 = !DILocation(line: 13, column: 11, scope: !34) +!38 = !DILocation(line: 14, column: 20, scope: !34) +!39 = !DILocation(line: 14, column: 22, scope: !34) +!40 = !DILocation(line: 14, column: 9, scope: !34) +!41 = !DILocation(line: 16, 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 index 2cad90594..850788f8f 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_13-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,57 +10,53 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) %call = call i32 (...) @rand(), !dbg !18 store i32 %call, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %b, !19, !DIExpression(), !20) store i32 -2, ptr %b, align 4, !dbg !20 %0 = load i32, ptr %a, align 4, !dbg !21 %cmp = icmp sgt i32 %0, 5, !dbg !23 - br i1 %cmp, label %if.then, label %if.else, !dbg !24 + br i1 %cmp, label %if.then, label %if.else, !dbg !23 if.then: ; preds = %entry - %1 = load i32, ptr %a, align 4, !dbg !25 - %2 = load i32, ptr %b, align 4, !dbg !27 - %mul = mul nsw i32 %1, %2, !dbg !28 - store i32 %mul, ptr %b, align 4, !dbg !29 - %3 = load i32, ptr %b, align 4, !dbg !30 - %cmp1 = icmp sle i32 %3, -12, !dbg !31 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !32 - br label %if.end, !dbg !33 + %1 = load i32, ptr %a, align 4, !dbg !24 + %2 = load i32, ptr %b, align 4, !dbg !26 + %mul = mul nsw i32 %1, %2, !dbg !27 + store i32 %mul, ptr %b, align 4, !dbg !28 + %3 = load i32, ptr %b, align 4, !dbg !29 + %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 %a, align 4, !dbg !34 - %5 = load i32, ptr %b, align 4, !dbg !36 - %mul2 = mul nsw i32 %4, %5, !dbg !37 - store i32 %mul2, ptr %b, align 4, !dbg !38 - %6 = load i32, ptr %b, align 4, !dbg !39 - %cmp3 = icmp sgt i32 %6, -12, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !41 + %4 = load i32, ptr %a, align 4, !dbg !33 + %5 = load i32, ptr %b, align 4, !dbg !35 + %mul2 = mul nsw i32 %4, %5, !dbg !36 + store i32 %mul2, ptr %b, align 4, !dbg !37 + %6 = load i32, ptr %b, align 4, !dbg !38 + %cmp3 = icmp sgt i32 %6, -12, !dbg !39 + call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !40 br label %if.end if.end: ; preds = %if.else, %if.then - %7 = load i32, ptr %retval, align 4, !dbg !42 - ret i32 %7, !dbg !42 + %7 = load i32, ptr %retval, align 4, !dbg !41 + ret i32 %7, !dbg !41 } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 +declare i32 @rand(...) #1 -declare i32 @rand(...) #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "c1332baf3080510556a80cd16d49b5e4") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_13-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "c1332baf3080510556a80cd16d49b5e4") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -68,9 +64,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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_13-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c1332baf3080510556a80cd16d49b5e4") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_13-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "c1332baf3080510556a80cd16d49b5e4") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -83,22 +79,21 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !21 = !DILocation(line: 8, column: 9, scope: !22) !22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 9) !23 = !DILocation(line: 8, column: 11, scope: !22) -!24 = !DILocation(line: 8, column: 9, scope: !10) -!25 = !DILocation(line: 9, column: 13, scope: !26) -!26 = distinct !DILexicalBlock(scope: !22, file: !11, line: 8, column: 16) -!27 = !DILocation(line: 9, column: 17, scope: !26) -!28 = !DILocation(line: 9, column: 15, scope: !26) -!29 = !DILocation(line: 9, column: 11, scope: !26) -!30 = !DILocation(line: 10, column: 20, scope: !26) -!31 = !DILocation(line: 10, column: 22, scope: !26) -!32 = !DILocation(line: 10, column: 9, scope: !26) -!33 = !DILocation(line: 11, column: 5, scope: !26) -!34 = !DILocation(line: 13, column: 13, scope: !35) -!35 = distinct !DILexicalBlock(scope: !22, file: !11, line: 12, column: 10) -!36 = !DILocation(line: 13, column: 17, scope: !35) -!37 = !DILocation(line: 13, column: 15, scope: !35) -!38 = !DILocation(line: 13, column: 11, scope: !35) -!39 = !DILocation(line: 14, column: 20, scope: !35) -!40 = !DILocation(line: 14, column: 22, scope: !35) -!41 = !DILocation(line: 14, column: 9, scope: !35) -!42 = !DILocation(line: 16, column: 1, scope: !10) +!24 = !DILocation(line: 9, column: 13, scope: !25) +!25 = distinct !DILexicalBlock(scope: !22, file: !11, line: 8, column: 16) +!26 = !DILocation(line: 9, column: 17, scope: !25) +!27 = !DILocation(line: 9, column: 15, scope: !25) +!28 = !DILocation(line: 9, column: 11, scope: !25) +!29 = !DILocation(line: 10, column: 20, scope: !25) +!30 = !DILocation(line: 10, column: 22, scope: !25) +!31 = !DILocation(line: 10, column: 9, scope: !25) +!32 = !DILocation(line: 11, column: 5, scope: !25) +!33 = !DILocation(line: 13, column: 13, scope: !34) +!34 = distinct !DILexicalBlock(scope: !22, file: !11, line: 12, column: 10) +!35 = !DILocation(line: 13, column: 17, scope: !34) +!36 = !DILocation(line: 13, column: 15, scope: !34) +!37 = !DILocation(line: 13, column: 11, scope: !34) +!38 = !DILocation(line: 14, column: 20, scope: !34) +!39 = !DILocation(line: 14, column: 22, scope: !34) +!40 = !DILocation(line: 14, column: 9, scope: !34) +!41 = !DILocation(line: 16, 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 index c2fc1f223..d58550f02 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_14-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,10 +10,10 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) %call = call i32 (...) @rand(), !dbg !18 store i32 %call, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %b, !19, !DIExpression(), !20) store i32 10, ptr %b, align 4, !dbg !20 %0 = load i32, ptr %a, align 4, !dbg !21 %cmp = icmp sgt i32 %0, 0, !dbg !23 @@ -22,40 +22,36 @@ entry: land.lhs.true: ; preds = %entry %1 = load i32, ptr %a, align 4, !dbg !25 %cmp1 = icmp sle i32 %1, 5, !dbg !26 - br i1 %cmp1, label %if.then, label %if.end, !dbg !27 + br i1 %cmp1, label %if.then, label %if.end, !dbg !24 if.then: ; preds = %land.lhs.true - %2 = load i32, ptr %b, align 4, !dbg !28 - %3 = load i32, ptr %a, align 4, !dbg !30 - %div = sdiv i32 %2, %3, !dbg !31 - store i32 %div, ptr %b, align 4, !dbg !32 - %4 = load i32, ptr %b, align 4, !dbg !33 - %cmp2 = icmp sge i32 %4, 2, !dbg !34 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !35 - br label %if.end, !dbg !36 + %2 = load i32, ptr %b, align 4, !dbg !27 + %3 = load i32, ptr %a, align 4, !dbg !29 + %div = sdiv i32 %2, %3, !dbg !30 + store i32 %div, ptr %b, align 4, !dbg !31 + %4 = load i32, ptr %b, align 4, !dbg !32 + %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 !37 - ret i32 %5, !dbg !37 + %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 i32 @rand(...) #1 -declare i32 @rand(...) #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "c202c845226e38074ee5bddeffdd9365") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_14-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "c202c845226e38074ee5bddeffdd9365") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -63,9 +59,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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_14-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c202c845226e38074ee5bddeffdd9365") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_14-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "c202c845226e38074ee5bddeffdd9365") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -81,14 +77,13 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !24 = !DILocation(line: 8, column: 14, scope: !22) !25 = !DILocation(line: 8, column: 17, scope: !22) !26 = !DILocation(line: 8, column: 19, scope: !22) -!27 = !DILocation(line: 8, column: 8, scope: !10) -!28 = !DILocation(line: 9, column: 13, scope: !29) -!29 = distinct !DILexicalBlock(scope: !22, file: !11, line: 8, column: 25) -!30 = !DILocation(line: 9, column: 17, scope: !29) -!31 = !DILocation(line: 9, column: 15, scope: !29) -!32 = !DILocation(line: 9, column: 11, scope: !29) -!33 = !DILocation(line: 10, column: 20, scope: !29) -!34 = !DILocation(line: 10, column: 22, scope: !29) -!35 = !DILocation(line: 10, column: 9, scope: !29) -!36 = !DILocation(line: 11, column: 5, scope: !29) -!37 = !DILocation(line: 12, column: 1, scope: !10) +!27 = !DILocation(line: 9, column: 13, scope: !28) +!28 = distinct !DILexicalBlock(scope: !22, file: !11, line: 8, column: 25) +!29 = !DILocation(line: 9, column: 17, scope: !28) +!30 = !DILocation(line: 9, column: 15, scope: !28) +!31 = !DILocation(line: 9, column: 11, scope: !28) +!32 = !DILocation(line: 10, column: 20, scope: !28) +!33 = !DILocation(line: 10, column: 22, scope: !28) +!34 = !DILocation(line: 10, column: 9, scope: !28) +!35 = !DILocation(line: 11, column: 5, scope: !28) +!36 = !DILocation(line: 12, 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 index d04d23ec5..870130d37 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_15-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -9,49 +9,45 @@ 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 + #dbg_declare(ptr %a, !16, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !23 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 + %2 = load i32, ptr %a, align 4, !dbg !24 + %cmp1 = icmp sge i32 %2, 0, !dbg !26 + br i1 %cmp1, label %land.rhs, label %land.end, !dbg !27 land.rhs: ; preds = %if.then - %3 = load i32, ptr %a, align 4, !dbg !29 - %cmp2 = icmp slt i32 %3, 5, !dbg !30 + %3 = load i32, ptr %a, align 4, !dbg !28 + %cmp2 = icmp slt i32 %3, 5, !dbg !29 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 + %4 = phi i1 [ false, %if.then ], [ %cmp2, %land.rhs ], !dbg !30 + call void @svf_assert(i1 noundef zeroext %4), !dbg !31 + br label %if.end, !dbg !32 if.end: ; preds = %land.end, %entry - %5 = load i32, ptr %retval, align 4, !dbg !34 - ret i32 %5, !dbg !34 + %5 = load i32, ptr %retval, align 4, !dbg !33 + ret i32 %5, !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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_15-0.c", directory: "/root/testsss/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} @@ -59,9 +55,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_15-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "4c398f40db7ce5c4550842fc7798a36a") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -74,14 +70,13 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!24 = !DILocation(line: 8, column: 20, scope: !25) +!25 = distinct !DILexicalBlock(scope: !22, file: !11, line: 7, column: 17) +!26 = !DILocation(line: 8, column: 22, scope: !25) +!27 = !DILocation(line: 8, column: 27, scope: !25) +!28 = !DILocation(line: 8, column: 30, scope: !25) +!29 = !DILocation(line: 8, column: 32, scope: !25) +!30 = !DILocation(line: 0, scope: !25) +!31 = !DILocation(line: 8, column: 9, scope: !25) +!32 = !DILocation(line: 9, column: 5, scope: !25) +!33 = !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 index bdb655417..19afc039d 100644 --- 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 @@ -1,14 +1,14 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_16-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %i.addr, !17, !DIExpression(), !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 @@ -17,48 +17,44 @@ entry: %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !27 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 + %5 = load ptr, ptr %i.addr, align 8, !dbg !28 + call void @foo(ptr noundef %5), !dbg !30 + br label %if.end, !dbg !31 if.end: ; preds = %if.then, %entry - ret void, !dbg !33 + 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 !34 { +define dso_local i32 @main() #0 !dbg !33 { entry: %i = alloca i32, 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 - call void @set_value(i32 noundef %0, i32 noundef 0, i32 noundef 5), !dbg !40 - call void @foo(ptr noundef %i), !dbg !41 - %1 = load i32, ptr %i, align 4, !dbg !42 - %cmp = icmp sge i32 %1, 0, !dbg !43 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !44 - ret i32 0, !dbg !45 + #dbg_declare(ptr %i, !36, !DIExpression(), !37) + %0 = load i32, ptr %i, align 4, !dbg !38 + call void @set_value(i32 noundef %0, i32 noundef 0, i32 noundef 5), !dbg !39 + call void @foo(ptr noundef %i), !dbg !40 + %1 = load i32, ptr %i, align 4, !dbg !41 + %cmp = icmp sge i32 %1, 0, !dbg !42 + call void @svf_assert(i1 noundef zeroext %cmp), !dbg !43 + ret i32 0, !dbg !44 } -declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #2 +declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #1 -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "694547a3cbbe4ce2f5e2f461b4ede569") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_16-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "694547a3cbbe4ce2f5e2f461b4ede569") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -66,9 +62,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !10 = distinct !DISubprogram(name: "foo", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, 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: "694547a3cbbe4ce2f5e2f461b4ede569") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_16-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "694547a3cbbe4ce2f5e2f461b4ede569") !12 = !DISubroutineType(types: !13) !13 = !{null, !14} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -85,21 +81,20 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 9, column: 8) !26 = !DILocation(line: 9, column: 8, scope: !25) !27 = !DILocation(line: 9, column: 11, scope: !25) -!28 = !DILocation(line: 9, column: 8, scope: !10) -!29 = !DILocation(line: 10, column: 13, scope: !30) -!30 = distinct !DILexicalBlock(scope: !25, file: !11, line: 9, column: 17) -!31 = !DILocation(line: 10, column: 9, scope: !30) -!32 = !DILocation(line: 11, column: 5, scope: !30) -!33 = !DILocation(line: 12, column: 1, scope: !10) -!34 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 14, type: !35, scopeLine: 14, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!35 = !DISubroutineType(types: !36) -!36 = !{!15} -!37 = !DILocalVariable(name: "i", scope: !34, file: !11, line: 15, type: !15) -!38 = !DILocation(line: 15, column: 9, scope: !34) -!39 = !DILocation(line: 16, column: 15, scope: !34) -!40 = !DILocation(line: 16, column: 5, scope: !34) -!41 = !DILocation(line: 17, column: 5, scope: !34) -!42 = !DILocation(line: 18, column: 16, scope: !34) -!43 = !DILocation(line: 18, column: 18, scope: !34) -!44 = !DILocation(line: 18, column: 5, scope: !34) -!45 = !DILocation(line: 19, column: 1, scope: !34) +!28 = !DILocation(line: 10, column: 13, scope: !29) +!29 = distinct !DILexicalBlock(scope: !25, file: !11, line: 9, column: 17) +!30 = !DILocation(line: 10, column: 9, scope: !29) +!31 = !DILocation(line: 11, column: 5, scope: !29) +!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: "i", scope: !33, file: !11, line: 15, type: !15) +!37 = !DILocation(line: 15, column: 9, scope: !33) +!38 = !DILocation(line: 16, column: 15, scope: !33) +!39 = !DILocation(line: 16, column: 5, scope: !33) +!40 = !DILocation(line: 17, column: 5, scope: !33) +!41 = !DILocation(line: 18, column: 16, scope: !33) +!42 = !DILocation(line: 18, column: 18, scope: !33) +!43 = !DILocation(line: 18, column: 5, scope: !33) +!44 = !DILocation(line: 19, column: 1, scope: !33) 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 index 9e3a0a670..f83717224 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_19-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @foo(ptr noundef %i) #0 !dbg !10 { @@ -9,8 +9,8 @@ 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 + #dbg_declare(ptr %i.addr, !17, !DIExpression(), !18) + #dbg_declare(ptr %a, !19, !DIExpression(), !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 @@ -44,49 +44,45 @@ sw.epilog: ; preds = %sw.default, %sw.bb1 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 + #dbg_declare(ptr %i, !44, !DIExpression(), !45) %0 = load i32, ptr %i, align 4, !dbg !46 call void @set_value(i32 noundef %0, i32 noundef 1, i32 noundef 1), !dbg !47 %1 = load i32, ptr %i, align 4, !dbg !48 %cmp = icmp sge i32 %1, 0, !dbg !50 - br i1 %cmp, label %if.then, label %if.end, !dbg !51 + br i1 %cmp, label %if.then, label %if.end, !dbg !50 if.then: ; preds = %entry - call void @foo(ptr noundef %i), !dbg !52 - %2 = load i32, ptr %i, align 4, !dbg !54 - %rem = srem i32 %2, 2, !dbg !55 - %cmp1 = icmp eq i32 %rem, 0, !dbg !56 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !57 - br label %if.end, !dbg !58 + call void @foo(ptr noundef %i), !dbg !51 + %2 = load i32, ptr %i, align 4, !dbg !53 + %rem = srem i32 %2, 2, !dbg !54 + %cmp1 = icmp eq i32 %rem, 0, !dbg !55 + call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !56 + br label %if.end, !dbg !57 if.end: ; preds = %if.then, %entry - %3 = load i32, ptr %retval, align 4, !dbg !59 - ret i32 %3, !dbg !59 + %3 = load i32, ptr %retval, align 4, !dbg !58 + ret i32 %3, !dbg !58 } -declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #2 +declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #1 -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "eef7b67c0b1589636664d75c4dc1f3fc") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_19-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "eef7b67c0b1589636664d75c4dc1f3fc") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -94,9 +90,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !10 = distinct !DISubprogram(name: "foo", scope: !11, file: !11, line: 6, type: !12, scopeLine: 6, 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: "eef7b67c0b1589636664d75c4dc1f3fc") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_19-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "eef7b67c0b1589636664d75c4dc1f3fc") !12 = !DISubroutineType(types: !13) !13 = !{null, !14} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -136,12 +132,11 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !48 = !DILocation(line: 24, column: 9, scope: !49) !49 = distinct !DILexicalBlock(scope: !41, file: !11, line: 24, column: 9) !50 = !DILocation(line: 24, column: 11, scope: !49) -!51 = !DILocation(line: 24, column: 9, scope: !41) -!52 = !DILocation(line: 25, column: 9, scope: !53) -!53 = distinct !DILexicalBlock(scope: !49, file: !11, line: 24, column: 17) -!54 = !DILocation(line: 26, column: 20, scope: !53) -!55 = !DILocation(line: 26, column: 22, scope: !53) -!56 = !DILocation(line: 26, column: 26, scope: !53) -!57 = !DILocation(line: 26, column: 9, scope: !53) -!58 = !DILocation(line: 27, column: 5, scope: !53) -!59 = !DILocation(line: 28, column: 1, scope: !41) +!51 = !DILocation(line: 25, column: 9, scope: !52) +!52 = distinct !DILexicalBlock(scope: !49, file: !11, line: 24, column: 17) +!53 = !DILocation(line: 26, column: 20, scope: !52) +!54 = !DILocation(line: 26, column: 22, scope: !52) +!55 = !DILocation(line: 26, column: 26, scope: !52) +!56 = !DILocation(line: 26, column: 9, scope: !52) +!57 = !DILocation(line: 27, column: 5, scope: !52) +!58 = !DILocation(line: 28, 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 index 40fe40abc..d4076a825 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_2-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [3 x i8] c"%d\00", align 1, !dbg !0 @.str.1 = private unnamed_addr constant [3 x i8] c"b1\00", align 1, !dbg !7 @@ -14,55 +14,51 @@ entry: %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 !27, metadata !DIExpression()), !dbg !28 - call void @llvm.dbg.declare(metadata ptr %b, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %a, !27, !DIExpression(), !28) + #dbg_declare(ptr %b, !29, !DIExpression(), !30) store i32 1, ptr %b, align 4, !dbg !30 %call = call i32 (ptr, ...) @scanf(ptr noundef @.str, ptr noundef %a), !dbg !31 %0 = load i32, ptr %a, align 4, !dbg !32 %cmp = icmp sgt i32 %0, 5, !dbg !34 - br i1 %cmp, label %if.then, label %if.else, !dbg !35 + br i1 %cmp, label %if.then, label %if.else, !dbg !34 if.then: ; preds = %entry - %1 = load i32, ptr %a, align 4, !dbg !36 - %2 = load i32, ptr %b, align 4, !dbg !38 - %add = add nsw i32 %1, %2, !dbg !39 - store i32 %add, ptr %b, align 4, !dbg !40 - %3 = load i32, ptr %b, align 4, !dbg !41 - call void @svf_print(i32 noundef %3, ptr noundef @.str.1), !dbg !42 - %4 = load i32, ptr %b, align 4, !dbg !43 - %cmp1 = icmp sgt i32 %4, 6, !dbg !44 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !45 - br label %if.end, !dbg !46 + %1 = load i32, ptr %a, align 4, !dbg !35 + %2 = load i32, ptr %b, align 4, !dbg !37 + %add = add nsw i32 %1, %2, !dbg !38 + store i32 %add, ptr %b, align 4, !dbg !39 + %3 = load i32, ptr %b, align 4, !dbg !40 + call void @svf_print(i32 noundef %3, ptr noundef @.str.1), !dbg !41 + %4 = load i32, ptr %b, align 4, !dbg !42 + %cmp1 = icmp sgt i32 %4, 6, !dbg !43 + call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !44 + br label %if.end, !dbg !45 if.else: ; preds = %entry - %5 = load i32, ptr %a, align 4, !dbg !47 - %6 = load i32, ptr %b, align 4, !dbg !49 - %add2 = add nsw i32 %5, %6, !dbg !50 - store i32 %add2, ptr %b, align 4, !dbg !51 - %7 = load i32, ptr %b, align 4, !dbg !52 - call void @svf_print(i32 noundef %7, ptr noundef @.str.2), !dbg !53 - %8 = load i32, ptr %b, align 4, !dbg !54 - %cmp3 = icmp sle i32 %8, 6, !dbg !55 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !56 + %5 = load i32, ptr %a, align 4, !dbg !46 + %6 = load i32, ptr %b, align 4, !dbg !48 + %add2 = add nsw i32 %5, %6, !dbg !49 + store i32 %add2, ptr %b, align 4, !dbg !50 + %7 = load i32, ptr %b, align 4, !dbg !51 + call void @svf_print(i32 noundef %7, ptr noundef @.str.2), !dbg !52 + %8 = load i32, ptr %b, align 4, !dbg !53 + %cmp3 = icmp sle i32 %8, 6, !dbg !54 + call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !55 br label %if.end if.end: ; preds = %if.else, %if.then - %9 = load i32, ptr %retval, align 4, !dbg !57 - ret i32 %9, !dbg !57 + %9 = load i32, ptr %retval, align 4, !dbg !56 + ret i32 %9, !dbg !56 } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 +declare i32 @scanf(ptr noundef, ...) #1 -declare i32 @scanf(ptr noundef, ...) #2 +declare void @svf_print(i32 noundef, ptr noundef) #1 -declare void @svf_print(i32 noundef, ptr noundef) #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.dbg.cu = !{!11} !llvm.module.flags = !{!14, !15, !16, !17, !18, !19, !20} @@ -70,7 +66,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 9, 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: "fb4ded21f5bf3cb3e533415eaf559a1b") +!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fb4ded21f5bf3cb3e533415eaf559a1b") !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} @@ -79,8 +75,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 12, type: !3, isLocal: true, isDefinition: true) !9 = !DIGlobalVariableExpression(var: !10, expr: !DIExpression()) !10 = distinct !DIGlobalVariable(scope: null, file: !2, line: 17, type: !3, isLocal: true, isDefinition: true) -!11 = distinct !DICompileUnit(language: DW_LANG_C11, file: !12, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !13, splitDebugInlining: false, nameTableKind: None) -!12 = !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: "fb4ded21f5bf3cb3e533415eaf559a1b") +!11 = distinct !DICompileUnit(language: DW_LANG_C11, file: !12, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !13, splitDebugInlining: false, nameTableKind: None) +!12 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_2-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fb4ded21f5bf3cb3e533415eaf559a1b") !13 = !{!0, !7, !9} !14 = !{i32 7, !"Dwarf Version", i32 5} !15 = !{i32 2, !"Debug Info Version", i32 3} @@ -89,7 +85,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !18 = !{i32 7, !"PIE Level", i32 2} !19 = !{i32 7, !"uwtable", i32 2} !20 = !{i32 7, !"frame-pointer", i32 2} -!21 = !{!"clang version 16.0.0"} +!21 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !22 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 5, type: !23, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !26) !23 = !DISubroutineType(types: !24) !24 = !{!25} @@ -103,26 +99,25 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !32 = !DILocation(line: 10, column: 9, scope: !33) !33 = distinct !DILexicalBlock(scope: !22, file: !2, line: 10, column: 9) !34 = !DILocation(line: 10, column: 11, scope: !33) -!35 = !DILocation(line: 10, column: 9, scope: !22) -!36 = !DILocation(line: 11, column: 13, scope: !37) -!37 = distinct !DILexicalBlock(scope: !33, file: !2, line: 10, column: 16) -!38 = !DILocation(line: 11, column: 17, scope: !37) -!39 = !DILocation(line: 11, column: 15, scope: !37) -!40 = !DILocation(line: 11, column: 11, scope: !37) -!41 = !DILocation(line: 12, column: 19, scope: !37) -!42 = !DILocation(line: 12, column: 9, scope: !37) -!43 = !DILocation(line: 13, column: 20, scope: !37) -!44 = !DILocation(line: 13, column: 22, scope: !37) -!45 = !DILocation(line: 13, column: 9, scope: !37) -!46 = !DILocation(line: 14, column: 5, scope: !37) -!47 = !DILocation(line: 16, column: 13, scope: !48) -!48 = distinct !DILexicalBlock(scope: !33, file: !2, line: 15, column: 10) -!49 = !DILocation(line: 16, column: 17, scope: !48) -!50 = !DILocation(line: 16, column: 15, scope: !48) -!51 = !DILocation(line: 16, column: 11, scope: !48) -!52 = !DILocation(line: 17, column: 19, scope: !48) -!53 = !DILocation(line: 17, column: 9, scope: !48) -!54 = !DILocation(line: 18, column: 20, scope: !48) -!55 = !DILocation(line: 18, column: 22, scope: !48) -!56 = !DILocation(line: 18, column: 9, scope: !48) -!57 = !DILocation(line: 20, column: 1, scope: !22) +!35 = !DILocation(line: 11, column: 13, scope: !36) +!36 = distinct !DILexicalBlock(scope: !33, file: !2, line: 10, column: 16) +!37 = !DILocation(line: 11, column: 17, scope: !36) +!38 = !DILocation(line: 11, column: 15, scope: !36) +!39 = !DILocation(line: 11, column: 11, scope: !36) +!40 = !DILocation(line: 12, column: 19, scope: !36) +!41 = !DILocation(line: 12, column: 9, scope: !36) +!42 = !DILocation(line: 13, column: 20, scope: !36) +!43 = !DILocation(line: 13, column: 22, scope: !36) +!44 = !DILocation(line: 13, column: 9, scope: !36) +!45 = !DILocation(line: 14, column: 5, scope: !36) +!46 = !DILocation(line: 16, column: 13, scope: !47) +!47 = distinct !DILexicalBlock(scope: !33, file: !2, line: 15, column: 10) +!48 = !DILocation(line: 16, column: 17, scope: !47) +!49 = !DILocation(line: 16, column: 15, scope: !47) +!50 = !DILocation(line: 16, column: 11, scope: !47) +!51 = !DILocation(line: 17, column: 19, scope: !47) +!52 = !DILocation(line: 17, column: 9, scope: !47) +!53 = !DILocation(line: 18, column: 20, scope: !47) +!54 = !DILocation(line: 18, column: 22, scope: !47) +!55 = !DILocation(line: 18, column: 9, scope: !47) +!56 = !DILocation(line: 20, column: 1, scope: !22) 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 index 29693c6a9..493dbea16 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_20-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [2 x i8] c"a\00", align 1, !dbg !0 @@ -14,12 +14,12 @@ entry: %a_as_int = alloca i32, align 4 store i32 0, ptr %retval, align 4 %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !24 - call void @srand(i32 noundef %call) #4, !dbg !25 - call void @llvm.dbg.declare(metadata ptr %r, metadata !26, metadata !DIExpression()), !dbg !27 - %call1 = call i32 @rand() #4, !dbg !28 + call void @srand(i32 noundef %call) #3, !dbg !25 + #dbg_declare(ptr %r, !26, !DIExpression(), !27) + %call1 = call i32 @rand() #3, !dbg !28 %rem = srem i32 %call1, 128, !dbg !29 store i32 %rem, ptr %r, align 4, !dbg !27 - call void @llvm.dbg.declare(metadata ptr %a, metadata !30, metadata !DIExpression()), !dbg !31 + #dbg_declare(ptr %a, !30, !DIExpression(), !31) %0 = load i32, ptr %r, align 4, !dbg !32 %conv = trunc i32 %0 to i8, !dbg !33 store i8 %conv, ptr %a, align 1, !dbg !31 @@ -32,32 +32,32 @@ land.lhs.true: ; preds = %entry %2 = load i8, ptr %a, align 1, !dbg !38 %conv4 = sext i8 %2 to i32, !dbg !38 %cmp5 = icmp sle i32 %conv4, 122, !dbg !39 - br i1 %cmp5, label %if.then, label %if.end, !dbg !40 + br i1 %cmp5, label %if.then, label %if.end, !dbg !37 if.then: ; preds = %land.lhs.true - call void @llvm.dbg.declare(metadata ptr %a_as_int, metadata !41, metadata !DIExpression()), !dbg !43 - %3 = load i8, ptr %a, align 1, !dbg !44 - %conv7 = sext i8 %3 to i32, !dbg !45 - store i32 %conv7, ptr %a_as_int, align 4, !dbg !43 - %4 = load i32, ptr %a_as_int, align 4, !dbg !46 - call void @svf_print(i32 noundef %4, ptr noundef @.str), !dbg !47 - %5 = load i32, ptr %a_as_int, align 4, !dbg !48 - %cmp8 = icmp sge i32 %5, 97, !dbg !49 - br i1 %cmp8, label %land.rhs, label %land.end, !dbg !50 + #dbg_declare(ptr %a_as_int, !40, !DIExpression(), !42) + %3 = load i8, ptr %a, align 1, !dbg !43 + %conv7 = sext i8 %3 to i32, !dbg !44 + store i32 %conv7, ptr %a_as_int, align 4, !dbg !42 + %4 = load i32, ptr %a_as_int, align 4, !dbg !45 + call void @svf_print(i32 noundef %4, ptr noundef @.str), !dbg !46 + %5 = load i32, ptr %a_as_int, align 4, !dbg !47 + %cmp8 = icmp sge i32 %5, 97, !dbg !48 + br i1 %cmp8, label %land.rhs, label %land.end, !dbg !49 land.rhs: ; preds = %if.then - %6 = load i32, ptr %a_as_int, align 4, !dbg !51 - %cmp10 = icmp sle i32 %6, 122, !dbg !52 + %6 = load i32, ptr %a_as_int, align 4, !dbg !50 + %cmp10 = icmp sle i32 %6, 122, !dbg !51 br label %land.end land.end: ; preds = %land.rhs, %if.then - %7 = phi i1 [ false, %if.then ], [ %cmp10, %land.rhs ], !dbg !53 - call void @svf_assert(i1 noundef zeroext %7), !dbg !54 - br label %if.end, !dbg !55 + %7 = phi i1 [ false, %if.then ], [ %cmp10, %land.rhs ], !dbg !52 + call void @svf_assert(i1 noundef zeroext %7), !dbg !53 + br label %if.end, !dbg !54 if.end: ; preds = %land.end, %land.lhs.true, %entry - %8 = load i32, ptr %retval, align 4, !dbg !56 - ret i32 %8, !dbg !56 + %8 = load i32, ptr %retval, align 4, !dbg !55 + ret i32 %8, !dbg !55 } ; Function Attrs: nounwind @@ -65,9 +65,6 @@ 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 @@ -75,11 +72,10 @@ 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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} @@ -87,13 +83,13 @@ attributes #4 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 14, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_20-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2b67bdcd5e8206800466010a1aafe69e") +!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_20-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "2b67bdcd5e8206800466010a1aafe69e") !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 = 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/INTERVAL_test_20-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2b67bdcd5e8206800466010a1aafe69e") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_20-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "2b67bdcd5e8206800466010a1aafe69e") !9 = !{!4, !10} !10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) !11 = !{!0} @@ -104,7 +100,7 @@ attributes #4 = { nounwind } !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"} +!19 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !20 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 8, type: !21, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !23) !21 = !DISubroutineType(types: !22) !22 = !{!10} @@ -125,20 +121,19 @@ attributes #4 = { nounwind } !37 = !DILocation(line: 12, column: 18, scope: !35) !38 = !DILocation(line: 12, column: 21, scope: !35) !39 = !DILocation(line: 12, column: 23, scope: !35) -!40 = !DILocation(line: 12, column: 9, scope: !20) -!41 = !DILocalVariable(name: "a_as_int", scope: !42, file: !2, line: 13, type: !10) -!42 = distinct !DILexicalBlock(scope: !35, file: !2, line: 12, column: 31) -!43 = !DILocation(line: 13, column: 13, scope: !42) -!44 = !DILocation(line: 13, column: 29, scope: !42) -!45 = !DILocation(line: 13, column: 24, scope: !42) -!46 = !DILocation(line: 14, column: 19, scope: !42) -!47 = !DILocation(line: 14, column: 9, scope: !42) -!48 = !DILocation(line: 15, column: 20, scope: !42) -!49 = !DILocation(line: 15, column: 29, scope: !42) -!50 = !DILocation(line: 15, column: 35, scope: !42) -!51 = !DILocation(line: 15, column: 38, scope: !42) -!52 = !DILocation(line: 15, column: 47, scope: !42) -!53 = !DILocation(line: 0, scope: !42) -!54 = !DILocation(line: 15, column: 9, scope: !42) -!55 = !DILocation(line: 16, column: 5, scope: !42) -!56 = !DILocation(line: 17, column: 1, scope: !20) +!40 = !DILocalVariable(name: "a_as_int", scope: !41, file: !2, line: 13, type: !10) +!41 = distinct !DILexicalBlock(scope: !35, file: !2, line: 12, column: 31) +!42 = !DILocation(line: 13, column: 13, scope: !41) +!43 = !DILocation(line: 13, column: 29, scope: !41) +!44 = !DILocation(line: 13, column: 24, scope: !41) +!45 = !DILocation(line: 14, column: 19, scope: !41) +!46 = !DILocation(line: 14, column: 9, scope: !41) +!47 = !DILocation(line: 15, column: 20, scope: !41) +!48 = !DILocation(line: 15, column: 29, scope: !41) +!49 = !DILocation(line: 15, column: 35, scope: !41) +!50 = !DILocation(line: 15, column: 38, scope: !41) +!51 = !DILocation(line: 15, column: 47, scope: !41) +!52 = !DILocation(line: 0, scope: !41) +!53 = !DILocation(line: 15, column: 9, scope: !41) +!54 = !DILocation(line: 16, column: 5, scope: !41) +!55 = !DILocation(line: 17, column: 1, scope: !20) 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 index b126348bf..bdb424ec2 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_36-1-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @__const.main.ar = private unnamed_addr constant [4 x i32] [i32 1, i32 2, i32 3, i32 5], align 16 @@ -13,13 +13,13 @@ entry: %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 + #dbg_declare(ptr %i, !16, !DIExpression(), !18) + %call = call noalias ptr @malloc(i64 noundef 16) #5, !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 + #dbg_declare(ptr %ar, !20, !DIExpression(), !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 + #dbg_declare(ptr %a, !25, !DIExpression(), !26) + %call1 = call i32 @rand() #6, !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 @@ -31,58 +31,54 @@ entry: %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 + br i1 %cmp, label %if.then, label %if.else, !dbg !35 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 + %4 = load ptr, ptr %i, align 8, !dbg !36 + %arrayidx3 = getelementptr inbounds i32, ptr %4, i64 3, !dbg !36 + %5 = load i32, ptr %arrayidx3, align 4, !dbg !36 + %cmp4 = icmp sgt i32 %5, 5, !dbg !38 + call void @svf_assert(i1 noundef zeroext %cmp4), !dbg !39 + br label %if.end, !dbg !40 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 + %6 = load ptr, ptr %i, align 8, !dbg !41 + %arrayidx5 = getelementptr inbounds i32, ptr %6, i64 3, !dbg !41 + %7 = load i32, ptr %arrayidx5, align 4, !dbg !41 + %cmp6 = icmp sle i32 %7, 5, !dbg !43 + call void @svf_assert(i1 noundef zeroext %cmp6), !dbg !44 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 + %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: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 +declare noalias 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) #3 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 ; Function Attrs: nounwind -declare i32 @rand() #4 +declare i32 @rand() #3 -declare void @svf_assert(i1 noundef zeroext) #5 +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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind allocsize(0) } +attributes #6 = { 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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_36-1-0.c", directory: "/root/testsss/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} @@ -90,9 +86,9 @@ attributes #7 = { nounwind } !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_36-1-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "3f7567881349e7f5ed0cc5b27e002f64") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -117,14 +113,13 @@ attributes #7 = { nounwind } !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) +!36 = !DILocation(line: 15, column: 20, scope: !37) +!37 = distinct !DILexicalBlock(scope: !34, file: !11, line: 14, column: 19) +!38 = !DILocation(line: 15, column: 25, scope: !37) +!39 = !DILocation(line: 15, column: 9, scope: !37) +!40 = !DILocation(line: 16, column: 5, scope: !37) +!41 = !DILocation(line: 18, column: 20, scope: !42) +!42 = distinct !DILexicalBlock(scope: !34, file: !11, line: 17, column: 10) +!43 = !DILocation(line: 18, column: 25, scope: !42) +!44 = !DILocation(line: 18, column: 9, scope: !42) +!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 index cfa87355f..8e1c6b62d 100644 --- 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 @@ -1,18 +1,18 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_49-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %i.addr, !17, !DIExpression(), !18) br label %LOOP, !dbg !19 LOOP: ; preds = %if.then, %entry - call void @llvm.dbg.label(metadata !20), !dbg !21 + #dbg_label(!20, !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 @@ -21,45 +21,38 @@ LOOP: ; preds = %if.then, %entry %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !30 if.then: ; preds = %LOOP - br label %LOOP, !dbg !32 + br label %LOOP, !dbg !31 if.end: ; preds = %LOOP - ret void, !dbg !34 + 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: 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 { +define dso_local i32 @main() #0 !dbg !34 { 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 + #dbg_declare(ptr %i, !37, !DIExpression(), !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 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_49-0.c", directory: "/root/testsss/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} @@ -67,9 +60,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_49-0.c", directory: "/root/testsss/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) @@ -89,17 +82,16 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!31 = !DILocation(line: 9, column: 9, scope: !32) +!32 = distinct !DILexicalBlock(scope: !28, file: !11, line: 8, column: 17) +!33 = !DILocation(line: 11, column: 1, scope: !10) +!34 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 13, type: !35, scopeLine: 13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!35 = !DISubroutineType(types: !36) +!36 = !{!15} +!37 = !DILocalVariable(name: "i", scope: !34, file: !11, line: 14, type: !15) +!38 = !DILocation(line: 14, column: 9, scope: !34) +!39 = !DILocation(line: 15, column: 5, scope: !34) +!40 = !DILocation(line: 16, column: 16, scope: !34) +!41 = !DILocation(line: 16, column: 18, scope: !34) +!42 = !DILocation(line: 16, column: 5, scope: !34) +!43 = !DILocation(line: 17, column: 1, scope: !34) 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 index 6c5f65f12..d4698cbf2 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_58-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,81 +15,77 @@ entry: %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 + #dbg_declare(ptr %a, !33, !DIExpression(), !34) + #dbg_declare(ptr %b, !35, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.end7, !dbg !39 if.then: ; preds = %entry - br label %do.body, !dbg !41 + br label %do.body, !dbg !40 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 + %1 = load i32, ptr %a, align 4, !dbg !42 + %call = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %1), !dbg !44 + #dbg_declare(ptr %i, !45, !DIExpression(), !47) + %2 = load i32, ptr %b, align 4, !dbg !48 + store i32 %2, ptr %i, align 4, !dbg !47 + br label %for.cond, !dbg !49 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 + %3 = load i32, ptr %i, align 4, !dbg !50 + %4 = load i32, ptr %a, align 4, !dbg !52 + %cmp1 = icmp sgt i32 %3, %4, !dbg !53 + br i1 %cmp1, label %for.body, label %for.end, !dbg !54 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 + %5 = load i32, ptr %i, align 4, !dbg !55 + %rem = srem i32 %5, 2, !dbg !58 + %cmp2 = icmp eq i32 %rem, 0, !dbg !59 + br i1 %cmp2, label %if.then3, label %if.else, !dbg !59 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 + %6 = load i32, ptr %i, align 4, !dbg !60 + %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %6), !dbg !62 + br label %if.end, !dbg !63 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 + %7 = load i32, ptr %i, align 4, !dbg !64 + %call5 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %7), !dbg !66 br label %if.end if.end: ; preds = %if.else, %if.then3 - br label %for.inc, !dbg !69 + br label %for.inc, !dbg !67 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 + %8 = load i32, ptr %i, align 4, !dbg !68 + %dec = add nsw i32 %8, -1, !dbg !68 + store i32 %dec, ptr %i, align 4, !dbg !68 + br label %for.cond, !dbg !69, !llvm.loop !70 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 + %9 = load i32, ptr %a, align 4, !dbg !73 + %dec6 = add nsw i32 %9, -1, !dbg !73 + store i32 %dec6, ptr %a, align 4, !dbg !73 + br label %do.cond, !dbg !74 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 + %10 = load i32, ptr %a, align 4, !dbg !75 + %tobool = icmp ne i32 %10, 0, !dbg !74 + br i1 %tobool, label %do.body, label %do.end, !dbg !74, !llvm.loop !76 do.end: ; preds = %do.cond - br label %if.end7, !dbg !80 + br label %if.end7, !dbg !78 if.end7: ; preds = %do.end, %entry - %11 = load i32, ptr %retval, align 4, !dbg !81 - ret i32 %11, !dbg !81 + %11 = load i32, ptr %retval, align 4, !dbg !79 + ret i32 %11, !dbg !79 } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 +declare i32 @printf(ptr noundef, ...) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.dbg.cu = !{!17} !llvm.module.flags = !{!20, !21, !22, !23, !24, !25, !26} @@ -97,7 +93,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_58-0.c", directory: "/root/testsss/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} @@ -112,8 +108,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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") +!17 = distinct !DICompileUnit(language: DW_LANG_C11, file: !18, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) +!18 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_58-0.c", directory: "/root/testsss/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} @@ -122,7 +118,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!27 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -135,45 +131,43 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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) +!40 = !DILocation(line: 12, column: 3, scope: !41) +!41 = distinct !DILexicalBlock(scope: !38, file: !2, line: 11, column: 13) +!42 = !DILocation(line: 13, column: 22, scope: !43) +!43 = distinct !DILexicalBlock(scope: !41, file: !2, line: 12, column: 6) +!44 = !DILocation(line: 13, column: 7, scope: !43) +!45 = !DILocalVariable(name: "i", scope: !46, file: !2, line: 14, type: !31) +!46 = distinct !DILexicalBlock(scope: !43, file: !2, line: 14, column: 4) +!47 = !DILocation(line: 14, column: 12, scope: !46) +!48 = !DILocation(line: 14, column: 16, scope: !46) +!49 = !DILocation(line: 14, column: 8, scope: !46) +!50 = !DILocation(line: 14, column: 19, scope: !51) +!51 = distinct !DILexicalBlock(scope: !46, file: !2, line: 14, column: 4) +!52 = !DILocation(line: 14, column: 23, scope: !51) +!53 = !DILocation(line: 14, column: 21, scope: !51) +!54 = !DILocation(line: 14, column: 4, scope: !46) +!55 = !DILocation(line: 15, column: 8, scope: !56) +!56 = distinct !DILexicalBlock(scope: !57, file: !2, line: 15, column: 8) +!57 = distinct !DILexicalBlock(scope: !51, file: !2, line: 14, column: 31) +!58 = !DILocation(line: 15, column: 10, scope: !56) +!59 = !DILocation(line: 15, column: 14, scope: !56) +!60 = !DILocation(line: 16, column: 29, scope: !61) +!61 = distinct !DILexicalBlock(scope: !56, file: !2, line: 15, column: 20) +!62 = !DILocation(line: 16, column: 6, scope: !61) +!63 = !DILocation(line: 17, column: 5, scope: !61) +!64 = !DILocation(line: 19, column: 28, scope: !65) +!65 = distinct !DILexicalBlock(scope: !56, file: !2, line: 18, column: 10) +!66 = !DILocation(line: 19, column: 6, scope: !65) +!67 = !DILocation(line: 21, column: 4, scope: !57) +!68 = !DILocation(line: 14, column: 27, scope: !51) +!69 = !DILocation(line: 14, column: 4, scope: !51) +!70 = distinct !{!70, !54, !71, !72} +!71 = !DILocation(line: 21, column: 4, scope: !46) +!72 = !{!"llvm.loop.mustprogress"} +!73 = !DILocation(line: 22, column: 5, scope: !43) +!74 = !DILocation(line: 23, column: 3, scope: !43) +!75 = !DILocation(line: 23, column: 11, scope: !41) +!76 = distinct !{!76, !40, !77, !72} +!77 = !DILocation(line: 23, column: 12, scope: !41) +!78 = !DILocation(line: 24, column: 2, scope: !41) +!79 = !DILocation(line: 25, column: 1, scope: !28) 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 index 70247f265..716e6adb7 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_6-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -9,7 +9,7 @@ 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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) store i32 0, ptr %a, align 4, !dbg !17 br label %while.cond, !dbg !18 @@ -32,21 +32,17 @@ while.end: ; preds = %while.cond 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_6-0.c", directory: "/root/testsss/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} @@ -54,9 +50,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_6-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "d282f6036e18c06d8db4a9683d5f4fca") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 53fb333f8..36ec30928 100644 --- 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 @@ -1,14 +1,14 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_64-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %a.addr, !17, !DIExpression(), !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 @@ -17,116 +17,109 @@ entry: 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 + #dbg_declare(ptr %a.addr, !28, !DIExpression(), !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 + br i1 %tobool, label %if.then, label %if.end, !dbg !31 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 + %2 = load i32, ptr %a.addr, align 4, !dbg !33 + %call = call i32 @recursive(i32 noundef %2), !dbg !35 + store i32 %call, ptr %a.addr, align 4, !dbg !36 + br label %if.end, !dbg !37 if.end: ; preds = %if.then, %entry - %3 = load i32, ptr %a.addr, align 4, !dbg !39 - ret i32 %3, !dbg !40 + %3 = load i32, ptr %a.addr, align 4, !dbg !38 + ret i32 %3, !dbg !39 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !41 { +define dso_local i32 @main() #0 !dbg !40 { 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 + #dbg_declare(ptr %a, !43, !DIExpression(), !44) + br label %LOOP, !dbg !45 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 + #dbg_label(!46, !47) + %0 = load i32, ptr %a, align 4, !dbg !48 + %cmp = icmp sgt i32 %0, 5, !dbg !50 + br i1 %cmp, label %if.then, label %if.else, !dbg !50 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 + %1 = load i32, ptr %a, align 4, !dbg !51 + %dec = add nsw i32 %1, -1, !dbg !51 + store i32 %dec, ptr %a, align 4, !dbg !51 + br label %if.end3, !dbg !53 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 + %2 = load i32, ptr %a, align 4, !dbg !54 + %cmp1 = icmp slt i32 %2, 5, !dbg !56 + br i1 %cmp1, label %if.then2, label %if.end, !dbg !56 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 + %3 = load i32, ptr %a, align 4, !dbg !57 + %inc = add nsw i32 %3, 1, !dbg !57 + store i32 %inc, ptr %a, align 4, !dbg !57 + br label %if.end, !dbg !59 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 + %4 = load i32, ptr %a, align 4, !dbg !60 + %cmp4 = icmp ne i32 %4, 5, !dbg !62 + br i1 %cmp4, label %if.then5, label %if.else6, !dbg !62 if.then5: ; preds = %if.end3 - br label %LOOP, !dbg !67 + br label %LOOP, !dbg !63 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 + %5 = load i32, ptr %a, align 4, !dbg !65 + %call = call i32 @recursive(i32 noundef %5), !dbg !67 + store i32 %call, ptr %a, align 4, !dbg !68 br label %if.end7 if.end7: ; preds = %if.else6 - br label %while.body, !dbg !73 + br label %while.body, !dbg !69 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 + call void @increment(ptr noundef %a), !dbg !70 + %6 = load i32, ptr %a, align 4, !dbg !72 + %cmp8 = icmp eq i32 %6, 10, !dbg !74 + br i1 %cmp8, label %if.then9, label %if.end10, !dbg !74 if.then9: ; preds = %while.body - call void @exit(i32 noundef 0) #3, !dbg !80 - unreachable, !dbg !80 + call void @exit(i32 noundef 0) #2, !dbg !75 + unreachable, !dbg !75 if.end10: ; preds = %while.body - br label %while.body, !dbg !73, !llvm.loop !82 + br label %while.body, !dbg !69, !llvm.loop !77 } -; 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 +declare void @exit(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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { 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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_64-0.c", directory: "/root/testsss/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} @@ -134,9 +127,9 @@ attributes #3 = { noreturn nounwind } !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_64-0.c", directory: "/root/testsss/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) @@ -158,54 +151,49 @@ attributes #3 = { noreturn nounwind } !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) +!33 = !DILocation(line: 16, column: 17, scope: !34) +!34 = distinct !DILexicalBlock(scope: !32, file: !11, line: 15, column: 8) +!35 = !DILocation(line: 16, column: 7, scope: !34) +!36 = !DILocation(line: 16, column: 5, scope: !34) +!37 = !DILocation(line: 17, column: 2, scope: !34) +!38 = !DILocation(line: 18, column: 9, scope: !25) +!39 = !DILocation(line: 18, column: 2, scope: !25) +!40 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 21, type: !41, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!41 = !DISubroutineType(types: !42) +!42 = !{!15} +!43 = !DILocalVariable(name: "a", scope: !40, file: !11, line: 22, type: !15) +!44 = !DILocation(line: 22, column: 6, scope: !40) +!45 = !DILocation(line: 22, column: 2, scope: !40) +!46 = !DILabel(scope: !40, name: "LOOP", file: !11, line: 23) +!47 = !DILocation(line: 23, column: 2, scope: !40) +!48 = !DILocation(line: 24, column: 5, scope: !49) +!49 = distinct !DILexicalBlock(scope: !40, file: !11, line: 24, column: 5) +!50 = !DILocation(line: 24, column: 7, scope: !49) +!51 = !DILocation(line: 25, column: 4, scope: !52) +!52 = distinct !DILexicalBlock(scope: !49, file: !11, line: 24, column: 12) +!53 = !DILocation(line: 26, column: 2, scope: !52) +!54 = !DILocation(line: 27, column: 10, scope: !55) +!55 = distinct !DILexicalBlock(scope: !49, file: !11, line: 27, column: 10) +!56 = !DILocation(line: 27, column: 12, scope: !55) +!57 = !DILocation(line: 28, column: 4, scope: !58) +!58 = distinct !DILexicalBlock(scope: !55, file: !11, line: 27, column: 17) +!59 = !DILocation(line: 29, column: 2, scope: !58) +!60 = !DILocation(line: 31, column: 5, scope: !61) +!61 = distinct !DILexicalBlock(scope: !40, file: !11, line: 31, column: 5) +!62 = !DILocation(line: 31, column: 7, scope: !61) +!63 = !DILocation(line: 32, column: 3, scope: !64) +!64 = distinct !DILexicalBlock(scope: !61, file: !11, line: 31, column: 13) +!65 = !DILocation(line: 35, column: 17, scope: !66) +!66 = distinct !DILexicalBlock(scope: !61, file: !11, line: 34, column: 7) +!67 = !DILocation(line: 35, column: 7, scope: !66) +!68 = !DILocation(line: 35, column: 5, scope: !66) +!69 = !DILocation(line: 37, column: 2, scope: !40) +!70 = !DILocation(line: 38, column: 3, scope: !71) +!71 = distinct !DILexicalBlock(scope: !40, file: !11, line: 37, column: 14) +!72 = !DILocation(line: 39, column: 6, scope: !73) +!73 = distinct !DILexicalBlock(scope: !71, file: !11, line: 39, column: 6) +!74 = !DILocation(line: 39, column: 8, scope: !73) +!75 = !DILocation(line: 40, column: 4, scope: !76) +!76 = distinct !DILexicalBlock(scope: !73, file: !11, line: 39, column: 15) +!77 = distinct !{!77, !69, !78} +!78 = !DILocation(line: 42, column: 2, scope: !40) 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 index 5d0376041..b5c6ddc5b 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_8-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [2 x i8] c"a\00", align 1, !dbg !0 @@ -11,8 +11,8 @@ 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 !23, metadata !DIExpression()), !dbg !24 - %call = call i32 @rand() #4, !dbg !25 + #dbg_declare(ptr %a, !23, !DIExpression(), !24) + %call = call i32 @rand() #3, !dbg !25 store i32 %call, ptr %a, align 4, !dbg !24 br label %while.cond, !dbg !26 @@ -37,21 +37,17 @@ while.end: ; preds = %while.cond ret i32 %4, !dbg !39 } -; 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 +declare i32 @rand() #1 -declare void @svf_print(i32 noundef, ptr noundef) #3 +declare void @svf_print(i32 noundef, ptr noundef) #2 -declare void @svf_assert(i1 noundef zeroext) #3 +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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -59,13 +55,13 @@ attributes #4 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 11, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_8-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4aab0612f11ebfc058dcdbc8142acd46") +!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_8-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "4aab0612f11ebfc058dcdbc8142acd46") !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 = 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_8-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4aab0612f11ebfc058dcdbc8142acd46") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_8-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "4aab0612f11ebfc058dcdbc8142acd46") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -74,7 +70,7 @@ attributes #4 = { nounwind } !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"} +!17 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !18 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 6, type: !19, scopeLine: 6, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !22) !19 = !DISubroutineType(types: !20) !20 = !{!21} 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 index 1978fb760..7930d8331 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_9-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,57 +10,53 @@ entry: %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 + #dbg_declare(ptr %a, !16, !DIExpression(), !17) %call = call i32 (...) @rand(), !dbg !18 store i32 %call, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %b, !19, !DIExpression(), !20) store i32 1, ptr %b, align 4, !dbg !20 %0 = load i32, ptr %a, align 4, !dbg !21 %cmp = icmp sgt i32 %0, 5, !dbg !23 - br i1 %cmp, label %if.then, label %if.else, !dbg !24 + br i1 %cmp, label %if.then, label %if.else, !dbg !23 if.then: ; preds = %entry - %1 = load i32, ptr %a, align 4, !dbg !25 - %2 = load i32, ptr %b, align 4, !dbg !27 - %add = add nsw i32 %1, %2, !dbg !28 - store i32 %add, ptr %b, align 4, !dbg !29 - %3 = load i32, ptr %b, align 4, !dbg !30 - %cmp1 = icmp sgt i32 %3, 6, !dbg !31 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !32 - br label %if.end, !dbg !33 + %1 = load i32, ptr %a, align 4, !dbg !24 + %2 = load i32, ptr %b, align 4, !dbg !26 + %add = add nsw i32 %1, %2, !dbg !27 + store i32 %add, ptr %b, align 4, !dbg !28 + %3 = load i32, ptr %b, align 4, !dbg !29 + %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 %a, align 4, !dbg !34 - %5 = load i32, ptr %b, align 4, !dbg !36 - %add2 = add nsw i32 %4, %5, !dbg !37 - store i32 %add2, ptr %b, align 4, !dbg !38 - %6 = load i32, ptr %b, align 4, !dbg !39 - %cmp3 = icmp sle i32 %6, 6, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !41 + %4 = load i32, ptr %a, align 4, !dbg !33 + %5 = load i32, ptr %b, align 4, !dbg !35 + %add2 = add nsw i32 %4, %5, !dbg !36 + store i32 %add2, ptr %b, align 4, !dbg !37 + %6 = load i32, ptr %b, align 4, !dbg !38 + %cmp3 = icmp sle i32 %6, 6, !dbg !39 + call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !40 br label %if.end if.end: ; preds = %if.else, %if.then - %7 = load i32, ptr %retval, align 4, !dbg !42 - ret i32 %7, !dbg !42 + %7 = load i32, ptr %retval, align 4, !dbg !41 + ret i32 %7, !dbg !41 } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 +declare i32 @rand(...) #1 -declare i32 @rand(...) #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "40d6f41e562874c4357762003ab26c07") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/INTERVAL_test_9-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "40d6f41e562874c4357762003ab26c07") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -68,9 +64,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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/INTERVAL_test_9-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "40d6f41e562874c4357762003ab26c07") +!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_9-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "40d6f41e562874c4357762003ab26c07") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -83,22 +79,21 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !21 = !DILocation(line: 9, column: 9, scope: !22) !22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 9, column: 9) !23 = !DILocation(line: 9, column: 11, scope: !22) -!24 = !DILocation(line: 9, column: 9, scope: !10) -!25 = !DILocation(line: 10, column: 13, scope: !26) -!26 = distinct !DILexicalBlock(scope: !22, file: !11, line: 9, column: 16) -!27 = !DILocation(line: 10, column: 17, scope: !26) -!28 = !DILocation(line: 10, column: 15, scope: !26) -!29 = !DILocation(line: 10, column: 11, scope: !26) -!30 = !DILocation(line: 11, column: 20, scope: !26) -!31 = !DILocation(line: 11, column: 22, scope: !26) -!32 = !DILocation(line: 11, column: 9, scope: !26) -!33 = !DILocation(line: 12, column: 5, scope: !26) -!34 = !DILocation(line: 14, column: 13, scope: !35) -!35 = distinct !DILexicalBlock(scope: !22, file: !11, line: 13, column: 10) -!36 = !DILocation(line: 14, column: 17, scope: !35) -!37 = !DILocation(line: 14, column: 15, scope: !35) -!38 = !DILocation(line: 14, column: 11, scope: !35) -!39 = !DILocation(line: 15, column: 20, scope: !35) -!40 = !DILocation(line: 15, column: 22, scope: !35) -!41 = !DILocation(line: 15, column: 9, scope: !35) -!42 = !DILocation(line: 17, column: 1, scope: !10) +!24 = !DILocation(line: 10, column: 13, scope: !25) +!25 = distinct !DILexicalBlock(scope: !22, file: !11, line: 9, column: 16) +!26 = !DILocation(line: 10, column: 17, scope: !25) +!27 = !DILocation(line: 10, column: 15, scope: !25) +!28 = !DILocation(line: 10, column: 11, scope: !25) +!29 = !DILocation(line: 11, column: 20, scope: !25) +!30 = !DILocation(line: 11, column: 22, scope: !25) +!31 = !DILocation(line: 11, column: 9, scope: !25) +!32 = !DILocation(line: 12, column: 5, scope: !25) +!33 = !DILocation(line: 14, column: 13, scope: !34) +!34 = distinct !DILexicalBlock(scope: !22, file: !11, line: 13, column: 10) +!35 = !DILocation(line: 14, column: 17, scope: !34) +!36 = !DILocation(line: 14, column: 15, scope: !34) +!37 = !DILocation(line: 14, column: 11, scope: !34) +!38 = !DILocation(line: 15, column: 20, scope: !34) +!39 = !DILocation(line: 15, column: 22, scope: !34) +!40 = !DILocation(line: 15, column: 9, scope: !34) +!41 = !DILocation(line: 17, 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 index e02a25488..64b27c8f4 100644 --- a/test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc +++ b/test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,9 +10,9 @@ entry: %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 + #dbg_declare(ptr %i, !16, !DIExpression(), !17) store i32 0, ptr %i, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %j, metadata !18, metadata !DIExpression()), !dbg !19 + #dbg_declare(ptr %j, !18, !DIExpression(), !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 @@ -51,21 +51,17 @@ land.end: ; preds = %land.rhs, %for.end 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "ff7c4ec9eb88716a98e246b11f592670") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/LOOP_for01-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ff7c4ec9eb88716a98e246b11f592670") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -73,9 +69,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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/LOOP_for01-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ff7c4ec9eb88716a98e246b11f592670") +!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_for01-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ff7c4ec9eb88716a98e246b11f592670") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index c005c21c1..4b204e5c0 100644 --- 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 @@ -1,22 +1,19 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for_call-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %a.addr, !16, !DIExpression(), !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: @@ -24,9 +21,9 @@ entry: %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 + #dbg_declare(ptr %i, !24, !DIExpression(), !25) store i32 0, ptr %i, align 4, !dbg !25 - call void @llvm.dbg.declare(metadata ptr %j, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %j, !26, !DIExpression(), !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 @@ -65,18 +62,17 @@ land.end: ; preds = %land.rhs, %for.end ret i32 %6, !dbg !52 } -declare void @svf_assert(i1 noundef zeroext) #2 +declare void @svf_assert(i1 noundef zeroext) #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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "fcdb3794ef8dc3bd9a7d1b1f9298760e") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/LOOP_for_call-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fcdb3794ef8dc3bd9a7d1b1f9298760e") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -84,9 +80,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !10 = distinct !DISubprogram(name: "add", 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/LOOP_for_call-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fcdb3794ef8dc3bd9a7d1b1f9298760e") +!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_for_call-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fcdb3794ef8dc3bd9a7d1b1f9298760e") !12 = !DISubroutineType(types: !13) !13 = !{!14, !14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index df2649f85..fac22bc9d 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for_inc-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -10,7 +10,7 @@ entry: %i = alloca i32, align 4 %res = 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 + #dbg_declare(ptr %i, !16, !DIExpression(), !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 @@ -33,7 +33,7 @@ for.inc: ; preds = %for.body br label %for.cond, !dbg !29, !llvm.loop !30 for.end: ; preds = %for.cond - call void @llvm.dbg.declare(metadata ptr %res, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %res, !33, !DIExpression(), !34) %3 = load i32, ptr %res, align 4, !dbg !35 call void @set_value(i32 noundef %3, i32 noundef 5, i32 noundef 6), !dbg !36 %4 = load i32, ptr %i, align 4, !dbg !37 @@ -43,23 +43,19 @@ for.end: ; preds = %for.cond ret i32 %6, !dbg !40 } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 +declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #1 -declare void @set_value(i32 noundef, i32 noundef, i32 noundef) #2 +declare void @svf_assert_eq(i32 noundef, i32 noundef) #1 -declare void @svf_assert_eq(i32 noundef, 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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: "ef1ddef35cfe03517025ccbac0e2302e") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/LOOP_for_inc-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ef1ddef35cfe03517025ccbac0e2302e") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -67,9 +63,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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/LOOP_for_inc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ef1ddef35cfe03517025ccbac0e2302e") +!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_for_inc-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "ef1ddef35cfe03517025ccbac0e2302e") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 81fe0acc1..a220695bd 100644 --- a/test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc +++ b/test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !10 { @@ -9,7 +9,7 @@ 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 + #dbg_declare(ptr %x, !16, !DIExpression(), !17) store i32 1, ptr %x, align 4, !dbg !18 br label %while.cond, !dbg !19 @@ -31,21 +31,17 @@ while.end: ; preds = %while.cond 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/LOOP_while01-0.c", directory: "/root/testsss/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} @@ -53,9 +49,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_while01-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "b50b757a2a09bc1a04eef8938cb0d669") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 5e0789c8b..3d5725626 100644 --- 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 @@ -1,15 +1,15 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_char_alloc-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %data, !19, !DIExpression(), !20) + #dbg_declare(ptr %dataBadBuffer, !21, !DIExpression(), !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 @@ -32,21 +32,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/cwe121_char_alloc-0.c", directory: "/root/testsss/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) @@ -57,9 +53,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!12 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!14 = !DIFile(filename: "src/ae_assert_tests/cwe121_char_alloc-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "cd229c218c71222c80297417ec53073b") !15 = !DISubroutineType(types: !16) !16 = !{!17} !17 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) diff --git a/test_cases_bc/ae_assert_tests/cwe121_int64_alloc-0.c.bc b/test_cases_bc/ae_assert_tests/cwe121_int64_alloc-0.c.bc index e3e6cb1b0..556b79068 100644 --- a/test_cases_bc/ae_assert_tests/cwe121_int64_alloc-0.c.bc +++ b/test_cases_bc/ae_assert_tests/cwe121_int64_alloc-0.c.bc @@ -1,15 +1,15 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_int64_alloc-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe121_int64_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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_int64_alloc-0.c.bc' +source_filename = "/root/testsss/Test-Suite/src/ae_assert_tests/cwe121_int64_alloc-0.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %data, !18, !DIExpression(), !19) + #dbg_declare(ptr %dataBadBuffer, !20, !DIExpression(), !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 @@ -31,21 +31,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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_int64_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1385aefee79cf43f62058450546d8aef") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/cwe121_int64_alloc-0.c", directory: "/root/testsss/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) @@ -56,9 +52,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!12 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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_int64_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1385aefee79cf43f62058450546d8aef") +!14 = !DIFile(filename: "src/ae_assert_tests/cwe121_int64_alloc-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "1385aefee79cf43f62058450546d8aef") !15 = !DISubroutineType(types: !16) !16 = !{!4} !17 = !{} 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 index 3be4fab12..b5c946fb3 100644 --- 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 @@ -1,15 +1,15 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_int_alloc-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %data, !18, !DIExpression(), !19) + #dbg_declare(ptr %dataBadBuffer, !20, !DIExpression(), !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 @@ -31,21 +31,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/cwe121_int_alloc-0.c", directory: "/root/testsss/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) @@ -56,9 +52,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!12 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!14 = !DIFile(filename: "src/ae_assert_tests/cwe121_int_alloc-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "1385aefee79cf43f62058450546d8aef") !15 = !DISubroutineType(types: !16) !16 = !{!4} !17 = !{} 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 index af5b9d65d..8cdb0fbfa 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_struct_alloc-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct._twoIntsStruct = type { i32, i32 } @@ -10,52 +10,48 @@ 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 + #dbg_declare(ptr %data, !23, !DIExpression(), !24) + #dbg_declare(ptr %dataBadBuffer, !25, !DIExpression(), !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 + %intOne = getelementptr inbounds nuw %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 + %intOne2 = getelementptr inbounds nuw %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 + %intOne4 = getelementptr inbounds nuw %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 + %intOne6 = getelementptr inbounds nuw %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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/cwe121_struct_alloc-0.c", directory: "/root/testsss/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") +!5 = !DIFile(filename: "src/ae_assert_tests/cwe121_struct_alloc-0.c", directory: "/root/testsss/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) @@ -68,7 +64,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!18 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} 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 index 50e917ae0..ba1c3f758 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/cwe126_char_alloc-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !13 { @@ -9,15 +9,15 @@ 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 + #dbg_declare(ptr %data, !19, !DIExpression(), !20) + #dbg_declare(ptr %dataGoodBuffer, !21, !DIExpression(), !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 + #dbg_declare(ptr %dest, !28, !DIExpression(), !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 @@ -30,29 +30,25 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +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) #4 +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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/cwe126_char_alloc-0.c", directory: "/root/testsss/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) @@ -63,9 +59,9 @@ attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!12 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!14 = !DIFile(filename: "src/ae_assert_tests/cwe126_char_alloc-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "351da6695ae80efab07e8f2abdc79525") !15 = !DISubroutineType(types: !16) !16 = !{!17} !17 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 77bff3b56..43bc3df86 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/cwe190_char_fscanf-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @stdin = external global ptr, align 8 @.str = private unnamed_addr constant [3 x i8] c"%c\00", align 1, !dbg !0 @@ -13,14 +13,14 @@ define dso_local i32 @main() #0 !dbg !28 { entry: %data = alloca i8, align 1 %result = alloca i8, align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %data, !33, !DIExpression(), !34) store i8 32, ptr %data, align 1, !dbg !35 %0 = load ptr, ptr @stdin, align 8, !dbg !36 %call = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef @.str, ptr noundef %data), !dbg !37 %1 = load i8, ptr %data, align 1, !dbg !38 %conv = sext i8 %1 to i32, !dbg !38 call void @svf_print(i32 noundef %conv, ptr noundef @.str.1), !dbg !39 - call void @llvm.dbg.declare(metadata ptr %result, metadata !40, metadata !DIExpression()), !dbg !41 + #dbg_declare(ptr %result, !40, !DIExpression(), !41) %2 = load i8, ptr %data, align 1, !dbg !42 %conv1 = sext i8 %2 to i32, !dbg !42 %add = add nsw i32 %conv1, 1, !dbg !43 @@ -36,18 +36,14 @@ entry: ret i32 0, !dbg !49 } -; 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, ...) #1 -declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) #2 +declare void @svf_print(i32 noundef, ptr noundef) #1 -declare void @svf_print(i32 noundef, ptr noundef) #2 +declare void @svf_assert(i1 noundef zeroext) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.dbg.cu = !{!17} !llvm.module.flags = !{!20, !21, !22, !23, !24, !25, !26} @@ -55,7 +51,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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/cwe190_char_fscanf-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1b2b87c6a0124641df48fb82f0967dd5") +!2 = !DIFile(filename: "src/ae_assert_tests/cwe190_char_fscanf-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "1b2b87c6a0124641df48fb82f0967dd5") !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} @@ -70,8 +66,8 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 56, elements: !15) !15 = !{!16} !16 = !DISubrange(count: 7) -!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/cwe190_char_fscanf-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1b2b87c6a0124641df48fb82f0967dd5") +!17 = distinct !DICompileUnit(language: DW_LANG_C11, file: !18, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) +!18 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/cwe190_char_fscanf-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "1b2b87c6a0124641df48fb82f0967dd5") !19 = !{!0, !7, !12} !20 = !{i32 7, !"Dwarf Version", i32 5} !21 = !{i32 2, !"Debug Info Version", i32 3} @@ -80,7 +76,7 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!27 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !28 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 9, type: !29, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !17, retainedNodes: !32) !29 = !DISubroutineType(types: !30) !30 = !{!31} 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 index 7f0e9a013..f88c5dc28 100644 --- 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 @@ -1,17 +1,17 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_assert_tests/cwe190_int_max-0.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 + #dbg_declare(ptr %data, !16, !DIExpression(), !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 + #dbg_declare(ptr %result, !20, !DIExpression(), !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 @@ -21,21 +21,17 @@ entry: 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) #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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_assert_tests/cwe190_int_max-0.c", directory: "/root/testsss/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} @@ -43,9 +39,9 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!9 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!11 = !DIFile(filename: "src/ae_assert_tests/cwe190_int_max-0.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "3a484a41634ebac644e67a55d2e940f3") !12 = !DISubroutineType(types: !13) !13 = !{!14} !14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 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 index 3fb7ebcde..65e858341 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @stdin = external global ptr, align 8 @.str = private unnamed_addr constant [16 x i8] c"fgets() failed.\00", align 1, !dbg !0 @@ -19,286 +19,282 @@ entry: %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 + #dbg_declare(ptr %data, !52, !DIExpression(), !54) store i32 -1, ptr %data, align 4, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !56, metadata !DIExpression()), !dbg !61 + #dbg_declare(ptr %inputBuffer, !56, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.else, !dbg !66 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 + %arraydecay1 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !67 + %call2 = call i32 @atoi(ptr noundef %arraydecay1) #5, !dbg !69 + store i32 %call2, ptr %data, align 4, !dbg !70 + br label %if.end, !dbg !71 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !73 + call void @printLine(ptr noundef @.str), !dbg !72 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 + #dbg_declare(ptr %i, !74, !DIExpression(), !76) + #dbg_declare(ptr %buffer, !77, !DIExpression(), !81) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !81 + %1 = load i32, ptr %data, align 4, !dbg !82 + %cmp3 = icmp sge i32 %1, 0, !dbg !84 + br i1 %cmp3, label %if.then4, label %if.else11, !dbg !84 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 + %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 + store i32 1, ptr %arrayidx, align 4, !dbg !88 + %arraydecay5 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !89 + %3 = load i32, ptr %data, align 4, !dbg !90 + %conv = sext i32 %3 to i64, !dbg !90 + %mul = mul i64 %conv, 4, !dbg !91 + %sub = sub i64 %mul, 1, !dbg !92 + %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef %sub), !dbg !93 + store i32 0, ptr %i, align 4, !dbg !94 + br label %for.cond, !dbg !96 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 + %4 = load i32, ptr %i, align 4, !dbg !97 + %cmp7 = icmp slt i32 %4, 10, !dbg !99 + br i1 %cmp7, label %for.body, label %for.end, !dbg !100 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 + %5 = load i32, ptr %i, align 4, !dbg !101 + %idxprom9 = sext i32 %5 to i64, !dbg !103 + %arrayidx10 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom9, !dbg !103 + %6 = load i32, ptr %arrayidx10, align 4, !dbg !103 + call void @printIntLine(i32 noundef %6), !dbg !104 + br label %for.inc, !dbg !105 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 + %7 = load i32, ptr %i, align 4, !dbg !106 + %inc = add nsw i32 %7, 1, !dbg !106 + store i32 %inc, ptr %i, align 4, !dbg !106 + br label %for.cond, !dbg !107, !llvm.loop !108 for.end: ; preds = %for.cond - br label %if.end12, !dbg !113 + br label %if.end12, !dbg !111 if.else11: ; preds = %if.end - call void @printLine(ptr noundef @.str.1), !dbg !114 + call void @printLine(ptr noundef @.str.1), !dbg !112 br label %if.end12 if.end12: ; preds = %if.else11, %for.end - ret void, !dbg !116 + ret void, !dbg !114 } -; 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 @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #3 +declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #4 +declare i32 @atoi(ptr noundef) #3 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare void @printIntLine(i32 noundef) #3 +declare void @printIntLine(i32 noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_good() #0 !dbg !117 { +define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_good() #0 !dbg !115 { entry: - call void @goodG2B(), !dbg !118 - call void @goodB2G(), !dbg !119 - ret void, !dbg !120 + call void @goodG2B(), !dbg !116 + call void @goodB2G(), !dbg !117 + ret void, !dbg !118 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !121 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !119 { 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 + #dbg_declare(ptr %argc.addr, !124, !DIExpression(), !125) 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 + #dbg_declare(ptr %argv.addr, !126, !DIExpression(), !127) + %call = call i64 @time(ptr noundef null) #6, !dbg !128 + %conv = trunc i64 %call to i32, !dbg !129 + call void @srand(i32 noundef %conv) #6, !dbg !130 + call void @printLine(ptr noundef @.str.2), !dbg !131 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_good(), !dbg !132 + call void @printLine(ptr noundef @.str.3), !dbg !133 + call void @printLine(ptr noundef @.str.4), !dbg !134 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_bad(), !dbg !135 + call void @printLine(ptr noundef @.str.5), !dbg !136 + ret i32 0, !dbg !137 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !140 { +define internal void @goodG2B() #0 !dbg !138 { 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 + #dbg_declare(ptr %data, !139, !DIExpression(), !140) + store i32 -1, ptr %data, align 4, !dbg !141 + store i32 7, ptr %data, align 4, !dbg !142 + #dbg_declare(ptr %i, !143, !DIExpression(), !145) + #dbg_declare(ptr %buffer, !146, !DIExpression(), !147) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !147 + %0 = load i32, ptr %data, align 4, !dbg !148 + %cmp = icmp sge i32 %0, 0, !dbg !150 + br i1 %cmp, label %if.then, label %if.else, !dbg !150 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 + %1 = load i32, ptr %data, align 4, !dbg !151 + %idxprom = sext i32 %1 to i64, !dbg !153 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !153 + store i32 1, ptr %arrayidx, align 4, !dbg !154 + %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !155 + %2 = load i32, ptr %data, align 4, !dbg !156 + %conv = sext i32 %2 to i64, !dbg !156 + %mul = mul i64 %conv, 4, !dbg !157 + %sub = sub i64 %mul, 1, !dbg !158 + %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %sub), !dbg !159 + store i32 0, ptr %i, align 4, !dbg !160 + br label %for.cond, !dbg !162 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 + %3 = load i32, ptr %i, align 4, !dbg !163 + %cmp1 = icmp slt i32 %3, 10, !dbg !165 + br i1 %cmp1, label %for.body, label %for.end, !dbg !166 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 + %4 = load i32, ptr %i, align 4, !dbg !167 + %idxprom3 = sext i32 %4 to i64, !dbg !169 + %arrayidx4 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom3, !dbg !169 + %5 = load i32, ptr %arrayidx4, align 4, !dbg !169 + call void @printIntLine(i32 noundef %5), !dbg !170 + br label %for.inc, !dbg !171 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 + %6 = load i32, ptr %i, align 4, !dbg !172 + %inc = add nsw i32 %6, 1, !dbg !172 + store i32 %inc, ptr %i, align 4, !dbg !172 + br label %for.cond, !dbg !173, !llvm.loop !174 for.end: ; preds = %for.cond - br label %if.end, !dbg !179 + br label %if.end, !dbg !176 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str.1), !dbg !180 + call void @printLine(ptr noundef @.str.1), !dbg !177 br label %if.end if.end: ; preds = %if.else, %for.end - ret void, !dbg !182 + ret void, !dbg !179 } -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !183 { +define internal void @goodB2G() #0 !dbg !180 { 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 + #dbg_declare(ptr %data, !181, !DIExpression(), !182) + store i32 -1, ptr %data, align 4, !dbg !183 + #dbg_declare(ptr %inputBuffer, !184, !DIExpression(), !186) + call void @llvm.memset.p0.i64(ptr align 1 %inputBuffer, i8 0, i64 14, i1 false), !dbg !186 + %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !187 + %0 = load ptr, ptr @stdin, align 8, !dbg !189 + %call = call ptr @fgets(ptr noundef %arraydecay, i32 noundef 14, ptr noundef %0), !dbg !190 + %cmp = icmp ne ptr %call, null, !dbg !191 + br i1 %cmp, label %if.then, label %if.else, !dbg !191 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 + %arraydecay1 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !192 + %call2 = call i32 @atoi(ptr noundef %arraydecay1) #5, !dbg !194 + store i32 %call2, ptr %data, align 4, !dbg !195 + br label %if.end, !dbg !196 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !201 + call void @printLine(ptr noundef @.str), !dbg !197 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 + #dbg_declare(ptr %i, !199, !DIExpression(), !201) + #dbg_declare(ptr %buffer, !202, !DIExpression(), !203) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !203 + %1 = load i32, ptr %data, align 4, !dbg !204 + %cmp3 = icmp sge i32 %1, 0, !dbg !206 + br i1 %cmp3, label %land.lhs.true, label %if.else12, !dbg !207 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 + %2 = load i32, ptr %data, align 4, !dbg !208 + %cmp4 = icmp slt i32 %2, 10, !dbg !209 + br i1 %cmp4, label %if.then5, label %if.else12, !dbg !207 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 + %3 = load i32, ptr %data, align 4, !dbg !210 + %idxprom = sext i32 %3 to i64, !dbg !212 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !212 + store i32 1, ptr %arrayidx, align 4, !dbg !213 + %arraydecay6 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !214 + %4 = load i32, ptr %data, align 4, !dbg !215 + %conv = sext i32 %4 to i64, !dbg !215 + %mul = mul i64 %conv, 4, !dbg !216 + %sub = sub i64 %mul, 1, !dbg !217 + %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef %sub), !dbg !218 + store i32 0, ptr %i, align 4, !dbg !219 + br label %for.cond, !dbg !221 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 + %5 = load i32, ptr %i, align 4, !dbg !222 + %cmp8 = icmp slt i32 %5, 10, !dbg !224 + br i1 %cmp8, label %for.body, label %for.end, !dbg !225 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 + %6 = load i32, ptr %i, align 4, !dbg !226 + %idxprom10 = sext i32 %6 to i64, !dbg !228 + %arrayidx11 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom10, !dbg !228 + %7 = load i32, ptr %arrayidx11, align 4, !dbg !228 + call void @printIntLine(i32 noundef %7), !dbg !229 + br label %for.inc, !dbg !230 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 + %8 = load i32, ptr %i, align 4, !dbg !231 + %inc = add nsw i32 %8, 1, !dbg !231 + store i32 %inc, ptr %i, align 4, !dbg !231 + br label %for.cond, !dbg !232, !llvm.loop !233 for.end: ; preds = %for.cond - br label %if.end13, !dbg !240 + br label %if.end13, !dbg !235 if.else12: ; preds = %land.lhs.true, %if.end - call void @printLine(ptr noundef @.str.6), !dbg !241 + call void @printLine(ptr noundef @.str.6), !dbg !236 br label %if.end13 if.end13: ; preds = %if.else12, %for.end - ret void, !dbg !243 + ret void, !dbg !238 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!34} !llvm.module.flags = !{!40, !41, !42, !43, !44, !45, !46} @@ -306,7 +302,7 @@ attributes #7 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c", directory: "/root/testsss/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} @@ -338,8 +334,8 @@ attributes #7 = { nounwind } !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") +!34 = distinct !DICompileUnit(language: DW_LANG_C11, file: !35, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !36, globals: !39, splitDebugInlining: false, nameTableKind: None) +!35 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c", directory: "/root/testsss/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) @@ -351,7 +347,7 @@ attributes #7 = { nounwind } !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"} +!47 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -371,180 +367,175 @@ attributes #7 = { nounwind } !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) +!67 = !DILocation(line: 35, column: 25, scope: !68) +!68 = distinct !DILexicalBlock(scope: !63, file: !2, line: 33, column: 9) +!69 = !DILocation(line: 35, column: 20, scope: !68) +!70 = !DILocation(line: 35, column: 18, scope: !68) +!71 = !DILocation(line: 36, column: 9, scope: !68) +!72 = !DILocation(line: 39, column: 13, scope: !73) +!73 = distinct !DILexicalBlock(scope: !63, file: !2, line: 38, column: 9) +!74 = !DILocalVariable(name: "i", scope: !75, file: !2, line: 43, type: !53) +!75 = distinct !DILexicalBlock(scope: !48, file: !2, line: 42, column: 5) +!76 = !DILocation(line: 43, column: 13, scope: !75) +!77 = !DILocalVariable(name: "buffer", scope: !75, file: !2, line: 44, type: !78) +!78 = !DICompositeType(tag: DW_TAG_array_type, baseType: !53, size: 320, elements: !79) +!79 = !{!80} +!80 = !DISubrange(count: 10) +!81 = !DILocation(line: 44, column: 13, scope: !75) +!82 = !DILocation(line: 47, column: 13, scope: !83) +!83 = distinct !DILexicalBlock(scope: !75, file: !2, line: 47, column: 13) +!84 = !DILocation(line: 47, column: 18, scope: !83) +!85 = !DILocation(line: 49, column: 20, scope: !86) +!86 = distinct !DILexicalBlock(scope: !83, file: !2, line: 48, column: 9) +!87 = !DILocation(line: 49, column: 13, scope: !86) +!88 = !DILocation(line: 49, column: 26, scope: !86) +!89 = !DILocation(line: 50, column: 30, scope: !86) +!90 = !DILocation(line: 50, column: 38, scope: !86) +!91 = !DILocation(line: 50, column: 43, scope: !86) +!92 = !DILocation(line: 50, column: 57, scope: !86) +!93 = !DILocation(line: 50, column: 13, scope: !86) +!94 = !DILocation(line: 52, column: 19, scope: !95) +!95 = distinct !DILexicalBlock(scope: !86, file: !2, line: 52, column: 13) +!96 = !DILocation(line: 52, column: 17, scope: !95) +!97 = !DILocation(line: 52, column: 24, scope: !98) +!98 = distinct !DILexicalBlock(scope: !95, file: !2, line: 52, column: 13) +!99 = !DILocation(line: 52, column: 26, scope: !98) +!100 = !DILocation(line: 52, column: 13, scope: !95) +!101 = !DILocation(line: 54, column: 37, scope: !102) +!102 = distinct !DILexicalBlock(scope: !98, file: !2, line: 53, column: 13) +!103 = !DILocation(line: 54, column: 30, scope: !102) +!104 = !DILocation(line: 54, column: 17, scope: !102) +!105 = !DILocation(line: 55, column: 13, scope: !102) +!106 = !DILocation(line: 52, column: 33, scope: !98) +!107 = !DILocation(line: 52, column: 13, scope: !98) +!108 = distinct !{!108, !100, !109, !110} +!109 = !DILocation(line: 55, column: 13, scope: !95) +!110 = !{!"llvm.loop.mustprogress"} +!111 = !DILocation(line: 56, column: 9, scope: !86) +!112 = !DILocation(line: 59, column: 13, scope: !113) +!113 = distinct !DILexicalBlock(scope: !83, file: !2, line: 58, column: 9) +!114 = !DILocation(line: 62, column: 1, scope: !48) +!115 = 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) +!116 = !DILocation(line: 141, column: 5, scope: !115) +!117 = !DILocation(line: 142, column: 5, scope: !115) +!118 = !DILocation(line: 143, column: 1, scope: !115) +!119 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 154, type: !120, scopeLine: 155, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !51) +!120 = !DISubroutineType(types: !121) +!121 = !{!53, !53, !122} +!122 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !123, size: 64) +!123 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!124 = !DILocalVariable(name: "argc", arg: 1, scope: !119, file: !2, line: 154, type: !53) +!125 = !DILocation(line: 154, column: 14, scope: !119) +!126 = !DILocalVariable(name: "argv", arg: 2, scope: !119, file: !2, line: 154, type: !122) +!127 = !DILocation(line: 154, column: 27, scope: !119) +!128 = !DILocation(line: 157, column: 22, scope: !119) +!129 = !DILocation(line: 157, column: 12, scope: !119) +!130 = !DILocation(line: 157, column: 5, scope: !119) +!131 = !DILocation(line: 159, column: 5, scope: !119) +!132 = !DILocation(line: 160, column: 5, scope: !119) +!133 = !DILocation(line: 161, column: 5, scope: !119) +!134 = !DILocation(line: 164, column: 5, scope: !119) +!135 = !DILocation(line: 165, column: 5, scope: !119) +!136 = !DILocation(line: 166, column: 5, scope: !119) +!137 = !DILocation(line: 168, column: 5, scope: !119) +!138 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 69, type: !49, scopeLine: 70, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !34, retainedNodes: !51) +!139 = !DILocalVariable(name: "data", scope: !138, file: !2, line: 71, type: !53) +!140 = !DILocation(line: 71, column: 9, scope: !138) +!141 = !DILocation(line: 73, column: 10, scope: !138) +!142 = !DILocation(line: 76, column: 10, scope: !138) +!143 = !DILocalVariable(name: "i", scope: !144, file: !2, line: 78, type: !53) +!144 = distinct !DILexicalBlock(scope: !138, file: !2, line: 77, column: 5) +!145 = !DILocation(line: 78, column: 13, scope: !144) +!146 = !DILocalVariable(name: "buffer", scope: !144, file: !2, line: 79, type: !78) +!147 = !DILocation(line: 79, column: 13, scope: !144) +!148 = !DILocation(line: 82, column: 13, scope: !149) +!149 = distinct !DILexicalBlock(scope: !144, file: !2, line: 82, column: 13) +!150 = !DILocation(line: 82, column: 18, scope: !149) +!151 = !DILocation(line: 84, column: 20, scope: !152) +!152 = distinct !DILexicalBlock(scope: !149, file: !2, line: 83, column: 9) +!153 = !DILocation(line: 84, column: 13, scope: !152) +!154 = !DILocation(line: 84, column: 26, scope: !152) +!155 = !DILocation(line: 85, column: 28, scope: !152) +!156 = !DILocation(line: 85, column: 36, scope: !152) +!157 = !DILocation(line: 85, column: 41, scope: !152) +!158 = !DILocation(line: 85, column: 55, scope: !152) +!159 = !DILocation(line: 85, column: 13, scope: !152) +!160 = !DILocation(line: 87, column: 19, scope: !161) +!161 = distinct !DILexicalBlock(scope: !152, file: !2, line: 87, column: 13) +!162 = !DILocation(line: 87, column: 17, scope: !161) +!163 = !DILocation(line: 87, column: 24, scope: !164) +!164 = distinct !DILexicalBlock(scope: !161, file: !2, line: 87, column: 13) +!165 = !DILocation(line: 87, column: 26, scope: !164) +!166 = !DILocation(line: 87, column: 13, scope: !161) +!167 = !DILocation(line: 89, column: 37, scope: !168) +!168 = distinct !DILexicalBlock(scope: !164, file: !2, line: 88, column: 13) +!169 = !DILocation(line: 89, column: 30, scope: !168) +!170 = !DILocation(line: 89, column: 17, scope: !168) +!171 = !DILocation(line: 90, column: 13, scope: !168) +!172 = !DILocation(line: 87, column: 33, scope: !164) +!173 = !DILocation(line: 87, column: 13, scope: !164) +!174 = distinct !{!174, !166, !175, !110} +!175 = !DILocation(line: 90, column: 13, scope: !161) +!176 = !DILocation(line: 91, column: 9, scope: !152) +!177 = !DILocation(line: 94, column: 13, scope: !178) +!178 = distinct !DILexicalBlock(scope: !149, file: !2, line: 93, column: 9) +!179 = !DILocation(line: 97, column: 1, scope: !138) +!180 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 100, type: !49, scopeLine: 101, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !34, retainedNodes: !51) +!181 = !DILocalVariable(name: "data", scope: !180, file: !2, line: 102, type: !53) +!182 = !DILocation(line: 102, column: 9, scope: !180) +!183 = !DILocation(line: 104, column: 10, scope: !180) +!184 = !DILocalVariable(name: "inputBuffer", scope: !185, file: !2, line: 106, type: !58) +!185 = distinct !DILexicalBlock(scope: !180, file: !2, line: 105, column: 5) +!186 = !DILocation(line: 106, column: 14, scope: !185) +!187 = !DILocation(line: 108, column: 19, scope: !188) +!188 = distinct !DILexicalBlock(scope: !185, file: !2, line: 108, column: 13) +!189 = !DILocation(line: 108, column: 49, scope: !188) +!190 = !DILocation(line: 108, column: 13, scope: !188) +!191 = !DILocation(line: 108, column: 56, scope: !188) +!192 = !DILocation(line: 111, column: 25, scope: !193) +!193 = distinct !DILexicalBlock(scope: !188, file: !2, line: 109, column: 9) +!194 = !DILocation(line: 111, column: 20, scope: !193) +!195 = !DILocation(line: 111, column: 18, scope: !193) +!196 = !DILocation(line: 112, column: 9, scope: !193) +!197 = !DILocation(line: 115, column: 13, scope: !198) +!198 = distinct !DILexicalBlock(scope: !188, file: !2, line: 114, column: 9) +!199 = !DILocalVariable(name: "i", scope: !200, file: !2, line: 119, type: !53) +!200 = distinct !DILexicalBlock(scope: !180, file: !2, line: 118, column: 5) +!201 = !DILocation(line: 119, column: 13, scope: !200) +!202 = !DILocalVariable(name: "buffer", scope: !200, file: !2, line: 120, type: !78) +!203 = !DILocation(line: 120, column: 13, scope: !200) +!204 = !DILocation(line: 122, column: 13, scope: !205) +!205 = distinct !DILexicalBlock(scope: !200, file: !2, line: 122, column: 13) +!206 = !DILocation(line: 122, column: 18, scope: !205) +!207 = !DILocation(line: 122, column: 23, scope: !205) +!208 = !DILocation(line: 122, column: 26, scope: !205) +!209 = !DILocation(line: 122, column: 31, scope: !205) +!210 = !DILocation(line: 124, column: 20, scope: !211) +!211 = distinct !DILexicalBlock(scope: !205, file: !2, line: 123, column: 9) +!212 = !DILocation(line: 124, column: 13, scope: !211) +!213 = !DILocation(line: 124, column: 26, scope: !211) +!214 = !DILocation(line: 125, column: 28, scope: !211) +!215 = !DILocation(line: 125, column: 36, scope: !211) +!216 = !DILocation(line: 125, column: 41, scope: !211) +!217 = !DILocation(line: 125, column: 55, scope: !211) +!218 = !DILocation(line: 125, column: 13, scope: !211) +!219 = !DILocation(line: 127, column: 19, scope: !220) +!220 = distinct !DILexicalBlock(scope: !211, file: !2, line: 127, column: 13) +!221 = !DILocation(line: 127, column: 17, scope: !220) +!222 = !DILocation(line: 127, column: 24, scope: !223) +!223 = distinct !DILexicalBlock(scope: !220, file: !2, line: 127, column: 13) +!224 = !DILocation(line: 127, column: 26, scope: !223) +!225 = !DILocation(line: 127, column: 13, scope: !220) +!226 = !DILocation(line: 129, column: 37, scope: !227) +!227 = distinct !DILexicalBlock(scope: !223, file: !2, line: 128, column: 13) +!228 = !DILocation(line: 129, column: 30, scope: !227) +!229 = !DILocation(line: 129, column: 17, scope: !227) +!230 = !DILocation(line: 130, column: 13, scope: !227) +!231 = !DILocation(line: 127, column: 33, scope: !223) +!232 = !DILocation(line: 127, column: 13, scope: !223) +!233 = distinct !{!233, !225, !234, !110} +!234 = !DILocation(line: 130, column: 13, scope: !220) +!235 = !DILocation(line: 131, column: 9, scope: !211) +!236 = !DILocation(line: 134, column: 13, scope: !237) +!237 = distinct !DILexicalBlock(scope: !205, file: !2, line: 133, column: 9) +!238 = !DILocation(line: 137, column: 1, scope: !180) 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 index 683c13113..568ee8e27 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.sockaddr_in = type { i16, i16, %struct.in_addr, [8 x i8] } %struct.in_addr = type { i32 } @@ -14,7 +14,7 @@ target triple = "x86_64-unknown-linux-gnu" @.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 { +define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_bad() #0 !dbg !107 { entry: %data = alloca i32, align 4 %recvResult = alloca i32, align 4 @@ -24,49 +24,49 @@ entry: %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 + #dbg_declare(ptr %data, !111, !DIExpression(), !113) + store i32 -1, ptr %data, align 4, !dbg !114 + #dbg_declare(ptr %recvResult, !115, !DIExpression(), !117) + #dbg_declare(ptr %service, !118, !DIExpression(), !135) + #dbg_declare(ptr %listenSocket, !136, !DIExpression(), !137) + store i32 -1, ptr %listenSocket, align 4, !dbg !137 + #dbg_declare(ptr %acceptSocket, !138, !DIExpression(), !139) + store i32 -1, ptr %acceptSocket, align 4, !dbg !139 + #dbg_declare(ptr %inputBuffer, !140, !DIExpression(), !141) + br label %do.body, !dbg !142 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 + %call = call i32 @socket(i32 noundef 2, i32 noundef 1, i32 noundef 6) #6, !dbg !143 + store i32 %call, ptr %listenSocket, align 4, !dbg !145 + %0 = load i32, ptr %listenSocket, align 4, !dbg !146 + %cmp = icmp eq i32 %0, -1, !dbg !148 + br i1 %cmp, label %if.then, label %if.end, !dbg !148 if.then: ; preds = %do.body - br label %do.end, !dbg !147 + br label %do.end, !dbg !149 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 + call void @llvm.memset.p0.i64(ptr align 4 %service, i8 0, i64 16, i1 false), !dbg !151 + %sin_family = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 0, !dbg !152 + store i16 2, ptr %sin_family, align 4, !dbg !153 + %sin_addr = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 2, !dbg !154 + %s_addr = getelementptr inbounds nuw %struct.in_addr, ptr %sin_addr, i32 0, i32 0, !dbg !155 + store i32 0, ptr %s_addr, align 4, !dbg !156 + %call1 = call zeroext i16 @htons(i16 noundef zeroext 27015) #7, !dbg !157 + %sin_port = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 1, !dbg !158 + store i16 %call1, ptr %sin_port, align 2, !dbg !159 + %1 = load i32, ptr %listenSocket, align 4, !dbg !160 + %call2 = call i32 @bind(i32 noundef %1, ptr noundef %service, i32 noundef 16) #6, !dbg !162 + %cmp3 = icmp eq i32 %call2, -1, !dbg !163 + br i1 %cmp3, label %if.then4, label %if.end5, !dbg !163 if.then4: ; preds = %if.end - br label %do.end, !dbg !163 + br label %do.end, !dbg !164 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 + %2 = load i32, ptr %listenSocket, align 4, !dbg !166 + %call6 = call i32 @listen(i32 noundef %2, i32 noundef 5) #6, !dbg !168 + %cmp7 = icmp eq i32 %call6, -1, !dbg !169 br i1 %cmp7, label %if.then8, label %if.end9, !dbg !169 if.then8: ; preds = %if.end5 @@ -78,244 +78,241 @@ if.end9: ; preds = %if.end5 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 + br i1 %cmp11, label %if.then12, label %if.end13, !dbg !177 if.then12: ; preds = %if.end9 - br label %do.end, !dbg !179 + br label %do.end, !dbg !178 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 + %5 = load i32, ptr %acceptSocket, align 4, !dbg !180 + %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !181 + %call14 = call i64 @recv(i32 noundef %5, ptr noundef %arraydecay, i64 noundef 13, i32 noundef 0), !dbg !182 + %conv = trunc i64 %call14 to i32, !dbg !182 + store i32 %conv, ptr %recvResult, align 4, !dbg !183 + %6 = load i32, ptr %recvResult, align 4, !dbg !184 + %cmp15 = icmp eq i32 %6, -1, !dbg !186 + br i1 %cmp15, label %if.then19, label %lor.lhs.false, !dbg !187 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 + %7 = load i32, ptr %recvResult, align 4, !dbg !188 + %cmp17 = icmp eq i32 %7, 0, !dbg !189 + br i1 %cmp17, label %if.then19, label %if.end20, !dbg !187 if.then19: ; preds = %lor.lhs.false, %if.end13 - br label %do.end, !dbg !192 + br label %do.end, !dbg !190 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 + %8 = load i32, ptr %recvResult, align 4, !dbg !192 + %idxprom = sext i32 %8 to i64, !dbg !193 + %arrayidx = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 %idxprom, !dbg !193 + store i8 0, ptr %arrayidx, align 1, !dbg !194 + %arraydecay21 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !195 + %call22 = call i32 @atoi(ptr noundef %arraydecay21) #8, !dbg !196 + store i32 %call22, ptr %data, align 4, !dbg !197 + br label %do.end, !dbg !198 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 + %9 = load i32, ptr %listenSocket, align 4, !dbg !199 + %cmp23 = icmp ne i32 %9, -1, !dbg !201 + br i1 %cmp23, label %if.then25, label %if.end27, !dbg !201 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 + %10 = load i32, ptr %listenSocket, align 4, !dbg !202 + %call26 = call i32 @close(i32 noundef %10), !dbg !204 + br label %if.end27, !dbg !205 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 + %11 = load i32, ptr %acceptSocket, align 4, !dbg !206 + %cmp28 = icmp ne i32 %11, -1, !dbg !208 + br i1 %cmp28, label %if.then30, label %if.end32, !dbg !208 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 + %12 = load i32, ptr %acceptSocket, align 4, !dbg !209 + %call31 = call i32 @close(i32 noundef %12), !dbg !211 + br label %if.end32, !dbg !212 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 + #dbg_declare(ptr %i, !213, !DIExpression(), !215) + #dbg_declare(ptr %buffer, !216, !DIExpression(), !220) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !220 + %13 = load i32, ptr %data, align 4, !dbg !221 + %cmp33 = icmp sge i32 %13, 0, !dbg !223 + br i1 %cmp33, label %if.then35, label %if.else, !dbg !223 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 + %14 = load i32, ptr %data, align 4, !dbg !224 + %idxprom36 = sext i32 %14 to i64, !dbg !226 + %arrayidx37 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom36, !dbg !226 + store i32 1, ptr %arrayidx37, align 4, !dbg !227 + %arraydecay38 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !228 + %15 = load i32, ptr %data, align 4, !dbg !229 + %conv39 = sext i32 %15 to i64, !dbg !229 + %mul = mul i64 %conv39, 4, !dbg !230 + %sub = sub i64 %mul, 1, !dbg !231 + %call40 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay38, i64 noundef %sub), !dbg !232 + store i32 0, ptr %i, align 4, !dbg !233 + br label %for.cond, !dbg !235 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 + %16 = load i32, ptr %i, align 4, !dbg !236 + %cmp41 = icmp slt i32 %16, 10, !dbg !238 + br i1 %cmp41, label %for.body, label %for.end, !dbg !239 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 + %17 = load i32, ptr %i, align 4, !dbg !240 + %idxprom43 = sext i32 %17 to i64, !dbg !242 + %arrayidx44 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom43, !dbg !242 + %18 = load i32, ptr %arrayidx44, align 4, !dbg !242 + call void @printIntLine(i32 noundef %18), !dbg !243 + br label %for.inc, !dbg !244 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 + %19 = load i32, ptr %i, align 4, !dbg !245 + %inc = add nsw i32 %19, 1, !dbg !245 + store i32 %inc, ptr %i, align 4, !dbg !245 + br label %for.cond, !dbg !246, !llvm.loop !247 for.end: ; preds = %for.cond - br label %if.end45, !dbg !255 + br label %if.end45, !dbg !250 if.else: ; preds = %if.end32 - call void @printLine(ptr noundef @.str), !dbg !256 + call void @printLine(ptr noundef @.str), !dbg !251 br label %if.end45 if.end45: ; preds = %if.else, %for.end - ret void, !dbg !258 + ret void, !dbg !253 } -; 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 +declare i32 @socket(i32 noundef, i32 noundef, i32 noundef) #1 ; 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 @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 ; Function Attrs: nounwind willreturn memory(none) -declare zeroext i16 @htons(i16 noundef zeroext) #4 +declare zeroext i16 @htons(i16 noundef zeroext) #3 ; Function Attrs: nounwind -declare i32 @bind(i32 noundef, ptr noundef, i32 noundef) #2 +declare i32 @bind(i32 noundef, ptr noundef, i32 noundef) #1 ; Function Attrs: nounwind -declare i32 @listen(i32 noundef, i32 noundef) #2 +declare i32 @listen(i32 noundef, i32 noundef) #1 -declare i32 @accept(i32 noundef, ptr noundef, ptr noundef) #5 +declare i32 @accept(i32 noundef, ptr noundef, ptr noundef) #4 -declare i64 @recv(i32 noundef, ptr noundef, i64 noundef, i32 noundef) #5 +declare i64 @recv(i32 noundef, ptr noundef, i64 noundef, i32 noundef) #4 ; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #6 +declare i32 @atoi(ptr noundef) #5 -declare i32 @close(i32 noundef) #5 +declare i32 @close(i32 noundef) #4 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #4 -declare void @printIntLine(i32 noundef) #5 +declare void @printIntLine(i32 noundef) #4 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_good() #0 !dbg !259 { +define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_good() #0 !dbg !254 { entry: - call void @goodG2B(), !dbg !260 - call void @goodB2G(), !dbg !261 - ret void, !dbg !262 + call void @goodG2B(), !dbg !255 + call void @goodB2G(), !dbg !256 + ret void, !dbg !257 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !263 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !258 { 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 + #dbg_declare(ptr %argc.addr, !263, !DIExpression(), !264) 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 + #dbg_declare(ptr %argv.addr, !265, !DIExpression(), !266) + %call = call i64 @time(ptr noundef null) #6, !dbg !267 + %conv = trunc i64 %call to i32, !dbg !268 + call void @srand(i32 noundef %conv) #6, !dbg !269 + call void @printLine(ptr noundef @.str.1), !dbg !270 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_good(), !dbg !271 + call void @printLine(ptr noundef @.str.2), !dbg !272 + call void @printLine(ptr noundef @.str.3), !dbg !273 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_bad(), !dbg !274 + call void @printLine(ptr noundef @.str.4), !dbg !275 + ret i32 0, !dbg !276 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !282 { +define internal void @goodG2B() #0 !dbg !277 { 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 + #dbg_declare(ptr %data, !278, !DIExpression(), !279) + store i32 -1, ptr %data, align 4, !dbg !280 + store i32 7, ptr %data, align 4, !dbg !281 + #dbg_declare(ptr %i, !282, !DIExpression(), !284) + #dbg_declare(ptr %buffer, !285, !DIExpression(), !286) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !286 + %0 = load i32, ptr %data, align 4, !dbg !287 + %cmp = icmp sge i32 %0, 0, !dbg !289 + br i1 %cmp, label %if.then, label %if.else, !dbg !289 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 + %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !290 + %1 = load i32, ptr %data, align 4, !dbg !292 + %conv = sext i32 %1 to i64, !dbg !292 + %mul = mul i64 %conv, 4, !dbg !293 + %call = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %arraydecay, i64 noundef %mul, i32 noundef 0), !dbg !294 + %2 = load i32, ptr %data, align 4, !dbg !295 + %idxprom = sext i32 %2 to i64, !dbg !296 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !296 + store i32 1, ptr %arrayidx, align 4, !dbg !297 + store i32 0, ptr %i, align 4, !dbg !298 + br label %for.cond, !dbg !300 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 + %3 = load i32, ptr %i, align 4, !dbg !301 + %cmp1 = icmp slt i32 %3, 10, !dbg !303 + br i1 %cmp1, label %for.body, label %for.end, !dbg !304 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 + %4 = load i32, ptr %i, align 4, !dbg !305 + %idxprom3 = sext i32 %4 to i64, !dbg !307 + %arrayidx4 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom3, !dbg !307 + %5 = load i32, ptr %arrayidx4, align 4, !dbg !307 + call void @printIntLine(i32 noundef %5), !dbg !308 + br label %for.inc, !dbg !309 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 + %6 = load i32, ptr %i, align 4, !dbg !310 + %inc = add nsw i32 %6, 1, !dbg !310 + store i32 %inc, ptr %i, align 4, !dbg !310 + br label %for.cond, !dbg !311, !llvm.loop !312 for.end: ; preds = %for.cond - br label %if.end, !dbg !320 + br label %if.end, !dbg !314 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !321 + call void @printLine(ptr noundef @.str), !dbg !315 br label %if.end if.end: ; preds = %if.else, %for.end - ret void, !dbg !323 + ret void, !dbg !317 } -declare i32 @BOF_CHECK_GEP(...) #5 +declare i32 @BOF_CHECK_GEP(...) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !324 { +define internal void @goodB2G() #0 !dbg !318 { entry: %data = alloca i32, align 4 %recvResult = alloca i32, align 4 @@ -325,182 +322,181 @@ entry: %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 + #dbg_declare(ptr %data, !319, !DIExpression(), !320) + store i32 -1, ptr %data, align 4, !dbg !321 + #dbg_declare(ptr %recvResult, !322, !DIExpression(), !324) + #dbg_declare(ptr %service, !325, !DIExpression(), !326) + #dbg_declare(ptr %listenSocket, !327, !DIExpression(), !328) + store i32 -1, ptr %listenSocket, align 4, !dbg !328 + #dbg_declare(ptr %acceptSocket, !329, !DIExpression(), !330) + store i32 -1, ptr %acceptSocket, align 4, !dbg !330 + #dbg_declare(ptr %inputBuffer, !331, !DIExpression(), !332) + br label %do.body, !dbg !333 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 + %call = call i32 @socket(i32 noundef 2, i32 noundef 1, i32 noundef 6) #6, !dbg !334 + store i32 %call, ptr %listenSocket, align 4, !dbg !336 + %0 = load i32, ptr %listenSocket, align 4, !dbg !337 + %cmp = icmp eq i32 %0, -1, !dbg !339 + br i1 %cmp, label %if.then, label %if.end, !dbg !339 if.then: ; preds = %do.body - br label %do.end, !dbg !347 + br label %do.end, !dbg !340 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 + call void @llvm.memset.p0.i64(ptr align 4 %service, i8 0, i64 16, i1 false), !dbg !342 + %sin_family = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 0, !dbg !343 + store i16 2, ptr %sin_family, align 4, !dbg !344 + %sin_addr = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 2, !dbg !345 + %s_addr = getelementptr inbounds nuw %struct.in_addr, ptr %sin_addr, i32 0, i32 0, !dbg !346 + store i32 0, ptr %s_addr, align 4, !dbg !347 + %call1 = call zeroext i16 @htons(i16 noundef zeroext 27015) #7, !dbg !348 + %sin_port = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 1, !dbg !349 + store i16 %call1, ptr %sin_port, align 2, !dbg !350 + %1 = load i32, ptr %listenSocket, align 4, !dbg !351 + %call2 = call i32 @bind(i32 noundef %1, ptr noundef %service, i32 noundef 16) #6, !dbg !353 + %cmp3 = icmp eq i32 %call2, -1, !dbg !354 + br i1 %cmp3, label %if.then4, label %if.end5, !dbg !354 if.then4: ; preds = %if.end - br label %do.end, !dbg !363 + br label %do.end, !dbg !355 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 + %2 = load i32, ptr %listenSocket, align 4, !dbg !357 + %call6 = call i32 @listen(i32 noundef %2, i32 noundef 5) #6, !dbg !359 + %cmp7 = icmp eq i32 %call6, -1, !dbg !360 + br i1 %cmp7, label %if.then8, label %if.end9, !dbg !360 if.then8: ; preds = %if.end5 - br label %do.end, !dbg !370 + br label %do.end, !dbg !361 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 + %3 = load i32, ptr %listenSocket, align 4, !dbg !363 + %call10 = call i32 @accept(i32 noundef %3, ptr noundef null, ptr noundef null), !dbg !364 + store i32 %call10, ptr %acceptSocket, align 4, !dbg !365 + %4 = load i32, ptr %acceptSocket, align 4, !dbg !366 + %cmp11 = icmp eq i32 %4, -1, !dbg !368 + br i1 %cmp11, label %if.then12, label %if.end13, !dbg !368 if.then12: ; preds = %if.end9 - br label %do.end, !dbg !379 + br label %do.end, !dbg !369 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 + %5 = load i32, ptr %acceptSocket, align 4, !dbg !371 + %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !372 + %call14 = call i64 @recv(i32 noundef %5, ptr noundef %arraydecay, i64 noundef 13, i32 noundef 0), !dbg !373 + %conv = trunc i64 %call14 to i32, !dbg !373 + store i32 %conv, ptr %recvResult, align 4, !dbg !374 + %6 = load i32, ptr %recvResult, align 4, !dbg !375 + %cmp15 = icmp eq i32 %6, -1, !dbg !377 + br i1 %cmp15, label %if.then19, label %lor.lhs.false, !dbg !378 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 + %7 = load i32, ptr %recvResult, align 4, !dbg !379 + %cmp17 = icmp eq i32 %7, 0, !dbg !380 + br i1 %cmp17, label %if.then19, label %if.end20, !dbg !378 if.then19: ; preds = %lor.lhs.false, %if.end13 - br label %do.end, !dbg !392 + br label %do.end, !dbg !381 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 + %8 = load i32, ptr %recvResult, align 4, !dbg !383 + %idxprom = sext i32 %8 to i64, !dbg !384 + %arrayidx = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 %idxprom, !dbg !384 + store i8 0, ptr %arrayidx, align 1, !dbg !385 + %arraydecay21 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !386 + %call22 = call i32 @atoi(ptr noundef %arraydecay21) #8, !dbg !387 + store i32 %call22, ptr %data, align 4, !dbg !388 + br label %do.end, !dbg !389 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 + %9 = load i32, ptr %listenSocket, align 4, !dbg !390 + %cmp23 = icmp ne i32 %9, -1, !dbg !392 + br i1 %cmp23, label %if.then25, label %if.end27, !dbg !392 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 + %10 = load i32, ptr %listenSocket, align 4, !dbg !393 + %call26 = call i32 @close(i32 noundef %10), !dbg !395 + br label %if.end27, !dbg !396 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 + %11 = load i32, ptr %acceptSocket, align 4, !dbg !397 + %cmp28 = icmp ne i32 %11, -1, !dbg !399 + br i1 %cmp28, label %if.then30, label %if.end32, !dbg !399 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 + %12 = load i32, ptr %acceptSocket, align 4, !dbg !400 + %call31 = call i32 @close(i32 noundef %12), !dbg !402 + br label %if.end32, !dbg !403 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 + #dbg_declare(ptr %i, !404, !DIExpression(), !406) + #dbg_declare(ptr %buffer, !407, !DIExpression(), !408) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !408 + %13 = load i32, ptr %data, align 4, !dbg !409 + %cmp33 = icmp sge i32 %13, 0, !dbg !411 + br i1 %cmp33, label %land.lhs.true, label %if.else, !dbg !412 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 + %14 = load i32, ptr %data, align 4, !dbg !413 + %cmp35 = icmp slt i32 %14, 10, !dbg !414 + br i1 %cmp35, label %if.then37, label %if.else, !dbg !412 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 + %15 = load i32, ptr %data, align 4, !dbg !415 + %idxprom38 = sext i32 %15 to i64, !dbg !417 + %arrayidx39 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom38, !dbg !417 + store i32 1, ptr %arrayidx39, align 4, !dbg !418 + store i32 0, ptr %i, align 4, !dbg !419 + br label %for.cond, !dbg !421 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 + %16 = load i32, ptr %i, align 4, !dbg !422 + %cmp40 = icmp slt i32 %16, 10, !dbg !424 + br i1 %cmp40, label %for.body, label %for.end, !dbg !425 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 + %17 = load i32, ptr %i, align 4, !dbg !426 + %idxprom42 = sext i32 %17 to i64, !dbg !428 + %arrayidx43 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom42, !dbg !428 + %18 = load i32, ptr %arrayidx43, align 4, !dbg !428 + call void @printIntLine(i32 noundef %18), !dbg !429 + br label %for.inc, !dbg !430 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 + %19 = load i32, ptr %i, align 4, !dbg !431 + %inc = add nsw i32 %19, 1, !dbg !431 + store i32 %inc, ptr %i, align 4, !dbg !431 + br label %for.cond, !dbg !432, !llvm.loop !433 for.end: ; preds = %for.cond - br label %if.end44, !dbg !449 + br label %if.end44, !dbg !435 if.else: ; preds = %land.lhs.true, %if.end32 - call void @printLine(ptr noundef @.str.5), !dbg !450 + call void @printLine(ptr noundef @.str.5), !dbg !436 br label %if.end44 if.end44: ; preds = %if.else, %for.end - ret void, !dbg !452 + ret void, !dbg !438 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #3 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nounwind } +attributes #7 = { nounwind willreturn memory(none) } +attributes #8 = { nounwind willreturn memory(read) } !llvm.dbg.cu = !{!32} -!llvm.module.flags = !{!96, !97, !98, !99, !100, !101, !102} -!llvm.ident = !{!103} +!llvm.module.flags = !{!99, !100, !101, !102, !103, !104, !105} +!llvm.ident = !{!106} !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c", directory: "/root/testsss/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} @@ -530,11 +526,11 @@ attributes #9 = { nounwind willreturn memory(read) } !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") +!32 = distinct !DICompileUnit(language: DW_LANG_C11, file: !33, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !34, retainedTypes: !80, globals: !98, splitDebugInlining: false, nameTableKind: None) +!33 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c", directory: "/root/testsss/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") +!36 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/socket_type.h", directory: "", checksumkind: CSK_MD5, checksum: "5ca1da466a04f4b8f6d88ec84b75042e") !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) @@ -547,8 +543,8 @@ attributes #9 = { nounwind willreturn memory(read) } !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} +!49 = !DIFile(filename: "/usr/include/netinet/in.h", directory: "", checksumkind: CSK_MD5, checksum: "fbd766480c8cb9a8fe07ee7aa568ee60") +!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, !77, !78, !79} !51 = !DIEnumerator(name: "IPPROTO_IP", value: 0) !52 = !DIEnumerator(name: "IPPROTO_ICMP", value: 1) !53 = !DIEnumerator(name: "IPPROTO_IGMP", value: 2) @@ -570,384 +566,370 @@ attributes #9 = { nounwind willreturn memory(read) } !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) +!72 = !DIEnumerator(name: "IPPROTO_L2TP", value: 115) +!73 = !DIEnumerator(name: "IPPROTO_SCTP", value: 132) +!74 = !DIEnumerator(name: "IPPROTO_UDPLITE", value: 136) +!75 = !DIEnumerator(name: "IPPROTO_MPLS", value: 137) +!76 = !DIEnumerator(name: "IPPROTO_ETHERNET", value: 143) +!77 = !DIEnumerator(name: "IPPROTO_RAW", value: 255) +!78 = !DIEnumerator(name: "IPPROTO_MPTCP", value: 262) +!79 = !DIEnumerator(name: "IPPROTO_MAX", value: 263) +!80 = !{!81, !86, !37} +!81 = !DIDerivedType(tag: DW_TAG_typedef, name: "in_addr_t", file: !49, line: 30, baseType: !82) +!82 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !83, line: 26, baseType: !84) +!83 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "", checksumkind: CSK_MD5, checksum: "256fcabbefa27ca8cf5e6d37525e6e16") +!84 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint32_t", file: !85, line: 42, baseType: !37) +!85 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") +!86 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !87, size: 64) +!87 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sockaddr", file: !88, line: 183, size: 128, elements: !89) +!88 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/socket.h", directory: "", checksumkind: CSK_MD5, checksum: "71a09f67661e8e55cf505c19b5ddbb85") +!89 = !{!90, !94} +!90 = !DIDerivedType(tag: DW_TAG_member, name: "sa_family", scope: !87, file: !88, line: 185, baseType: !91, size: 16) +!91 = !DIDerivedType(tag: DW_TAG_typedef, name: "sa_family_t", file: !92, line: 28, baseType: !93) +!92 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/sockaddr.h", directory: "", checksumkind: CSK_MD5, checksum: "5066b774f0f3cdb5cbbb5467306060db") +!93 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) +!94 = !DIDerivedType(tag: DW_TAG_member, name: "sa_data", scope: !87, file: !88, line: 186, baseType: !95, size: 112, offset: 16) +!95 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 112, elements: !96) +!96 = !{!97} +!97 = !DISubrange(count: 14) +!98 = !{!0, !7, !12, !17, !22, !27} +!99 = !{i32 7, !"Dwarf Version", i32 5} +!100 = !{i32 2, !"Debug Info Version", i32 3} +!101 = !{i32 1, !"wchar_size", i32 4} +!102 = !{i32 8, !"PIC Level", i32 2} +!103 = !{i32 7, !"PIE Level", i32 2} +!104 = !{i32 7, !"uwtable", i32 2} +!105 = !{i32 7, !"frame-pointer", i32 2} +!106 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!107 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_bad", scope: !2, file: !2, line: 44, type: !108, scopeLine: 45, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !110) +!108 = !DISubroutineType(types: !109) +!109 = !{null} +!110 = !{} +!111 = !DILocalVariable(name: "data", scope: !107, file: !2, line: 46, type: !112) +!112 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!113 = !DILocation(line: 46, column: 9, scope: !107) +!114 = !DILocation(line: 48, column: 10, scope: !107) +!115 = !DILocalVariable(name: "recvResult", scope: !116, file: !2, line: 54, type: !112) +!116 = distinct !DILexicalBlock(scope: !107, file: !2, line: 49, column: 5) +!117 = !DILocation(line: 54, column: 13, scope: !116) +!118 = !DILocalVariable(name: "service", scope: !116, file: !2, line: 55, type: !119) +!119 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sockaddr_in", file: !49, line: 247, size: 128, elements: !120) +!120 = !{!121, !122, !126, !130} +!121 = !DIDerivedType(tag: DW_TAG_member, name: "sin_family", scope: !119, file: !49, line: 249, baseType: !91, size: 16) +!122 = !DIDerivedType(tag: DW_TAG_member, name: "sin_port", scope: !119, file: !49, line: 250, baseType: !123, size: 16, offset: 16) +!123 = !DIDerivedType(tag: DW_TAG_typedef, name: "in_port_t", file: !49, line: 125, baseType: !124) +!124 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint16_t", file: !83, line: 25, baseType: !125) +!125 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint16_t", file: !85, line: 40, baseType: !93) +!126 = !DIDerivedType(tag: DW_TAG_member, name: "sin_addr", scope: !119, file: !49, line: 251, baseType: !127, size: 32, offset: 32) +!127 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "in_addr", file: !49, line: 31, size: 32, elements: !128) +!128 = !{!129} +!129 = !DIDerivedType(tag: DW_TAG_member, name: "s_addr", scope: !127, file: !49, line: 33, baseType: !81, size: 32) +!130 = !DIDerivedType(tag: DW_TAG_member, name: "sin_zero", scope: !119, file: !49, line: 254, baseType: !131, size: 64, offset: 64) +!131 = !DICompositeType(tag: DW_TAG_array_type, baseType: !132, size: 64, elements: !133) +!132 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) +!133 = !{!134} +!134 = !DISubrange(count: 8) +!135 = !DILocation(line: 55, column: 28, scope: !116) +!136 = !DILocalVariable(name: "listenSocket", scope: !116, file: !2, line: 56, type: !112) +!137 = !DILocation(line: 56, column: 16, scope: !116) +!138 = !DILocalVariable(name: "acceptSocket", scope: !116, file: !2, line: 57, type: !112) +!139 = !DILocation(line: 57, column: 16, scope: !116) +!140 = !DILocalVariable(name: "inputBuffer", scope: !116, file: !2, line: 58, type: !95) +!141 = !DILocation(line: 58, column: 14, scope: !116) +!142 = !DILocation(line: 59, column: 9, scope: !116) +!143 = !DILocation(line: 69, column: 28, scope: !144) +!144 = distinct !DILexicalBlock(scope: !116, file: !2, line: 60, column: 9) +!145 = !DILocation(line: 69, column: 26, scope: !144) +!146 = !DILocation(line: 70, column: 17, scope: !147) +!147 = distinct !DILexicalBlock(scope: !144, file: !2, line: 70, column: 17) +!148 = !DILocation(line: 70, column: 30, scope: !147) +!149 = !DILocation(line: 72, column: 17, scope: !150) +!150 = distinct !DILexicalBlock(scope: !147, file: !2, line: 71, column: 13) +!151 = !DILocation(line: 74, column: 13, scope: !144) +!152 = !DILocation(line: 75, column: 21, scope: !144) +!153 = !DILocation(line: 75, column: 32, scope: !144) +!154 = !DILocation(line: 76, column: 21, scope: !144) +!155 = !DILocation(line: 76, column: 30, scope: !144) +!156 = !DILocation(line: 76, column: 37, scope: !144) +!157 = !DILocation(line: 77, column: 32, scope: !144) +!158 = !DILocation(line: 77, column: 21, scope: !144) +!159 = !DILocation(line: 77, column: 30, scope: !144) +!160 = !DILocation(line: 78, column: 22, scope: !161) +!161 = distinct !DILexicalBlock(scope: !144, file: !2, line: 78, column: 17) +!162 = !DILocation(line: 78, column: 17, scope: !161) +!163 = !DILocation(line: 78, column: 81, scope: !161) +!164 = !DILocation(line: 80, column: 17, scope: !165) +!165 = distinct !DILexicalBlock(scope: !161, file: !2, line: 79, column: 13) +!166 = !DILocation(line: 82, column: 24, scope: !167) +!167 = distinct !DILexicalBlock(scope: !144, file: !2, line: 82, column: 17) +!168 = !DILocation(line: 82, column: 17, scope: !167) +!169 = !DILocation(line: 82, column: 54, scope: !167) !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) +!171 = distinct !DILexicalBlock(scope: !167, file: !2, line: 83, column: 13) +!172 = !DILocation(line: 86, column: 35, scope: !144) +!173 = !DILocation(line: 86, column: 28, scope: !144) +!174 = !DILocation(line: 86, column: 26, scope: !144) !175 = !DILocation(line: 87, column: 17, scope: !176) -!176 = distinct !DILexicalBlock(scope: !141, file: !2, line: 87, column: 17) +!176 = distinct !DILexicalBlock(scope: !144, 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) +!178 = !DILocation(line: 89, column: 17, scope: !179) +!179 = distinct !DILexicalBlock(scope: !176, file: !2, line: 88, column: 13) +!180 = !DILocation(line: 92, column: 31, scope: !144) +!181 = !DILocation(line: 92, column: 45, scope: !144) +!182 = !DILocation(line: 92, column: 26, scope: !144) +!183 = !DILocation(line: 92, column: 24, scope: !144) +!184 = !DILocation(line: 93, column: 17, scope: !185) +!185 = distinct !DILexicalBlock(scope: !144, file: !2, line: 93, column: 17) +!186 = !DILocation(line: 93, column: 28, scope: !185) +!187 = !DILocation(line: 93, column: 44, scope: !185) +!188 = !DILocation(line: 93, column: 47, scope: !185) +!189 = !DILocation(line: 93, column: 58, scope: !185) +!190 = !DILocation(line: 95, column: 17, scope: !191) +!191 = distinct !DILexicalBlock(scope: !185, file: !2, line: 94, column: 13) +!192 = !DILocation(line: 98, column: 25, scope: !144) +!193 = !DILocation(line: 98, column: 13, scope: !144) +!194 = !DILocation(line: 98, column: 37, scope: !144) +!195 = !DILocation(line: 100, column: 25, scope: !144) +!196 = !DILocation(line: 100, column: 20, scope: !144) +!197 = !DILocation(line: 100, column: 18, scope: !144) +!198 = !DILocation(line: 101, column: 9, scope: !144) +!199 = !DILocation(line: 103, column: 13, scope: !200) +!200 = distinct !DILexicalBlock(scope: !116, file: !2, line: 103, column: 13) +!201 = !DILocation(line: 103, column: 26, scope: !200) +!202 = !DILocation(line: 105, column: 26, scope: !203) +!203 = distinct !DILexicalBlock(scope: !200, file: !2, line: 104, column: 9) +!204 = !DILocation(line: 105, column: 13, scope: !203) +!205 = !DILocation(line: 106, column: 9, scope: !203) +!206 = !DILocation(line: 107, column: 13, scope: !207) +!207 = distinct !DILexicalBlock(scope: !116, file: !2, line: 107, column: 13) +!208 = !DILocation(line: 107, column: 26, scope: !207) +!209 = !DILocation(line: 109, column: 26, scope: !210) +!210 = distinct !DILexicalBlock(scope: !207, file: !2, line: 108, column: 9) +!211 = !DILocation(line: 109, column: 13, scope: !210) +!212 = !DILocation(line: 110, column: 9, scope: !210) +!213 = !DILocalVariable(name: "i", scope: !214, file: !2, line: 119, type: !112) +!214 = distinct !DILexicalBlock(scope: !107, file: !2, line: 118, column: 5) +!215 = !DILocation(line: 119, column: 13, scope: !214) +!216 = !DILocalVariable(name: "buffer", scope: !214, file: !2, line: 120, type: !217) +!217 = !DICompositeType(tag: DW_TAG_array_type, baseType: !112, size: 320, elements: !218) +!218 = !{!219} +!219 = !DISubrange(count: 10) +!220 = !DILocation(line: 120, column: 13, scope: !214) +!221 = !DILocation(line: 123, column: 13, scope: !222) +!222 = distinct !DILexicalBlock(scope: !214, file: !2, line: 123, column: 13) +!223 = !DILocation(line: 123, column: 18, scope: !222) +!224 = !DILocation(line: 125, column: 20, scope: !225) +!225 = distinct !DILexicalBlock(scope: !222, file: !2, line: 124, column: 9) +!226 = !DILocation(line: 125, column: 13, scope: !225) +!227 = !DILocation(line: 125, column: 26, scope: !225) +!228 = !DILocation(line: 126, column: 30, scope: !225) +!229 = !DILocation(line: 126, column: 38, scope: !225) +!230 = !DILocation(line: 126, column: 43, scope: !225) +!231 = !DILocation(line: 126, column: 57, scope: !225) +!232 = !DILocation(line: 126, column: 13, scope: !225) +!233 = !DILocation(line: 128, column: 19, scope: !234) +!234 = distinct !DILexicalBlock(scope: !225, file: !2, line: 128, column: 13) +!235 = !DILocation(line: 128, column: 17, scope: !234) +!236 = !DILocation(line: 128, column: 24, scope: !237) +!237 = distinct !DILexicalBlock(scope: !234, file: !2, line: 128, column: 13) +!238 = !DILocation(line: 128, column: 26, scope: !237) +!239 = !DILocation(line: 128, column: 13, scope: !234) +!240 = !DILocation(line: 130, column: 37, scope: !241) +!241 = distinct !DILexicalBlock(scope: !237, file: !2, line: 129, column: 13) +!242 = !DILocation(line: 130, column: 30, scope: !241) +!243 = !DILocation(line: 130, column: 17, scope: !241) +!244 = !DILocation(line: 131, column: 13, scope: !241) +!245 = !DILocation(line: 128, column: 33, scope: !237) +!246 = !DILocation(line: 128, column: 13, scope: !237) +!247 = distinct !{!247, !239, !248, !249} +!248 = !DILocation(line: 131, column: 13, scope: !234) +!249 = !{!"llvm.loop.mustprogress"} +!250 = !DILocation(line: 132, column: 9, scope: !225) +!251 = !DILocation(line: 135, column: 13, scope: !252) +!252 = distinct !DILexicalBlock(scope: !222, file: !2, line: 134, column: 9) +!253 = !DILocation(line: 138, column: 1, scope: !107) +!254 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_good", scope: !2, file: !2, line: 270, type: !108, scopeLine: 271, spFlags: DISPFlagDefinition, unit: !32) +!255 = !DILocation(line: 272, column: 5, scope: !254) +!256 = !DILocation(line: 273, column: 5, scope: !254) +!257 = !DILocation(line: 274, column: 1, scope: !254) +!258 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 285, type: !259, scopeLine: 286, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !110) +!259 = !DISubroutineType(types: !260) +!260 = !{!112, !112, !261} +!261 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !262, size: 64) +!262 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!263 = !DILocalVariable(name: "argc", arg: 1, scope: !258, file: !2, line: 285, type: !112) +!264 = !DILocation(line: 285, column: 14, scope: !258) +!265 = !DILocalVariable(name: "argv", arg: 2, scope: !258, file: !2, line: 285, type: !261) +!266 = !DILocation(line: 285, column: 27, scope: !258) +!267 = !DILocation(line: 288, column: 22, scope: !258) +!268 = !DILocation(line: 288, column: 12, scope: !258) +!269 = !DILocation(line: 288, column: 5, scope: !258) +!270 = !DILocation(line: 290, column: 5, scope: !258) +!271 = !DILocation(line: 291, column: 5, scope: !258) +!272 = !DILocation(line: 292, column: 5, scope: !258) +!273 = !DILocation(line: 295, column: 5, scope: !258) +!274 = !DILocation(line: 296, column: 5, scope: !258) +!275 = !DILocation(line: 297, column: 5, scope: !258) +!276 = !DILocation(line: 299, column: 5, scope: !258) +!277 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 145, type: !108, scopeLine: 146, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !110) +!278 = !DILocalVariable(name: "data", scope: !277, file: !2, line: 147, type: !112) +!279 = !DILocation(line: 147, column: 9, scope: !277) +!280 = !DILocation(line: 149, column: 10, scope: !277) +!281 = !DILocation(line: 152, column: 10, scope: !277) +!282 = !DILocalVariable(name: "i", scope: !283, file: !2, line: 154, type: !112) +!283 = distinct !DILexicalBlock(scope: !277, file: !2, line: 153, column: 5) +!284 = !DILocation(line: 154, column: 13, scope: !283) +!285 = !DILocalVariable(name: "buffer", scope: !283, file: !2, line: 155, type: !217) +!286 = !DILocation(line: 155, column: 13, scope: !283) +!287 = !DILocation(line: 158, column: 13, scope: !288) +!288 = distinct !DILexicalBlock(scope: !283, file: !2, line: 158, column: 13) +!289 = !DILocation(line: 158, column: 18, scope: !288) +!290 = !DILocation(line: 160, column: 27, scope: !291) +!291 = distinct !DILexicalBlock(scope: !288, file: !2, line: 159, column: 9) +!292 = !DILocation(line: 160, column: 35, scope: !291) +!293 = !DILocation(line: 160, column: 40, scope: !291) +!294 = !DILocation(line: 160, column: 13, scope: !291) +!295 = !DILocation(line: 161, column: 20, scope: !291) +!296 = !DILocation(line: 161, column: 13, scope: !291) +!297 = !DILocation(line: 161, column: 26, scope: !291) +!298 = !DILocation(line: 163, column: 19, scope: !299) +!299 = distinct !DILexicalBlock(scope: !291, file: !2, line: 163, column: 13) +!300 = !DILocation(line: 163, column: 17, scope: !299) +!301 = !DILocation(line: 163, column: 24, scope: !302) +!302 = distinct !DILexicalBlock(scope: !299, file: !2, line: 163, column: 13) +!303 = !DILocation(line: 163, column: 26, scope: !302) +!304 = !DILocation(line: 163, column: 13, scope: !299) +!305 = !DILocation(line: 165, column: 37, scope: !306) +!306 = distinct !DILexicalBlock(scope: !302, file: !2, line: 164, column: 13) +!307 = !DILocation(line: 165, column: 30, scope: !306) +!308 = !DILocation(line: 165, column: 17, scope: !306) +!309 = !DILocation(line: 166, column: 13, scope: !306) +!310 = !DILocation(line: 163, column: 33, scope: !302) +!311 = !DILocation(line: 163, column: 13, scope: !302) +!312 = distinct !{!312, !304, !313, !249} +!313 = !DILocation(line: 166, column: 13, scope: !299) +!314 = !DILocation(line: 167, column: 9, scope: !291) +!315 = !DILocation(line: 170, column: 13, scope: !316) +!316 = distinct !DILexicalBlock(scope: !288, file: !2, line: 169, column: 9) +!317 = !DILocation(line: 173, column: 1, scope: !277) +!318 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 176, type: !108, scopeLine: 177, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !110) +!319 = !DILocalVariable(name: "data", scope: !318, file: !2, line: 178, type: !112) +!320 = !DILocation(line: 178, column: 9, scope: !318) +!321 = !DILocation(line: 180, column: 10, scope: !318) +!322 = !DILocalVariable(name: "recvResult", scope: !323, file: !2, line: 186, type: !112) +!323 = distinct !DILexicalBlock(scope: !318, file: !2, line: 181, column: 5) +!324 = !DILocation(line: 186, column: 13, scope: !323) +!325 = !DILocalVariable(name: "service", scope: !323, file: !2, line: 187, type: !119) +!326 = !DILocation(line: 187, column: 28, scope: !323) +!327 = !DILocalVariable(name: "listenSocket", scope: !323, file: !2, line: 188, type: !112) +!328 = !DILocation(line: 188, column: 16, scope: !323) +!329 = !DILocalVariable(name: "acceptSocket", scope: !323, file: !2, line: 189, type: !112) +!330 = !DILocation(line: 189, column: 16, scope: !323) +!331 = !DILocalVariable(name: "inputBuffer", scope: !323, file: !2, line: 190, type: !95) +!332 = !DILocation(line: 190, column: 14, scope: !323) +!333 = !DILocation(line: 191, column: 9, scope: !323) +!334 = !DILocation(line: 201, column: 28, scope: !335) +!335 = distinct !DILexicalBlock(scope: !323, file: !2, line: 192, column: 9) +!336 = !DILocation(line: 201, column: 26, scope: !335) +!337 = !DILocation(line: 202, column: 17, scope: !338) +!338 = distinct !DILexicalBlock(scope: !335, file: !2, line: 202, column: 17) +!339 = !DILocation(line: 202, column: 30, scope: !338) +!340 = !DILocation(line: 204, column: 17, scope: !341) +!341 = distinct !DILexicalBlock(scope: !338, file: !2, line: 203, column: 13) +!342 = !DILocation(line: 206, column: 13, scope: !335) +!343 = !DILocation(line: 207, column: 21, scope: !335) +!344 = !DILocation(line: 207, column: 32, scope: !335) +!345 = !DILocation(line: 208, column: 21, scope: !335) +!346 = !DILocation(line: 208, column: 30, scope: !335) +!347 = !DILocation(line: 208, column: 37, scope: !335) +!348 = !DILocation(line: 209, column: 32, scope: !335) +!349 = !DILocation(line: 209, column: 21, scope: !335) +!350 = !DILocation(line: 209, column: 30, scope: !335) +!351 = !DILocation(line: 210, column: 22, scope: !352) +!352 = distinct !DILexicalBlock(scope: !335, file: !2, line: 210, column: 17) +!353 = !DILocation(line: 210, column: 17, scope: !352) +!354 = !DILocation(line: 210, column: 81, scope: !352) +!355 = !DILocation(line: 212, column: 17, scope: !356) +!356 = distinct !DILexicalBlock(scope: !352, file: !2, line: 211, column: 13) +!357 = !DILocation(line: 214, column: 24, scope: !358) +!358 = distinct !DILexicalBlock(scope: !335, file: !2, line: 214, column: 17) +!359 = !DILocation(line: 214, column: 17, scope: !358) +!360 = !DILocation(line: 214, column: 54, scope: !358) +!361 = !DILocation(line: 216, column: 17, scope: !362) +!362 = distinct !DILexicalBlock(scope: !358, file: !2, line: 215, column: 13) +!363 = !DILocation(line: 218, column: 35, scope: !335) +!364 = !DILocation(line: 218, column: 28, scope: !335) +!365 = !DILocation(line: 218, column: 26, scope: !335) +!366 = !DILocation(line: 219, column: 17, scope: !367) +!367 = distinct !DILexicalBlock(scope: !335, file: !2, line: 219, column: 17) +!368 = !DILocation(line: 219, column: 30, scope: !367) +!369 = !DILocation(line: 221, column: 17, scope: !370) +!370 = distinct !DILexicalBlock(scope: !367, file: !2, line: 220, column: 13) +!371 = !DILocation(line: 224, column: 31, scope: !335) +!372 = !DILocation(line: 224, column: 45, scope: !335) +!373 = !DILocation(line: 224, column: 26, scope: !335) +!374 = !DILocation(line: 224, column: 24, scope: !335) +!375 = !DILocation(line: 225, column: 17, scope: !376) +!376 = distinct !DILexicalBlock(scope: !335, file: !2, line: 225, column: 17) +!377 = !DILocation(line: 225, column: 28, scope: !376) +!378 = !DILocation(line: 225, column: 44, scope: !376) +!379 = !DILocation(line: 225, column: 47, scope: !376) +!380 = !DILocation(line: 225, column: 58, scope: !376) +!381 = !DILocation(line: 227, column: 17, scope: !382) +!382 = distinct !DILexicalBlock(scope: !376, file: !2, line: 226, column: 13) +!383 = !DILocation(line: 230, column: 25, scope: !335) +!384 = !DILocation(line: 230, column: 13, scope: !335) +!385 = !DILocation(line: 230, column: 37, scope: !335) +!386 = !DILocation(line: 232, column: 25, scope: !335) +!387 = !DILocation(line: 232, column: 20, scope: !335) +!388 = !DILocation(line: 232, column: 18, scope: !335) +!389 = !DILocation(line: 233, column: 9, scope: !335) +!390 = !DILocation(line: 235, column: 13, scope: !391) +!391 = distinct !DILexicalBlock(scope: !323, file: !2, line: 235, column: 13) +!392 = !DILocation(line: 235, column: 26, scope: !391) +!393 = !DILocation(line: 237, column: 26, scope: !394) +!394 = distinct !DILexicalBlock(scope: !391, file: !2, line: 236, column: 9) +!395 = !DILocation(line: 237, column: 13, scope: !394) +!396 = !DILocation(line: 238, column: 9, scope: !394) +!397 = !DILocation(line: 239, column: 13, scope: !398) +!398 = distinct !DILexicalBlock(scope: !323, file: !2, line: 239, column: 13) +!399 = !DILocation(line: 239, column: 26, scope: !398) +!400 = !DILocation(line: 241, column: 26, scope: !401) +!401 = distinct !DILexicalBlock(scope: !398, file: !2, line: 240, column: 9) +!402 = !DILocation(line: 241, column: 13, scope: !401) +!403 = !DILocation(line: 242, column: 9, scope: !401) +!404 = !DILocalVariable(name: "i", scope: !405, file: !2, line: 251, type: !112) +!405 = distinct !DILexicalBlock(scope: !318, file: !2, line: 250, column: 5) +!406 = !DILocation(line: 251, column: 13, scope: !405) +!407 = !DILocalVariable(name: "buffer", scope: !405, file: !2, line: 252, type: !217) +!408 = !DILocation(line: 252, column: 13, scope: !405) +!409 = !DILocation(line: 254, column: 13, scope: !410) +!410 = distinct !DILexicalBlock(scope: !405, file: !2, line: 254, column: 13) +!411 = !DILocation(line: 254, column: 18, scope: !410) +!412 = !DILocation(line: 254, column: 23, scope: !410) +!413 = !DILocation(line: 254, column: 26, scope: !410) +!414 = !DILocation(line: 254, column: 31, scope: !410) +!415 = !DILocation(line: 256, column: 20, scope: !416) +!416 = distinct !DILexicalBlock(scope: !410, file: !2, line: 255, column: 9) +!417 = !DILocation(line: 256, column: 13, scope: !416) +!418 = !DILocation(line: 256, column: 26, scope: !416) +!419 = !DILocation(line: 258, column: 19, scope: !420) +!420 = distinct !DILexicalBlock(scope: !416, file: !2, line: 258, column: 13) +!421 = !DILocation(line: 258, column: 17, scope: !420) +!422 = !DILocation(line: 258, column: 24, scope: !423) +!423 = distinct !DILexicalBlock(scope: !420, file: !2, line: 258, column: 13) +!424 = !DILocation(line: 258, column: 26, scope: !423) +!425 = !DILocation(line: 258, column: 13, scope: !420) +!426 = !DILocation(line: 260, column: 37, scope: !427) +!427 = distinct !DILexicalBlock(scope: !423, file: !2, line: 259, column: 13) +!428 = !DILocation(line: 260, column: 30, scope: !427) +!429 = !DILocation(line: 260, column: 17, scope: !427) +!430 = !DILocation(line: 261, column: 13, scope: !427) +!431 = !DILocation(line: 258, column: 33, scope: !423) +!432 = !DILocation(line: 258, column: 13, scope: !423) +!433 = distinct !{!433, !425, !434, !249} +!434 = !DILocation(line: 261, column: 13, scope: !420) +!435 = !DILocation(line: 262, column: 9, scope: !416) +!436 = !DILocation(line: 265, column: 13, scope: !437) +!437 = distinct !DILexicalBlock(scope: !410, file: !2, line: 264, column: 9) +!438 = !DILocation(line: 268, column: 1, scope: !318) 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 index 78ae411dd..d93a65b99 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,30 +16,30 @@ 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 + #dbg_declare(ptr %data, !50, !DIExpression(), !51) store i32 -1, ptr %data, align 4, !dbg !52 - %call = call i32 @rand() #5, !dbg !53 + %call = call i32 @rand() #4, !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 + %call1 = call i32 @rand() #4, !dbg !53 %shl = shl i32 %call1, 30, !dbg !53 - %call2 = call i32 @rand() #5, !dbg !53 + %call2 = call i32 @rand() #4, !dbg !53 %shl3 = shl i32 %call2, 15, !dbg !53 %xor = xor i32 %shl, %shl3, !dbg !53 - %call4 = call i32 @rand() #5, !dbg !53 + %call4 = call i32 @rand() #4, !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 + %call6 = call i32 @rand() #4, !dbg !53 %shl7 = shl i32 %call6, 30, !dbg !53 - %call8 = call i32 @rand() #5, !dbg !53 + %call8 = call i32 @rand() #4, !dbg !53 %shl9 = shl i32 %call8, 15, !dbg !53 %xor10 = xor i32 %shl7, %shl9, !dbg !53 - %call11 = call i32 @rand() #5, !dbg !53 + %call11 = call i32 @rand() #4, !dbg !53 %xor12 = xor i32 %xor10, %call11, !dbg !53 %sub = sub i32 0, %xor12, !dbg !53 %sub13 = sub i32 %sub, 1, !dbg !53 @@ -48,265 +48,261 @@ cond.false: ; preds = %entry 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 + #dbg_declare(ptr %i, !55, !DIExpression(), !57) + #dbg_declare(ptr %buffer, !58, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.else, !dbg !65 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 + %1 = load i32, ptr %data, align 4, !dbg !66 + %idxprom = sext i32 %1 to i64, !dbg !68 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !68 + store i32 1, ptr %arrayidx, align 4, !dbg !69 + %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !70 + %2 = load i32, ptr %data, align 4, !dbg !71 + %conv = sext i32 %2 to i64, !dbg !71 + %mul = mul i64 %conv, 4, !dbg !72 + %sub14 = sub i64 %mul, 1, !dbg !73 + %call15 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %sub14), !dbg !74 + store i32 0, ptr %i, align 4, !dbg !75 + br label %for.cond, !dbg !77 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 + %3 = load i32, ptr %i, align 4, !dbg !78 + %cmp16 = icmp slt i32 %3, 10, !dbg !80 + br i1 %cmp16, label %for.body, label %for.end, !dbg !81 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 + %4 = load i32, ptr %i, align 4, !dbg !82 + %idxprom18 = sext i32 %4 to i64, !dbg !84 + %arrayidx19 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom18, !dbg !84 + %5 = load i32, ptr %arrayidx19, align 4, !dbg !84 + call void @printIntLine(i32 noundef %5), !dbg !85 + br label %for.inc, !dbg !86 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 + %6 = load i32, ptr %i, align 4, !dbg !87 + %inc = add nsw i32 %6, 1, !dbg !87 + store i32 %inc, ptr %i, align 4, !dbg !87 + br label %for.cond, !dbg !88, !llvm.loop !89 for.end: ; preds = %for.cond - br label %if.end, !dbg !93 + br label %if.end, !dbg !92 if.else: ; preds = %cond.end - call void @printLine(ptr noundef @.str), !dbg !94 + call void @printLine(ptr noundef @.str), !dbg !93 br label %if.end if.end: ; preds = %if.else, %for.end - ret void, !dbg !96 + ret void, !dbg !95 } -; 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 +declare i32 @rand() #1 ; 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 @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare void @printIntLine(i32 noundef) #4 +declare void @printIntLine(i32 noundef) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_good() #0 !dbg !97 { +define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_good() #0 !dbg !96 { entry: - call void @goodG2B(), !dbg !98 - call void @goodB2G(), !dbg !99 - ret void, !dbg !100 + call void @goodG2B(), !dbg !97 + call void @goodB2G(), !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 !101 { +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 !106, metadata !DIExpression()), !dbg !107 + #dbg_declare(ptr %argc.addr, !105, !DIExpression(), !106) 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 + #dbg_declare(ptr %argv.addr, !107, !DIExpression(), !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.1), !dbg !112 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_good(), !dbg !113 + call void @printLine(ptr noundef @.str.2), !dbg !114 + call void @printLine(ptr noundef @.str.3), !dbg !115 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_bad(), !dbg !116 + call void @printLine(ptr noundef @.str.4), !dbg !117 + ret i32 0, !dbg !118 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !120 { +define internal void @goodG2B() #0 !dbg !119 { 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 + #dbg_declare(ptr %data, !120, !DIExpression(), !121) + store i32 -1, ptr %data, align 4, !dbg !122 + store i32 7, ptr %data, align 4, !dbg !123 + #dbg_declare(ptr %i, !124, !DIExpression(), !126) + #dbg_declare(ptr %buffer, !127, !DIExpression(), !128) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !128 + %0 = load i32, ptr %data, align 4, !dbg !129 + %cmp = icmp sge i32 %0, 0, !dbg !131 + br i1 %cmp, label %if.then, label %if.else, !dbg !131 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 + %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 + store i32 1, ptr %arrayidx, align 4, !dbg !135 + %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !136 + %2 = load i32, ptr %data, align 4, !dbg !137 + %conv = sext i32 %2 to i64, !dbg !137 + %mul = mul i64 %conv, 4, !dbg !138 + %sub = sub i64 %mul, 1, !dbg !139 + %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %sub), !dbg !140 + store i32 0, ptr %i, align 4, !dbg !141 + br label %for.cond, !dbg !143 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 + %3 = load i32, ptr %i, align 4, !dbg !144 + %cmp1 = icmp slt i32 %3, 10, !dbg !146 + br i1 %cmp1, label %for.body, label %for.end, !dbg !147 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 + %4 = load i32, ptr %i, align 4, !dbg !148 + %idxprom3 = sext i32 %4 to i64, !dbg !150 + %arrayidx4 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom3, !dbg !150 + %5 = load i32, ptr %arrayidx4, align 4, !dbg !150 + call void @printIntLine(i32 noundef %5), !dbg !151 + br label %for.inc, !dbg !152 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 + %6 = load i32, ptr %i, align 4, !dbg !153 + %inc = add nsw i32 %6, 1, !dbg !153 + store i32 %inc, ptr %i, align 4, !dbg !153 + br label %for.cond, !dbg !154, !llvm.loop !155 for.end: ; preds = %for.cond - br label %if.end, !dbg !159 + br label %if.end, !dbg !157 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !160 + call void @printLine(ptr noundef @.str), !dbg !158 br label %if.end if.end: ; preds = %if.else, %for.end - ret void, !dbg !162 + ret void, !dbg !160 } -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !163 { +define internal void @goodB2G() #0 !dbg !161 { 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 + #dbg_declare(ptr %data, !162, !DIExpression(), !163) + store i32 -1, ptr %data, align 4, !dbg !164 + %call = call i32 @rand() #4, !dbg !165 + %and = and i32 %call, 1, !dbg !165 + %tobool = icmp ne i32 %and, 0, !dbg !165 + br i1 %tobool, label %cond.true, label %cond.false, !dbg !165 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 + %call1 = call i32 @rand() #4, !dbg !165 + %shl = shl i32 %call1, 30, !dbg !165 + %call2 = call i32 @rand() #4, !dbg !165 + %shl3 = shl i32 %call2, 15, !dbg !165 + %xor = xor i32 %shl, %shl3, !dbg !165 + %call4 = call i32 @rand() #4, !dbg !165 + %xor5 = xor i32 %xor, %call4, !dbg !165 + br label %cond.end, !dbg !165 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 + %call6 = call i32 @rand() #4, !dbg !165 + %shl7 = shl i32 %call6, 30, !dbg !165 + %call8 = call i32 @rand() #4, !dbg !165 + %shl9 = shl i32 %call8, 15, !dbg !165 + %xor10 = xor i32 %shl7, %shl9, !dbg !165 + %call11 = call i32 @rand() #4, !dbg !165 + %xor12 = xor i32 %xor10, %call11, !dbg !165 + %sub = sub i32 0, %xor12, !dbg !165 + %sub13 = sub i32 %sub, 1, !dbg !165 + br label %cond.end, !dbg !165 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 + %cond = phi i32 [ %xor5, %cond.true ], [ %sub13, %cond.false ], !dbg !165 + store i32 %cond, ptr %data, align 4, !dbg !166 + #dbg_declare(ptr %i, !167, !DIExpression(), !169) + #dbg_declare(ptr %buffer, !170, !DIExpression(), !171) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !171 + %0 = load i32, ptr %data, align 4, !dbg !172 + %cmp = icmp sge i32 %0, 0, !dbg !174 + br i1 %cmp, label %land.lhs.true, label %if.else, !dbg !175 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 + %1 = load i32, ptr %data, align 4, !dbg !176 + %cmp14 = icmp slt i32 %1, 10, !dbg !177 + br i1 %cmp14, label %if.then, label %if.else, !dbg !175 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 + %2 = load i32, ptr %data, align 4, !dbg !178 + %idxprom = sext i32 %2 to i64, !dbg !180 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !180 + store i32 1, ptr %arrayidx, align 4, !dbg !181 + store i32 0, ptr %i, align 4, !dbg !182 + br label %for.cond, !dbg !184 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 + %3 = load i32, ptr %i, align 4, !dbg !185 + %cmp15 = icmp slt i32 %3, 10, !dbg !187 + br i1 %cmp15, label %for.body, label %for.end, !dbg !188 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 + %4 = load i32, ptr %i, align 4, !dbg !189 + %idxprom16 = sext i32 %4 to i64, !dbg !191 + %arrayidx17 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom16, !dbg !191 + %5 = load i32, ptr %arrayidx17, align 4, !dbg !191 + call void @printIntLine(i32 noundef %5), !dbg !192 + br label %for.inc, !dbg !193 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 + %6 = load i32, ptr %i, align 4, !dbg !194 + %inc = add nsw i32 %6, 1, !dbg !194 + store i32 %inc, ptr %i, align 4, !dbg !194 + br label %for.cond, !dbg !195, !llvm.loop !196 for.end: ; preds = %for.cond - br label %if.end, !dbg !201 + br label %if.end, !dbg !198 if.else: ; preds = %land.lhs.true, %cond.end - call void @printLine(ptr noundef @.str.5), !dbg !202 + call void @printLine(ptr noundef @.str.5), !dbg !199 br label %if.end if.end: ; preds = %if.else, %for.end - ret void, !dbg !204 + ret void, !dbg !201 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!32} !llvm.module.flags = !{!38, !39, !40, !41, !42, !43, !44} @@ -314,7 +310,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c", directory: "/root/testsss/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} @@ -344,8 +340,8 @@ attributes #5 = { nounwind } !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") +!32 = distinct !DICompileUnit(language: DW_LANG_C11, file: !33, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !34, globals: !37, splitDebugInlining: false, nameTableKind: None) +!33 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c", directory: "/root/testsss/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) @@ -357,7 +353,7 @@ attributes #5 = { nounwind } !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"} +!45 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -378,142 +374,139 @@ attributes #5 = { nounwind } !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) +!66 = !DILocation(line: 36, column: 20, scope: !67) +!67 = distinct !DILexicalBlock(scope: !64, file: !2, line: 35, column: 9) +!68 = !DILocation(line: 36, column: 13, scope: !67) +!69 = !DILocation(line: 36, column: 26, scope: !67) +!70 = !DILocation(line: 37, column: 30, scope: !67) +!71 = !DILocation(line: 37, column: 38, scope: !67) +!72 = !DILocation(line: 37, column: 43, scope: !67) +!73 = !DILocation(line: 37, column: 57, scope: !67) +!74 = !DILocation(line: 37, column: 13, scope: !67) +!75 = !DILocation(line: 39, column: 19, scope: !76) +!76 = distinct !DILexicalBlock(scope: !67, file: !2, line: 39, column: 13) +!77 = !DILocation(line: 39, column: 17, scope: !76) +!78 = !DILocation(line: 39, column: 24, scope: !79) +!79 = distinct !DILexicalBlock(scope: !76, file: !2, line: 39, column: 13) +!80 = !DILocation(line: 39, column: 26, scope: !79) +!81 = !DILocation(line: 39, column: 13, scope: !76) +!82 = !DILocation(line: 41, column: 37, scope: !83) +!83 = distinct !DILexicalBlock(scope: !79, file: !2, line: 40, column: 13) +!84 = !DILocation(line: 41, column: 30, scope: !83) +!85 = !DILocation(line: 41, column: 17, scope: !83) +!86 = !DILocation(line: 42, column: 13, scope: !83) +!87 = !DILocation(line: 39, column: 33, scope: !79) +!88 = !DILocation(line: 39, column: 13, scope: !79) +!89 = distinct !{!89, !81, !90, !91} +!90 = !DILocation(line: 42, column: 13, scope: !76) +!91 = !{!"llvm.loop.mustprogress"} +!92 = !DILocation(line: 43, column: 9, scope: !67) +!93 = !DILocation(line: 46, column: 13, scope: !94) +!94 = distinct !DILexicalBlock(scope: !64, file: !2, line: 45, column: 9) +!95 = !DILocation(line: 49, column: 1, scope: !46) +!96 = 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) +!97 = !DILocation(line: 116, column: 5, scope: !96) +!98 = !DILocation(line: 117, column: 5, scope: !96) +!99 = !DILocation(line: 118, column: 1, scope: !96) +!100 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 129, type: !101, scopeLine: 130, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !49) +!101 = !DISubroutineType(types: !102) +!102 = !{!35, !35, !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: 129, type: !35) +!106 = !DILocation(line: 129, column: 14, scope: !100) +!107 = !DILocalVariable(name: "argv", arg: 2, scope: !100, file: !2, line: 129, type: !103) +!108 = !DILocation(line: 129, column: 27, scope: !100) +!109 = !DILocation(line: 132, column: 22, scope: !100) +!110 = !DILocation(line: 132, column: 12, scope: !100) +!111 = !DILocation(line: 132, column: 5, scope: !100) +!112 = !DILocation(line: 134, column: 5, scope: !100) +!113 = !DILocation(line: 135, column: 5, scope: !100) +!114 = !DILocation(line: 136, column: 5, scope: !100) +!115 = !DILocation(line: 139, column: 5, scope: !100) +!116 = !DILocation(line: 140, column: 5, scope: !100) +!117 = !DILocation(line: 141, column: 5, scope: !100) +!118 = !DILocation(line: 143, column: 5, scope: !100) +!119 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 56, type: !47, scopeLine: 57, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !49) +!120 = !DILocalVariable(name: "data", scope: !119, file: !2, line: 58, type: !35) +!121 = !DILocation(line: 58, column: 9, scope: !119) +!122 = !DILocation(line: 60, column: 10, scope: !119) +!123 = !DILocation(line: 63, column: 10, scope: !119) +!124 = !DILocalVariable(name: "i", scope: !125, file: !2, line: 65, type: !35) +!125 = distinct !DILexicalBlock(scope: !119, file: !2, line: 64, column: 5) +!126 = !DILocation(line: 65, column: 13, scope: !125) +!127 = !DILocalVariable(name: "buffer", scope: !125, file: !2, line: 66, type: !59) +!128 = !DILocation(line: 66, column: 13, scope: !125) +!129 = !DILocation(line: 69, column: 13, scope: !130) +!130 = distinct !DILexicalBlock(scope: !125, file: !2, line: 69, column: 13) +!131 = !DILocation(line: 69, column: 18, scope: !130) +!132 = !DILocation(line: 71, column: 20, scope: !133) +!133 = distinct !DILexicalBlock(scope: !130, file: !2, line: 70, column: 9) +!134 = !DILocation(line: 71, column: 13, scope: !133) +!135 = !DILocation(line: 71, column: 26, scope: !133) +!136 = !DILocation(line: 72, column: 28, scope: !133) +!137 = !DILocation(line: 72, column: 36, scope: !133) +!138 = !DILocation(line: 72, column: 41, scope: !133) +!139 = !DILocation(line: 72, column: 55, scope: !133) +!140 = !DILocation(line: 72, column: 13, scope: !133) +!141 = !DILocation(line: 74, column: 19, scope: !142) +!142 = distinct !DILexicalBlock(scope: !133, file: !2, line: 74, column: 13) +!143 = !DILocation(line: 74, column: 17, scope: !142) +!144 = !DILocation(line: 74, column: 24, scope: !145) +!145 = distinct !DILexicalBlock(scope: !142, file: !2, line: 74, column: 13) +!146 = !DILocation(line: 74, column: 26, scope: !145) +!147 = !DILocation(line: 74, column: 13, scope: !142) +!148 = !DILocation(line: 76, column: 37, scope: !149) +!149 = distinct !DILexicalBlock(scope: !145, file: !2, line: 75, column: 13) +!150 = !DILocation(line: 76, column: 30, scope: !149) +!151 = !DILocation(line: 76, column: 17, scope: !149) +!152 = !DILocation(line: 77, column: 13, scope: !149) +!153 = !DILocation(line: 74, column: 33, scope: !145) +!154 = !DILocation(line: 74, column: 13, scope: !145) +!155 = distinct !{!155, !147, !156, !91} +!156 = !DILocation(line: 77, column: 13, scope: !142) +!157 = !DILocation(line: 78, column: 9, scope: !133) +!158 = !DILocation(line: 81, column: 13, scope: !159) +!159 = distinct !DILexicalBlock(scope: !130, file: !2, line: 80, column: 9) +!160 = !DILocation(line: 84, column: 1, scope: !119) +!161 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 87, type: !47, scopeLine: 88, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !49) +!162 = !DILocalVariable(name: "data", scope: !161, file: !2, line: 89, type: !35) +!163 = !DILocation(line: 89, column: 9, scope: !161) +!164 = !DILocation(line: 91, column: 10, scope: !161) +!165 = !DILocation(line: 93, column: 12, scope: !161) +!166 = !DILocation(line: 93, column: 10, scope: !161) +!167 = !DILocalVariable(name: "i", scope: !168, file: !2, line: 95, type: !35) +!168 = distinct !DILexicalBlock(scope: !161, file: !2, line: 94, column: 5) +!169 = !DILocation(line: 95, column: 13, scope: !168) +!170 = !DILocalVariable(name: "buffer", scope: !168, file: !2, line: 96, type: !59) +!171 = !DILocation(line: 96, column: 13, scope: !168) +!172 = !DILocation(line: 98, column: 13, scope: !173) +!173 = distinct !DILexicalBlock(scope: !168, file: !2, line: 98, column: 13) +!174 = !DILocation(line: 98, column: 18, scope: !173) +!175 = !DILocation(line: 98, column: 23, scope: !173) +!176 = !DILocation(line: 98, column: 26, scope: !173) +!177 = !DILocation(line: 98, column: 31, scope: !173) +!178 = !DILocation(line: 100, column: 20, scope: !179) +!179 = distinct !DILexicalBlock(scope: !173, file: !2, line: 99, column: 9) +!180 = !DILocation(line: 100, column: 13, scope: !179) +!181 = !DILocation(line: 100, column: 26, scope: !179) +!182 = !DILocation(line: 102, column: 19, scope: !183) +!183 = distinct !DILexicalBlock(scope: !179, file: !2, line: 102, column: 13) +!184 = !DILocation(line: 102, column: 17, scope: !183) +!185 = !DILocation(line: 102, column: 24, scope: !186) +!186 = distinct !DILexicalBlock(scope: !183, file: !2, line: 102, column: 13) +!187 = !DILocation(line: 102, column: 26, scope: !186) +!188 = !DILocation(line: 102, column: 13, scope: !183) +!189 = !DILocation(line: 104, column: 37, scope: !190) +!190 = distinct !DILexicalBlock(scope: !186, file: !2, line: 103, column: 13) +!191 = !DILocation(line: 104, column: 30, scope: !190) +!192 = !DILocation(line: 104, column: 17, scope: !190) +!193 = !DILocation(line: 105, column: 13, scope: !190) +!194 = !DILocation(line: 102, column: 33, scope: !186) +!195 = !DILocation(line: 102, column: 13, scope: !186) +!196 = distinct !{!196, !188, !197, !91} +!197 = !DILocation(line: 105, column: 13, scope: !183) +!198 = !DILocation(line: 106, column: 9, scope: !179) +!199 = !DILocation(line: 109, column: 13, scope: !200) +!200 = distinct !DILexicalBlock(scope: !173, file: !2, line: 108, column: 9) +!201 = !DILocation(line: 112, column: 1, scope: !161) 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 index 7f0db9d35..8f1bc454d 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -14,13 +14,13 @@ 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 + #dbg_declare(ptr %data, !41, !DIExpression(), !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 + #dbg_declare(ptr %source, !46, !DIExpression(), !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 + #dbg_declare(ptr %i, !52, !DIExpression(), !56) store i64 0, ptr %i, align 8, !dbg !57 br label %for.cond, !dbg !59 @@ -31,11 +31,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx1 = getelementptr inbounds nuw i32, ptr %4, i64 %5, !dbg !67 store i32 %3, ptr %arrayidx1, align 4, !dbg !69 br label %for.inc, !dbg !70 @@ -57,17 +57,14 @@ for.end: ; preds = %for.cond 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 void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare void @printIntLine(i32 noundef) #3 +declare void @printIntLine(i32 noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01_good() #0 !dbg !83 { @@ -84,12 +81,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !91, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !93, !DIExpression(), !94) + %call = call i64 @time(ptr noundef null) #4, !dbg !95 %conv = trunc i64 %call to i32, !dbg !96 - call void @srand(i32 noundef %conv) #5, !dbg !97 + call void @srand(i32 noundef %conv) #4, !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 @@ -100,12 +97,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !105 { @@ -113,13 +110,13 @@ 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 + #dbg_declare(ptr %data, !106, !DIExpression(), !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 + #dbg_declare(ptr %source, !111, !DIExpression(), !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 + #dbg_declare(ptr %i, !114, !DIExpression(), !115) store i64 0, ptr %i, align 8, !dbg !116 br label %for.cond, !dbg !118 @@ -130,11 +127,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx1 = getelementptr inbounds nuw 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 @@ -168,12 +165,11 @@ for.end: ; preds = %for.cond 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} @@ -181,7 +177,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/root/testsss/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} @@ -201,8 +197,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/root/testsss/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) @@ -215,7 +211,7 @@ attributes #5 = { nounwind } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -232,8 +228,8 @@ attributes #5 = { nounwind } !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") +!53 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !54, line: 18, baseType: !55) +!54 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -262,7 +258,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 77c6b460f..407454a30 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,11 +13,11 @@ define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01_bad( 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 + #dbg_declare(ptr %data, !41, !DIExpression(), !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 + #dbg_declare(ptr %source, !46, !DIExpression(), !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 @@ -33,20 +33,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printIntLine(i32 noundef) #4 +declare void @printIntLine(i32 noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01_good() #0 !dbg !61 { @@ -63,12 +60,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !69, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !71, !DIExpression(), !72) + %call = call i64 @time(ptr noundef null) #5, !dbg !73 %conv = trunc i64 %call to i32, !dbg !74 - call void @srand(i32 noundef %conv) #6, !dbg !75 + call void @srand(i32 noundef %conv) #5, !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 @@ -79,23 +76,23 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; 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 + #dbg_declare(ptr %data, !84, !DIExpression(), !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 + #dbg_declare(ptr %source, !89, !DIExpression(), !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 @@ -111,13 +108,12 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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} @@ -125,7 +121,7 @@ attributes #6 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/root/testsss/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} @@ -145,8 +141,8 @@ attributes #6 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/root/testsss/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) @@ -159,7 +155,7 @@ attributes #6 = { nounwind } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -184,7 +180,7 @@ attributes #6 = { nounwind } !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) +!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) !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) 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 index d4920feda..de7c990e5 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -17,11 +17,11 @@ entry: %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 + #dbg_declare(ptr %data, !40, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !45, !DIExpression(), !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 @@ -29,11 +29,11 @@ entry: %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 + #dbg_declare(ptr %source, !52, !DIExpression(), !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 + %call = call ptr @strcpy(ptr noundef %4, ptr noundef %arraydecay) #4, !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 @@ -43,20 +43,17 @@ entry: 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 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #3 +declare ptr @strcpy(ptr noundef, ptr noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_good() #0 !dbg !68 { @@ -73,12 +70,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !76, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !78, !DIExpression(), !79) + %call = call i64 @time(ptr noundef null) #4, !dbg !80 %conv = trunc i64 %call to i32, !dbg !81 - call void @srand(i32 noundef %conv) #5, !dbg !82 + call void @srand(i32 noundef %conv) #4, !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 @@ -89,10 +86,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 +declare void @srand(i32 noundef) #2 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 +declare i64 @time(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !90 { @@ -101,11 +98,11 @@ entry: %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 + #dbg_declare(ptr %data, !91, !DIExpression(), !92) + #dbg_declare(ptr %dataBadBuffer, !93, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !96, !DIExpression(), !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 @@ -113,11 +110,11 @@ entry: %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 + #dbg_declare(ptr %source, !103, !DIExpression(), !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 + %call = call ptr @strcpy(ptr noundef %4, ptr noundef %arraydecay) #4, !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 @@ -127,12 +124,11 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} @@ -140,7 +136,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c", directory: "/root/testsss/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} @@ -160,8 +156,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c", directory: "/root/testsss/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) @@ -173,7 +169,7 @@ attributes #5 = { nounwind } !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"} +!35 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -206,7 +202,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 14ec8e960..33e8d8662 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -17,11 +17,11 @@ entry: %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 + #dbg_declare(ptr %data, !40, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !45, !DIExpression(), !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 @@ -29,25 +29,25 @@ entry: %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 + #dbg_declare(ptr %source, !52, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay1) #5, !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 + %call3 = call i64 @strlen(ptr noundef %arraydecay2) #5, !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 + %call9 = call i64 @strlen(ptr noundef %arraydecay8) #5, !dbg !73 %add10 = add i64 %call9, 1, !dbg !74 %mul11 = mul i64 %add10, 1, !dbg !75 %sub12 = sub i64 %mul11, 1, !dbg !76 @@ -57,20 +57,17 @@ entry: 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 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 +declare i64 @strlen(ptr noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_good() #0 !dbg !81 { @@ -87,12 +84,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !89, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !91, !DIExpression(), !92) + %call = call i64 @time(ptr noundef null) #6, !dbg !93 %conv = trunc i64 %call to i32, !dbg !94 - call void @srand(i32 noundef %conv) #7, !dbg !95 + call void @srand(i32 noundef %conv) #6, !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 @@ -103,10 +100,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !103 { @@ -115,11 +112,11 @@ entry: %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 + #dbg_declare(ptr %data, !104, !DIExpression(), !105) + #dbg_declare(ptr %dataBadBuffer, !106, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !109, !DIExpression(), !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 @@ -127,25 +124,25 @@ entry: %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 + #dbg_declare(ptr %source, !116, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay1) #5, !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 + %call3 = call i64 @strlen(ptr noundef %arraydecay2) #5, !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 + %call9 = call i64 @strlen(ptr noundef %arraydecay8) #5, !dbg !134 %add10 = add i64 %call9, 1, !dbg !135 %mul11 = mul i64 %add10, 1, !dbg !136 %sub12 = sub i64 %mul11, 1, !dbg !137 @@ -155,14 +152,13 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} @@ -170,7 +166,7 @@ attributes #7 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c", directory: "/root/testsss/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} @@ -190,8 +186,8 @@ attributes #7 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c", directory: "/root/testsss/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) @@ -203,7 +199,7 @@ attributes #7 = { nounwind } !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"} +!35 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -249,7 +245,7 @@ attributes #7 = { nounwind } !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) +!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) !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) 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 index 2b8fde8c0..37b3bfb5c 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -17,11 +17,11 @@ entry: %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 + #dbg_declare(ptr %data, !40, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !45, !DIExpression(), !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 @@ -29,25 +29,25 @@ entry: %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 + #dbg_declare(ptr %source, !52, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay1) #5, !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 + %call3 = call i64 @strlen(ptr noundef %arraydecay2) #5, !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 + %call9 = call i64 @strlen(ptr noundef %arraydecay8) #5, !dbg !73 %add10 = add i64 %call9, 1, !dbg !74 %mul11 = mul i64 %add10, 1, !dbg !75 %sub12 = sub i64 %mul11, 1, !dbg !76 @@ -57,23 +57,20 @@ entry: 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 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 +declare i64 @strlen(ptr 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) #2 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #1 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_good() #0 !dbg !81 { @@ -90,12 +87,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !89, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !91, !DIExpression(), !92) + %call = call i64 @time(ptr noundef null) #6, !dbg !93 %conv = trunc i64 %call to i32, !dbg !94 - call void @srand(i32 noundef %conv) #7, !dbg !95 + call void @srand(i32 noundef %conv) #6, !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 @@ -106,10 +103,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !103 { @@ -118,11 +115,11 @@ entry: %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 + #dbg_declare(ptr %data, !104, !DIExpression(), !105) + #dbg_declare(ptr %dataBadBuffer, !106, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !109, !DIExpression(), !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 @@ -130,25 +127,25 @@ entry: %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 + #dbg_declare(ptr %source, !116, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay1) #5, !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 + %call3 = call i64 @strlen(ptr noundef %arraydecay2) #5, !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 + %call9 = call i64 @strlen(ptr noundef %arraydecay8) #5, !dbg !134 %add10 = add i64 %call9, 1, !dbg !135 %mul11 = mul i64 %add10, 1, !dbg !136 %sub12 = sub i64 %mul11, 1, !dbg !137 @@ -158,14 +155,13 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} @@ -173,7 +169,7 @@ attributes #7 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c", directory: "/root/testsss/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} @@ -193,8 +189,8 @@ attributes #7 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c", directory: "/root/testsss/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) @@ -206,7 +202,7 @@ attributes #7 = { nounwind } !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"} +!35 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -252,7 +248,7 @@ attributes #7 = { nounwind } !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) +!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) !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) 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 index b676b601e..a1e1f3d5f 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -17,33 +17,33 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !46) + #dbg_declare(ptr %dataGoodBuffer, !47, !DIExpression(), !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 + #dbg_declare(ptr %source, !56, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay2) #5, !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 + %call4 = call i64 @strlen(ptr noundef %arraydecay3) #5, !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 + %call10 = call i64 @strlen(ptr noundef %arraydecay9) #5, !dbg !74 %add11 = add i64 %call10, 1, !dbg !75 %mul12 = mul i64 %add11, 1, !dbg !76 %sub13 = sub i64 %mul12, 1, !dbg !77 @@ -53,23 +53,20 @@ entry: 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 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 +declare i64 @strlen(ptr 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) #2 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #1 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_good() #0 !dbg !82 { @@ -86,12 +83,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !90, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !92, !DIExpression(), !93) + %call = call i64 @time(ptr noundef null) #6, !dbg !94 %conv = trunc i64 %call to i32, !dbg !95 - call void @srand(i32 noundef %conv) #7, !dbg !96 + call void @srand(i32 noundef %conv) #6, !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 @@ -102,10 +99,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !104 { @@ -114,33 +111,33 @@ entry: %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 + #dbg_declare(ptr %data, !105, !DIExpression(), !106) + #dbg_declare(ptr %dataBadBuffer, !107, !DIExpression(), !108) + #dbg_declare(ptr %dataGoodBuffer, !109, !DIExpression(), !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 + #dbg_declare(ptr %source, !115, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay2) #5, !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 + %call4 = call i64 @strlen(ptr noundef %arraydecay3) #5, !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 + %call10 = call i64 @strlen(ptr noundef %arraydecay9) #5, !dbg !133 %add11 = add i64 %call10, 1, !dbg !134 %mul12 = mul i64 %add11, 1, !dbg !135 %sub13 = sub i64 %mul12, 1, !dbg !136 @@ -150,14 +147,13 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} @@ -165,7 +161,7 @@ attributes #7 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c", directory: "/root/testsss/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} @@ -185,8 +181,8 @@ attributes #7 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c", directory: "/root/testsss/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} @@ -197,7 +193,7 @@ attributes #7 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -245,7 +241,7 @@ attributes #7 = { nounwind } !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) +!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) !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) 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 index 6febd365c..225cb2986 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -17,19 +17,19 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !44) + #dbg_declare(ptr %dataBadBuffer, !45, !DIExpression(), !49) + #dbg_declare(ptr %dataGoodBuffer, !50, !DIExpression(), !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 + #dbg_declare(ptr %source, !59, !DIExpression(), !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 + %call = call ptr @wcscpy(ptr noundef %1, ptr noundef %arraydecay1) #4, !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 @@ -39,20 +39,17 @@ entry: 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 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 ; Function Attrs: nounwind -declare ptr @wcscpy(ptr noundef, ptr noundef) #3 +declare ptr @wcscpy(ptr noundef, ptr noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printWLine(ptr noundef) #4 +declare void @printWLine(ptr noundef) #3 ; 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 { @@ -69,12 +66,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !80, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !82, !DIExpression(), !83) + %call = call i64 @time(ptr noundef null) #4, !dbg !84 %conv = trunc i64 %call to i32, !dbg !85 - call void @srand(i32 noundef %conv) #5, !dbg !86 + call void @srand(i32 noundef %conv) #4, !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 @@ -85,12 +82,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 +declare void @srand(i32 noundef) #2 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 +declare i64 @time(ptr noundef) #2 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !94 { @@ -99,19 +96,19 @@ entry: %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 + #dbg_declare(ptr %data, !95, !DIExpression(), !96) + #dbg_declare(ptr %dataBadBuffer, !97, !DIExpression(), !98) + #dbg_declare(ptr %dataGoodBuffer, !99, !DIExpression(), !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 + #dbg_declare(ptr %source, !105, !DIExpression(), !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 + %call = call ptr @wcscpy(ptr noundef %1, ptr noundef %arraydecay1) #4, !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 @@ -121,12 +118,11 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -134,7 +130,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c", directory: "/root/testsss/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} @@ -154,8 +150,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c", directory: "/root/testsss/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} @@ -166,15 +162,15 @@ attributes #5 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 24, baseType: !43) +!42 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -204,7 +200,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index f34c0fbf6..8ba21110a 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,11 +16,11 @@ entry: %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 + #dbg_declare(ptr %data, !40, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !45, !DIExpression(), !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 @@ -28,8 +28,8 @@ entry: %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 + #dbg_declare(ptr %i, !52, !DIExpression(), !57) + #dbg_declare(ptr %source, !58, !DIExpression(), !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 @@ -44,11 +44,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx2 = getelementptr inbounds nuw [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 + %arrayidx3 = getelementptr inbounds nuw i8, ptr %7, i64 %8, !dbg !76 store i8 %6, ptr %arrayidx3, align 1, !dbg !78 br label %for.inc, !dbg !79 @@ -71,17 +71,14 @@ for.end: ; preds = %for.cond 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 void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01_good() #0 !dbg !94 { @@ -98,12 +95,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !102, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !104, !DIExpression(), !105) + %call = call i64 @time(ptr noundef null) #4, !dbg !106 %conv = trunc i64 %call to i32, !dbg !107 - call void @srand(i32 noundef %conv) #5, !dbg !108 + call void @srand(i32 noundef %conv) #4, !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 @@ -114,10 +111,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !116 { @@ -127,11 +124,11 @@ entry: %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 + #dbg_declare(ptr %data, !117, !DIExpression(), !118) + #dbg_declare(ptr %dataBadBuffer, !119, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !122, !DIExpression(), !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 @@ -139,8 +136,8 @@ entry: %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 + #dbg_declare(ptr %i, !129, !DIExpression(), !131) + #dbg_declare(ptr %source, !132, !DIExpression(), !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 @@ -155,11 +152,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx2 = getelementptr inbounds nuw [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 + %arrayidx3 = getelementptr inbounds nuw 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 @@ -188,12 +185,11 @@ for.end: ; preds = %for.cond 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} @@ -201,7 +197,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c", directory: "/root/testsss/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} @@ -221,8 +217,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c", directory: "/root/testsss/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) @@ -234,7 +230,7 @@ attributes #5 = { nounwind } !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"} +!35 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -253,8 +249,8 @@ attributes #5 = { nounwind } !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") +!54 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !55, line: 18, baseType: !56) +!55 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -293,7 +289,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 795570ca8..f7788362d 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,11 +15,11 @@ entry: %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 + #dbg_declare(ptr %data, !40, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !45, !DIExpression(), !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 @@ -27,7 +27,7 @@ entry: %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 + #dbg_declare(ptr %source, !52, !DIExpression(), !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 @@ -47,20 +47,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01_good() #0 !dbg !72 { @@ -77,12 +74,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !80, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !82, !DIExpression(), !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) #6, !dbg !86 + call void @srand(i32 noundef %conv) #5, !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 @@ -93,10 +90,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !94 { @@ -105,11 +102,11 @@ entry: %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 + #dbg_declare(ptr %data, !95, !DIExpression(), !96) + #dbg_declare(ptr %dataBadBuffer, !97, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !100, !DIExpression(), !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 @@ -117,7 +114,7 @@ entry: %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 + #dbg_declare(ptr %source, !107, !DIExpression(), !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 @@ -137,13 +134,12 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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} @@ -151,7 +147,7 @@ attributes #6 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c", directory: "/root/testsss/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} @@ -171,8 +167,8 @@ attributes #6 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c", directory: "/root/testsss/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) @@ -184,7 +180,7 @@ attributes #6 = { nounwind } !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"} +!35 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -221,7 +217,7 @@ attributes #6 = { nounwind } !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) +!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) !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) 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 index 12f41a8fa..858e58877 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,15 +15,15 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !46) + #dbg_declare(ptr %dataGoodBuffer, !47, !DIExpression(), !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 + #dbg_declare(ptr %source, !56, !DIExpression(), !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 @@ -43,20 +43,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01_good() #0 !dbg !73 { @@ -73,12 +70,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !81, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !83, !DIExpression(), !84) + %call = call i64 @time(ptr noundef null) #5, !dbg !85 %conv = trunc i64 %call to i32, !dbg !86 - call void @srand(i32 noundef %conv) #6, !dbg !87 + call void @srand(i32 noundef %conv) #5, !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 @@ -89,10 +86,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !95 { @@ -101,15 +98,15 @@ entry: %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 + #dbg_declare(ptr %data, !96, !DIExpression(), !97) + #dbg_declare(ptr %dataBadBuffer, !98, !DIExpression(), !99) + #dbg_declare(ptr %dataGoodBuffer, !100, !DIExpression(), !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 + #dbg_declare(ptr %source, !106, !DIExpression(), !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 @@ -129,13 +126,12 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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} @@ -143,7 +139,7 @@ attributes #6 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c", directory: "/root/testsss/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} @@ -163,8 +159,8 @@ attributes #6 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c", directory: "/root/testsss/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} @@ -175,7 +171,7 @@ attributes #6 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -214,7 +210,7 @@ attributes #6 = { nounwind } !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) +!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) !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) 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 index df5c95317..70e035d89 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,22 +15,22 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !46) + #dbg_declare(ptr %dataGoodBuffer, !47, !DIExpression(), !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 + #dbg_declare(ptr %source, !56, !DIExpression(), !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 + %call = call ptr @strncpy(ptr noundef %1, ptr noundef %arraydecay3, i64 noundef 99) #4, !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 @@ -43,20 +43,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nounwind -declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #3 +declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01_good() #0 !dbg !74 { @@ -73,12 +70,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !82, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !84, !DIExpression(), !85) + %call = call i64 @time(ptr noundef null) #4, !dbg !86 %conv = trunc i64 %call to i32, !dbg !87 - call void @srand(i32 noundef %conv) #5, !dbg !88 + call void @srand(i32 noundef %conv) #4, !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 @@ -89,10 +86,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 +declare void @srand(i32 noundef) #2 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 +declare i64 @time(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !96 { @@ -101,22 +98,22 @@ entry: %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 + #dbg_declare(ptr %data, !97, !DIExpression(), !98) + #dbg_declare(ptr %dataBadBuffer, !99, !DIExpression(), !100) + #dbg_declare(ptr %dataGoodBuffer, !101, !DIExpression(), !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 + #dbg_declare(ptr %source, !107, !DIExpression(), !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 + %call = call ptr @strncpy(ptr noundef %1, ptr noundef %arraydecay3, i64 noundef 99) #4, !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 @@ -129,12 +126,11 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -142,7 +138,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c", directory: "/root/testsss/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} @@ -162,8 +158,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c", directory: "/root/testsss/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} @@ -174,7 +170,7 @@ attributes #5 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -214,7 +210,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index c9937a989..323773304 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,16 +15,16 @@ entry: %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 + #dbg_declare(ptr %data, !45, !DIExpression(), !46) + #dbg_declare(ptr %dataBadBuffer, !47, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !50, !DIExpression(), !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 + #dbg_declare(ptr %source, !55, !DIExpression(), !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 @@ -40,20 +40,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLongLongLine(i64 noundef) #4 +declare void @printLongLongLine(i64 noundef) #3 ; 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 { @@ -70,12 +67,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !79, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !81, !DIExpression(), !82) + %call = call i64 @time(ptr noundef null) #5, !dbg !83 %conv = trunc i64 %call to i32, !dbg !84 - call void @srand(i32 noundef %conv) #6, !dbg !85 + call void @srand(i32 noundef %conv) #5, !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 @@ -86,12 +83,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !93 { @@ -100,16 +97,16 @@ entry: %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 + #dbg_declare(ptr %data, !94, !DIExpression(), !95) + #dbg_declare(ptr %dataBadBuffer, !96, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !99, !DIExpression(), !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 + #dbg_declare(ptr %source, !104, !DIExpression(), !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 @@ -125,13 +122,12 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!33, !34, !35, !36, !37, !38, !39} @@ -139,7 +135,7 @@ attributes #6 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c", directory: "/root/testsss/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} @@ -159,14 +155,14 @@ attributes #6 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !32, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c", directory: "/root/testsss/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") +!27 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "649b383a60bfa3eb90e85840b2b0be20") !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") +!29 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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} @@ -177,7 +173,7 @@ attributes #6 = { nounwind } !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"} +!40 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -207,7 +203,7 @@ attributes #6 = { nounwind } !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) +!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) !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) 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 index 8e9bf9d47..00170d9fe 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,14 +16,14 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !46) + #dbg_declare(ptr %dataBadBuffer, !47, !DIExpression(), !51) + #dbg_declare(ptr %dataGoodBuffer, !52, !DIExpression(), !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 + #dbg_declare(ptr %source, !59, !DIExpression(), !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 + #dbg_declare(ptr %i, !62, !DIExpression(), !67) store i64 0, ptr %i, align 8, !dbg !68 br label %for.cond, !dbg !70 @@ -34,11 +34,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx1 = getelementptr inbounds nuw i64, ptr %3, i64 %4, !dbg !78 store i64 %2, ptr %arrayidx1, align 8, !dbg !80 br label %for.inc, !dbg !81 @@ -60,17 +60,14 @@ for.end: ; preds = %for.cond 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 void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printLongLongLine(i64 noundef) #3 +declare void @printLongLongLine(i64 noundef) #2 ; 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 { @@ -87,12 +84,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !103, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !105, !DIExpression(), !106) + %call = call i64 @time(ptr noundef null) #4, !dbg !107 %conv = trunc i64 %call to i32, !dbg !108 - call void @srand(i32 noundef %conv) #5, !dbg !109 + call void @srand(i32 noundef %conv) #4, !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 @@ -103,12 +100,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !117 { @@ -118,14 +115,14 @@ entry: %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 + #dbg_declare(ptr %data, !118, !DIExpression(), !119) + #dbg_declare(ptr %dataBadBuffer, !120, !DIExpression(), !121) + #dbg_declare(ptr %dataGoodBuffer, !122, !DIExpression(), !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 + #dbg_declare(ptr %source, !126, !DIExpression(), !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 + #dbg_declare(ptr %i, !129, !DIExpression(), !131) store i64 0, ptr %i, align 8, !dbg !132 br label %for.cond, !dbg !134 @@ -136,11 +133,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx1 = getelementptr inbounds nuw 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 @@ -174,12 +171,11 @@ for.end: ; preds = %for.cond 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -187,7 +183,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c", directory: "/root/testsss/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} @@ -207,8 +203,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c", directory: "/root/testsss/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} @@ -219,7 +215,7 @@ attributes #5 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -227,9 +223,9 @@ attributes #5 = { nounwind } !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") +!42 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "649b383a60bfa3eb90e85840b2b0be20") !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") +!44 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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) @@ -249,8 +245,8 @@ attributes #5 = { nounwind } !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") +!64 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !65, line: 18, baseType: !66) +!65 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -279,7 +275,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 5c9d481ee..1943ad618 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,12 +15,12 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !46) + #dbg_declare(ptr %dataBadBuffer, !47, !DIExpression(), !51) + #dbg_declare(ptr %dataGoodBuffer, !52, !DIExpression(), !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 + #dbg_declare(ptr %source, !59, !DIExpression(), !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 @@ -36,20 +36,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLongLongLine(i64 noundef) #4 +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_memcpy_01_good() #0 !dbg !71 { @@ -66,12 +63,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !80, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !82, !DIExpression(), !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) #6, !dbg !86 + call void @srand(i32 noundef %conv) #5, !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 @@ -82,12 +79,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !94 { @@ -96,12 +93,12 @@ entry: %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 + #dbg_declare(ptr %data, !95, !DIExpression(), !96) + #dbg_declare(ptr %dataBadBuffer, !97, !DIExpression(), !98) + #dbg_declare(ptr %dataGoodBuffer, !99, !DIExpression(), !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 + #dbg_declare(ptr %source, !103, !DIExpression(), !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 @@ -117,13 +114,12 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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} @@ -131,7 +127,7 @@ attributes #6 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c", directory: "/root/testsss/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} @@ -151,8 +147,8 @@ attributes #6 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c", directory: "/root/testsss/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} @@ -163,7 +159,7 @@ attributes #6 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -171,9 +167,9 @@ attributes #6 = { nounwind } !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") +!42 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "649b383a60bfa3eb90e85840b2b0be20") !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") +!44 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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) @@ -200,7 +196,7 @@ attributes #6 = { nounwind } !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) +!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) !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) 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 index 5329bdcf9..f391cdf1a 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,12 +15,12 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !46) + #dbg_declare(ptr %dataBadBuffer, !47, !DIExpression(), !51) + #dbg_declare(ptr %dataGoodBuffer, !52, !DIExpression(), !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 + #dbg_declare(ptr %source, !59, !DIExpression(), !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 @@ -36,20 +36,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLongLongLine(i64 noundef) #4 +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_memmove_01_good() #0 !dbg !71 { @@ -66,12 +63,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !80, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !82, !DIExpression(), !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) #6, !dbg !86 + call void @srand(i32 noundef %conv) #5, !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 @@ -82,12 +79,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !94 { @@ -96,12 +93,12 @@ entry: %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 + #dbg_declare(ptr %data, !95, !DIExpression(), !96) + #dbg_declare(ptr %dataBadBuffer, !97, !DIExpression(), !98) + #dbg_declare(ptr %dataGoodBuffer, !99, !DIExpression(), !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 + #dbg_declare(ptr %source, !103, !DIExpression(), !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 @@ -117,13 +114,12 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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} @@ -131,7 +127,7 @@ attributes #6 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c", directory: "/root/testsss/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} @@ -151,8 +147,8 @@ attributes #6 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c", directory: "/root/testsss/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} @@ -163,7 +159,7 @@ attributes #6 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -171,9 +167,9 @@ attributes #6 = { nounwind } !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") +!42 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "649b383a60bfa3eb90e85840b2b0be20") !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") +!44 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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) @@ -200,7 +196,7 @@ attributes #6 = { nounwind } !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) +!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) !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) 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 index 591d4f918..c66818472 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,18 +16,18 @@ entry: %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 + #dbg_declare(ptr %data, !41, !DIExpression(), !42) + #dbg_declare(ptr %dataBadBuffer, !43, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !46, !DIExpression(), !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 + #dbg_declare(ptr %source, !51, !DIExpression(), !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 + #dbg_declare(ptr %i, !57, !DIExpression(), !62) store i64 0, ptr %i, align 8, !dbg !63 br label %for.cond, !dbg !65 @@ -38,11 +38,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx1 = getelementptr inbounds nuw i32, ptr %6, i64 %7, !dbg !73 store i32 %5, ptr %arrayidx1, align 4, !dbg !75 br label %for.inc, !dbg !76 @@ -64,17 +64,14 @@ for.end: ; preds = %for.cond 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 void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printIntLine(i32 noundef) #3 +declare void @printIntLine(i32 noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01_good() #0 !dbg !89 { @@ -91,12 +88,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !97, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !99, !DIExpression(), !100) + %call = call i64 @time(ptr noundef null) #4, !dbg !101 %conv = trunc i64 %call to i32, !dbg !102 - call void @srand(i32 noundef %conv) #5, !dbg !103 + call void @srand(i32 noundef %conv) #4, !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 @@ -107,12 +104,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !111 { @@ -122,18 +119,18 @@ entry: %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 + #dbg_declare(ptr %data, !112, !DIExpression(), !113) + #dbg_declare(ptr %dataBadBuffer, !114, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !117, !DIExpression(), !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 + #dbg_declare(ptr %source, !122, !DIExpression(), !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 + #dbg_declare(ptr %i, !125, !DIExpression(), !127) store i64 0, ptr %i, align 8, !dbg !128 br label %for.cond, !dbg !130 @@ -144,11 +141,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx1 = getelementptr inbounds nuw 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 @@ -182,12 +179,11 @@ for.end: ; preds = %for.cond 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} @@ -195,7 +191,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c", directory: "/root/testsss/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} @@ -215,8 +211,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c", directory: "/root/testsss/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) @@ -229,7 +225,7 @@ attributes #5 = { nounwind } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -252,8 +248,8 @@ attributes #5 = { nounwind } !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") +!59 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !60, line: 18, baseType: !61) +!60 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -282,7 +278,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 1e9aeea0f..72d078924 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,16 +15,16 @@ entry: %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 + #dbg_declare(ptr %data, !41, !DIExpression(), !42) + #dbg_declare(ptr %dataBadBuffer, !43, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !46, !DIExpression(), !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 + #dbg_declare(ptr %source, !51, !DIExpression(), !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 @@ -40,20 +40,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printIntLine(i32 noundef) #4 +declare void @printIntLine(i32 noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01_good() #0 !dbg !66 { @@ -70,12 +67,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !74, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !76, !DIExpression(), !77) + %call = call i64 @time(ptr noundef null) #5, !dbg !78 %conv = trunc i64 %call to i32, !dbg !79 - call void @srand(i32 noundef %conv) #6, !dbg !80 + call void @srand(i32 noundef %conv) #5, !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 @@ -86,12 +83,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !88 { @@ -100,16 +97,16 @@ entry: %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 + #dbg_declare(ptr %data, !89, !DIExpression(), !90) + #dbg_declare(ptr %dataBadBuffer, !91, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !94, !DIExpression(), !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 + #dbg_declare(ptr %source, !99, !DIExpression(), !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 @@ -125,13 +122,12 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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} @@ -139,7 +135,7 @@ attributes #6 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c", directory: "/root/testsss/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} @@ -159,8 +155,8 @@ attributes #6 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c", directory: "/root/testsss/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) @@ -173,7 +169,7 @@ attributes #6 = { nounwind } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -203,7 +199,7 @@ attributes #6 = { nounwind } !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) +!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) !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) 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 index 9015a2919..ada0b72d6 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct._twoIntsStruct = type { i32, i32 } @@ -18,17 +18,17 @@ entry: %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 + #dbg_declare(ptr %data, !47, !DIExpression(), !48) + #dbg_declare(ptr %dataBadBuffer, !49, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !52, !DIExpression(), !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 + #dbg_declare(ptr %source, !57, !DIExpression(), !62) + #dbg_declare(ptr %i, !63, !DIExpression(), !68) store i64 0, ptr %i, align 8, !dbg !69 br label %for.cond, !dbg !71 @@ -39,12 +39,12 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %4, !dbg !78 + %intOne = getelementptr inbounds nuw %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 + %arrayidx1 = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %5, !dbg !82 + %intTwo = getelementptr inbounds nuw %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 @@ -68,17 +68,14 @@ for.end: ; preds = %for.cond 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 void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printStructLine(ptr noundef) #3 +declare void @printStructLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01_good() #0 !dbg !100 { @@ -95,12 +92,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !108, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !110, !DIExpression(), !111) + %call = call i64 @time(ptr noundef null) #4, !dbg !112 %conv = trunc i64 %call to i32, !dbg !113 - call void @srand(i32 noundef %conv) #5, !dbg !114 + call void @srand(i32 noundef %conv) #4, !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 @@ -111,12 +108,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !122 { @@ -126,17 +123,17 @@ entry: %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 + #dbg_declare(ptr %data, !123, !DIExpression(), !124) + #dbg_declare(ptr %dataBadBuffer, !125, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !128, !DIExpression(), !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 + #dbg_declare(ptr %source, !133, !DIExpression(), !135) + #dbg_declare(ptr %i, !136, !DIExpression(), !138) store i64 0, ptr %i, align 8, !dbg !139 br label %for.cond, !dbg !141 @@ -147,12 +144,12 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %4, !dbg !148 + %intOne = getelementptr inbounds nuw %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 + %arrayidx1 = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %5, !dbg !152 + %intTwo = getelementptr inbounds nuw %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 @@ -176,12 +173,11 @@ for.end: ; preds = %for.cond 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!35, !36, !37, !38, !39, !40, !41} @@ -189,7 +185,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c", directory: "/root/testsss/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} @@ -209,12 +205,12 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !34, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c", directory: "/root/testsss/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") +!27 = !DIFile(filename: "src/ae_overflow_tests/std_testcase.h", directory: "/root/testsss/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) @@ -229,7 +225,7 @@ attributes #5 = { nounwind } !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"} +!42 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -252,8 +248,8 @@ attributes #5 = { nounwind } !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") +!65 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !66, line: 18, baseType: !67) +!66 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -287,7 +283,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index cc0d90bac..3cf43b496 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct._twoIntsStruct = type { i32, i32 } @@ -18,13 +18,13 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !48) + #dbg_declare(ptr %dataBadBuffer, !49, !DIExpression(), !53) + #dbg_declare(ptr %dataGoodBuffer, !54, !DIExpression(), !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 + #dbg_declare(ptr %source, !61, !DIExpression(), !63) + #dbg_declare(ptr %i, !64, !DIExpression(), !69) store i64 0, ptr %i, align 8, !dbg !70 br label %for.cond, !dbg !72 @@ -35,12 +35,12 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %1, !dbg !79 + %intOne = getelementptr inbounds nuw %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 + %arrayidx1 = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %2, !dbg !83 + %intTwo = getelementptr inbounds nuw %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 @@ -64,17 +64,14 @@ for.end: ; preds = %for.cond 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 void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printStructLine(ptr noundef) #3 +declare void @printStructLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01_good() #0 !dbg !101 { @@ -91,12 +88,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !109, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !111, !DIExpression(), !112) + %call = call i64 @time(ptr noundef null) #4, !dbg !113 %conv = trunc i64 %call to i32, !dbg !114 - call void @srand(i32 noundef %conv) #5, !dbg !115 + call void @srand(i32 noundef %conv) #4, !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 @@ -107,12 +104,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !123 { @@ -122,13 +119,13 @@ entry: %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 + #dbg_declare(ptr %data, !124, !DIExpression(), !125) + #dbg_declare(ptr %dataBadBuffer, !126, !DIExpression(), !127) + #dbg_declare(ptr %dataGoodBuffer, !128, !DIExpression(), !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 + #dbg_declare(ptr %source, !132, !DIExpression(), !134) + #dbg_declare(ptr %i, !135, !DIExpression(), !137) store i64 0, ptr %i, align 8, !dbg !138 br label %for.cond, !dbg !140 @@ -139,12 +136,12 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %1, !dbg !147 + %intOne = getelementptr inbounds nuw %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 + %arrayidx1 = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %2, !dbg !151 + %intTwo = getelementptr inbounds nuw %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 @@ -168,12 +165,11 @@ for.end: ; preds = %for.cond 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -181,7 +177,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c", directory: "/root/testsss/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} @@ -201,8 +197,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c", directory: "/root/testsss/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} @@ -213,7 +209,7 @@ attributes #5 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -221,7 +217,7 @@ attributes #5 = { nounwind } !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") +!42 = !DIFile(filename: "src/ae_overflow_tests/std_testcase.h", directory: "/root/testsss/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) @@ -245,8 +241,8 @@ attributes #5 = { nounwind } !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") +!66 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !67, line: 18, baseType: !68) +!67 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -280,7 +276,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 925e14b49..42b127813 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,11 +16,11 @@ entry: %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 + #dbg_declare(ptr %data, !43, !DIExpression(), !44) + #dbg_declare(ptr %dataBadBuffer, !45, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !48, !DIExpression(), !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 @@ -28,167 +28,163 @@ entry: %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 + #dbg_declare(ptr %i, !55, !DIExpression(), !60) + #dbg_declare(ptr %source, !61, !DIExpression(), !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) #3, !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 + store i64 0, ptr %i, align 8, !dbg !70 + br label %for.cond, !dbg !72 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 + %4 = load i64, ptr %i, align 8, !dbg !73 + %cmp = icmp ult i64 %4, 100, !dbg !75 + br i1 %cmp, label %for.body, label %for.end, !dbg !76 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 + %5 = load i64, ptr %i, align 8, !dbg !77 + %arrayidx2 = getelementptr inbounds nuw [100 x i32], ptr %source, i64 0, i64 %5, !dbg !79 + %6 = load i32, ptr %arrayidx2, align 4, !dbg !79 + %7 = load ptr, ptr %data, align 8, !dbg !80 + %8 = load i64, ptr %i, align 8, !dbg !81 + %arrayidx3 = getelementptr inbounds nuw i32, ptr %7, i64 %8, !dbg !80 + store i32 %6, ptr %arrayidx3, align 4, !dbg !82 + br label %for.inc, !dbg !83 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 + %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 - %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 + %10 = load ptr, ptr %data, align 8, !dbg !89 + %arrayidx4 = getelementptr inbounds i32, ptr %10, i64 99, !dbg !89 + store i32 0, ptr %arrayidx4, align 4, !dbg !90 + %11 = load ptr, ptr %data, align 8, !dbg !91 + %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %11, i64 noundef 399), !dbg !92 + %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !93 + %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !94 + %12 = load ptr, ptr %data, align 8, !dbg !95 + call void @printWLine(ptr noundef %12), !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 ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printWLine(ptr noundef) #3 +declare void @printWLine(ptr noundef) #2 ; 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 { +define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01_good() #0 !dbg !98 { entry: - call void @goodG2B(), !dbg !98 - ret void, !dbg !99 + 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 !100 { +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 !105, metadata !DIExpression()), !dbg !106 + #dbg_declare(ptr %argc.addr, !106, !DIExpression(), !107) 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 + #dbg_declare(ptr %argv.addr, !108, !DIExpression(), !109) + %call = call i64 @time(ptr noundef null) #3, !dbg !110 + %conv = trunc i64 %call to i32, !dbg !111 + call void @srand(i32 noundef %conv) #3, !dbg !112 + call void @printLine(ptr noundef @.str), !dbg !113 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_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_alloca_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 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !119 { +define internal void @goodG2B() #0 !dbg !120 { 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 + #dbg_declare(ptr %data, !121, !DIExpression(), !122) + #dbg_declare(ptr %dataBadBuffer, !123, !DIExpression(), !124) + %0 = alloca i8, i64 200, align 16, !dbg !125 + store ptr %0, ptr %dataBadBuffer, align 8, !dbg !124 + #dbg_declare(ptr %dataGoodBuffer, !126, !DIExpression(), !127) + %1 = alloca i8, i64 400, align 16, !dbg !128 + store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !127 + %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !129 + store ptr %2, ptr %data, align 8, !dbg !130 + %3 = load ptr, ptr %data, align 8, !dbg !131 + %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !131 + store i32 0, ptr %arrayidx, align 4, !dbg !132 + #dbg_declare(ptr %i, !133, !DIExpression(), !135) + #dbg_declare(ptr %source, !136, !DIExpression(), !137) + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !138 + %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #3, !dbg !139 + %arrayidx1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !140 + store i32 0, ptr %arrayidx1, align 4, !dbg !141 + store i64 0, ptr %i, align 8, !dbg !142 + br label %for.cond, !dbg !144 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 + %4 = load i64, ptr %i, align 8, !dbg !145 + %cmp = icmp ult i64 %4, 100, !dbg !147 + br i1 %cmp, label %for.body, label %for.end, !dbg !148 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 + %5 = load i64, ptr %i, align 8, !dbg !149 + %arrayidx2 = getelementptr inbounds nuw [100 x i32], ptr %source, i64 0, i64 %5, !dbg !151 + %6 = load i32, ptr %arrayidx2, align 4, !dbg !151 + %7 = load ptr, ptr %data, align 8, !dbg !152 + %8 = load i64, ptr %i, align 8, !dbg !153 + %arrayidx3 = getelementptr inbounds nuw i32, ptr %7, i64 %8, !dbg !152 + store i32 %6, ptr %arrayidx3, align 4, !dbg !154 + br label %for.inc, !dbg !155 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 + %9 = load i64, ptr %i, align 8, !dbg !156 + %inc = add i64 %9, 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 - %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 + %10 = load ptr, ptr %data, align 8, !dbg !160 + %arrayidx4 = getelementptr inbounds i32, ptr %10, i64 99, !dbg !160 + store i32 0, ptr %arrayidx4, align 4, !dbg !161 + %11 = load ptr, ptr %data, align 8, !dbg !162 + %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %11, i64 noundef 399), !dbg !163 + %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !164 + %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !165 + %12 = load ptr, ptr %data, align 8, !dbg !166 + call void @printWLine(ptr noundef %12), !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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!31, !32, !33, !34, !35, !36, !37} @@ -196,7 +192,7 @@ attributes #4 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c", directory: "/root/testsss/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} @@ -216,12 +212,12 @@ attributes #4 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !30, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c", directory: "/root/testsss/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") +!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 24, baseType: !28) +!27 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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} @@ -232,7 +228,7 @@ attributes #4 = { nounwind } !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"} +!38 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -251,114 +247,115 @@ attributes #4 = { nounwind } !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) +!57 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !58, line: 18, baseType: !59) +!58 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") +!59 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!60 = !DILocation(line: 33, column: 16, scope: !56) +!61 = !DILocalVariable(name: "source", scope: !56, file: !2, line: 34, type: !62) +!62 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !63) +!63 = !{!64} +!64 = !DISubrange(count: 100) +!65 = !DILocation(line: 34, column: 17, scope: !56) +!66 = !DILocation(line: 35, column: 17, scope: !56) +!67 = !DILocation(line: 35, column: 9, scope: !56) +!68 = !DILocation(line: 36, column: 9, scope: !56) +!69 = !DILocation(line: 36, column: 23, scope: !56) +!70 = !DILocation(line: 38, column: 16, scope: !71) +!71 = distinct !DILexicalBlock(scope: !56, 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: !56) +!90 = !DILocation(line: 42, column: 21, scope: !56) +!91 = !DILocation(line: 43, column: 26, scope: !56) +!92 = !DILocation(line: 43, column: 9, scope: !56) +!93 = !DILocation(line: 44, column: 24, scope: !56) +!94 = !DILocation(line: 44, column: 9, scope: !56) +!95 = !DILocation(line: 45, column: 20, scope: !56) +!96 = !DILocation(line: 45, column: 9, scope: !56) +!97 = !DILocation(line: 47, column: 1, scope: !39) +!98 = 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) +!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: !42) +!102 = !DISubroutineType(types: !103) +!103 = !{!28, !28, !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: !28) +!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: !40, scopeLine: 55, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !42) +!121 = !DILocalVariable(name: "data", scope: !120, file: !2, line: 56, type: !25) +!122 = !DILocation(line: 56, column: 15, scope: !120) +!123 = !DILocalVariable(name: "dataBadBuffer", scope: !120, file: !2, line: 57, type: !25) +!124 = !DILocation(line: 57, column: 15, scope: !120) +!125 = !DILocation(line: 57, column: 42, scope: !120) +!126 = !DILocalVariable(name: "dataGoodBuffer", scope: !120, file: !2, line: 58, type: !25) +!127 = !DILocation(line: 58, column: 15, scope: !120) +!128 = !DILocation(line: 58, column: 43, scope: !120) +!129 = !DILocation(line: 60, column: 12, scope: !120) +!130 = !DILocation(line: 60, column: 10, scope: !120) +!131 = !DILocation(line: 61, column: 5, scope: !120) +!132 = !DILocation(line: 61, column: 13, scope: !120) +!133 = !DILocalVariable(name: "i", scope: !134, file: !2, line: 63, type: !57) +!134 = distinct !DILexicalBlock(scope: !120, file: !2, line: 62, column: 5) +!135 = !DILocation(line: 63, column: 16, scope: !134) +!136 = !DILocalVariable(name: "source", scope: !134, file: !2, line: 64, type: !62) +!137 = !DILocation(line: 64, column: 17, scope: !134) +!138 = !DILocation(line: 65, column: 17, scope: !134) +!139 = !DILocation(line: 65, column: 9, scope: !134) +!140 = !DILocation(line: 66, column: 9, scope: !134) +!141 = !DILocation(line: 66, column: 23, scope: !134) +!142 = !DILocation(line: 68, column: 16, scope: !143) +!143 = distinct !DILexicalBlock(scope: !134, file: !2, line: 68, column: 9) +!144 = !DILocation(line: 68, column: 14, scope: !143) +!145 = !DILocation(line: 68, column: 21, scope: !146) +!146 = distinct !DILexicalBlock(scope: !143, file: !2, line: 68, column: 9) +!147 = !DILocation(line: 68, column: 23, scope: !146) +!148 = !DILocation(line: 68, column: 9, scope: !143) +!149 = !DILocation(line: 70, column: 30, scope: !150) +!150 = distinct !DILexicalBlock(scope: !146, file: !2, line: 69, column: 9) +!151 = !DILocation(line: 70, column: 23, scope: !150) +!152 = !DILocation(line: 70, column: 13, scope: !150) +!153 = !DILocation(line: 70, column: 18, scope: !150) +!154 = !DILocation(line: 70, column: 21, scope: !150) +!155 = !DILocation(line: 71, column: 9, scope: !150) +!156 = !DILocation(line: 68, column: 31, scope: !146) +!157 = !DILocation(line: 68, column: 9, scope: !146) +!158 = distinct !{!158, !148, !159, !88} +!159 = !DILocation(line: 71, column: 9, scope: !143) +!160 = !DILocation(line: 72, column: 9, scope: !134) +!161 = !DILocation(line: 72, column: 21, 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: 20, scope: !134) +!167 = !DILocation(line: 75, column: 9, scope: !134) +!168 = !DILocation(line: 77, column: 1, scope: !120) 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 index 678c9ffa3..c15681f0f 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,11 +16,11 @@ entry: %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 + #dbg_declare(ptr %data, !48, !DIExpression(), !49) + #dbg_declare(ptr %dataBadBuffer, !50, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !53, !DIExpression(), !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 @@ -28,14 +28,14 @@ entry: %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 + #dbg_declare(ptr %source, !60, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #3, !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 + %call3 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %4, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay2) #3, !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 @@ -45,20 +45,17 @@ entry: 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 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #1 ; Function Attrs: nounwind -declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #2 +declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printWLine(ptr noundef) #3 +declare void @printWLine(ptr noundef) #2 ; 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 { @@ -75,12 +72,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !88, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !90, !DIExpression(), !91) + %call = call i64 @time(ptr noundef null) #3, !dbg !92 %conv = trunc i64 %call to i32, !dbg !93 - call void @srand(i32 noundef %conv) #4, !dbg !94 + call void @srand(i32 noundef %conv) #3, !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 @@ -91,12 +88,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !102 { @@ -105,11 +102,11 @@ entry: %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 + #dbg_declare(ptr %data, !103, !DIExpression(), !104) + #dbg_declare(ptr %dataBadBuffer, !105, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !108, !DIExpression(), !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 @@ -117,14 +114,14 @@ entry: %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 + #dbg_declare(ptr %source, !115, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #3, !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 + %call3 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %4, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay2) #3, !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 @@ -134,11 +131,10 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind } !llvm.dbg.cu = !{!28} !llvm.module.flags = !{!36, !37, !38, !39, !40, !41, !42} @@ -146,7 +142,7 @@ attributes #4 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c", directory: "/root/testsss/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} @@ -172,12 +168,12 @@ attributes #4 = { nounwind } !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") +!28 = distinct !DICompileUnit(language: DW_LANG_C11, file: !29, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !35, splitDebugInlining: false, nameTableKind: None) +!29 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c", directory: "/root/testsss/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") +!32 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !33, line: 24, baseType: !4) +!33 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !34 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) !35 = !{!0, !7, !13, !18, !23} !36 = !{i32 7, !"Dwarf Version", i32 5} @@ -187,7 +183,7 @@ attributes #4 = { nounwind } !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"} +!43 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -224,7 +220,7 @@ attributes #4 = { nounwind } !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) +!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) !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) 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 index b42880c33..27f27d8c6 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,171 +16,167 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !44) + #dbg_declare(ptr %dataBadBuffer, !45, !DIExpression(), !49) + #dbg_declare(ptr %dataGoodBuffer, !50, !DIExpression(), !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 + #dbg_declare(ptr %i, !59, !DIExpression(), !64) + #dbg_declare(ptr %source, !65, !DIExpression(), !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) #3, !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 + store i64 0, ptr %i, align 8, !dbg !71 + br label %for.cond, !dbg !73 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 + %1 = load i64, ptr %i, align 8, !dbg !74 + %cmp = icmp ult i64 %1, 100, !dbg !76 + br i1 %cmp, label %for.body, label %for.end, !dbg !77 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 + %2 = load i64, ptr %i, align 8, !dbg !78 + %arrayidx3 = getelementptr inbounds nuw [100 x i32], ptr %source, i64 0, i64 %2, !dbg !80 + %3 = load i32, ptr %arrayidx3, align 4, !dbg !80 + %4 = load ptr, ptr %data, align 8, !dbg !81 + %5 = load i64, ptr %i, align 8, !dbg !82 + %arrayidx4 = getelementptr inbounds nuw i32, ptr %4, i64 %5, !dbg !81 + store i32 %3, ptr %arrayidx4, align 4, !dbg !83 + br label %for.inc, !dbg !84 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 + %6 = load i64, ptr %i, align 8, !dbg !85 + %inc = add i64 %6, 1, !dbg !85 + store i64 %inc, ptr %i, align 8, !dbg !85 + br label %for.cond, !dbg !86, !llvm.loop !87 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 + %7 = load ptr, ptr %data, align 8, !dbg !90 + %arrayidx5 = getelementptr inbounds i32, ptr %7, i64 99, !dbg !90 + store i32 0, ptr %arrayidx5, align 4, !dbg !91 + %8 = load ptr, ptr %data, align 8, !dbg !92 + %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %8, i64 noundef 399), !dbg !93 + %arraydecay7 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !94 + %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef 399), !dbg !95 + %9 = load ptr, ptr %data, align 8, !dbg !96 + call void @printWLine(ptr noundef %9), !dbg !97 + ret void, !dbg !98 } -; 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 ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printWLine(ptr noundef) #3 +declare void @printWLine(ptr noundef) #2 ; 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 { +define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_good() #0 !dbg !99 { entry: - call void @goodG2B(), !dbg !99 - ret void, !dbg !100 + call void @goodG2B(), !dbg !100 + ret void, !dbg !101 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !101 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !102 { 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 + #dbg_declare(ptr %argc.addr, !107, !DIExpression(), !108) 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 + #dbg_declare(ptr %argv.addr, !109, !DIExpression(), !110) + %call = call i64 @time(ptr noundef null) #3, !dbg !111 + %conv = trunc i64 %call to i32, !dbg !112 + call void @srand(i32 noundef %conv) #3, !dbg !113 + call void @printLine(ptr noundef @.str), !dbg !114 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_good(), !dbg !115 + call void @printLine(ptr noundef @.str.1), !dbg !116 + call void @printLine(ptr noundef @.str.2), !dbg !117 + call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_bad(), !dbg !118 + call void @printLine(ptr noundef @.str.3), !dbg !119 + ret i32 0, !dbg !120 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !120 { +define internal void @goodG2B() #0 !dbg !121 { 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 + #dbg_declare(ptr %data, !122, !DIExpression(), !123) + #dbg_declare(ptr %dataBadBuffer, !124, !DIExpression(), !125) + #dbg_declare(ptr %dataGoodBuffer, !126, !DIExpression(), !127) + %arraydecay = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !128 + store ptr %arraydecay, ptr %data, align 8, !dbg !129 + %0 = load ptr, ptr %data, align 8, !dbg !130 + %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !130 + store i32 0, ptr %arrayidx, align 4, !dbg !131 + #dbg_declare(ptr %i, !132, !DIExpression(), !134) + #dbg_declare(ptr %source, !135, !DIExpression(), !136) + %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !137 + %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #3, !dbg !138 + %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !139 + store i32 0, ptr %arrayidx2, 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 - %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 + %1 = load i64, ptr %i, align 8, !dbg !144 + %cmp = icmp ult i64 %1, 100, !dbg !146 + br i1 %cmp, label %for.body, label %for.end, !dbg !147 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 + %2 = load i64, ptr %i, align 8, !dbg !148 + %arrayidx3 = getelementptr inbounds nuw [100 x i32], ptr %source, i64 0, i64 %2, !dbg !150 + %3 = load i32, ptr %arrayidx3, align 4, !dbg !150 + %4 = load ptr, ptr %data, align 8, !dbg !151 + %5 = load i64, ptr %i, align 8, !dbg !152 + %arrayidx4 = getelementptr inbounds nuw i32, ptr %4, i64 %5, !dbg !151 + store i32 %3, ptr %arrayidx4, align 4, !dbg !153 + br label %for.inc, !dbg !154 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 + %6 = load i64, ptr %i, align 8, !dbg !155 + %inc = add i64 %6, 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 - %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 + %7 = load ptr, ptr %data, align 8, !dbg !159 + %arrayidx5 = getelementptr inbounds i32, ptr %7, i64 99, !dbg !159 + store i32 0, ptr %arrayidx5, align 4, !dbg !160 + %8 = load ptr, ptr %data, align 8, !dbg !161 + %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %8, i64 noundef 399), !dbg !162 + %arraydecay7 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !163 + %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef 399), !dbg !164 + %9 = load ptr, ptr %data, align 8, !dbg !165 + call void @printWLine(ptr noundef %9), !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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} @@ -188,7 +184,7 @@ attributes #4 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c", directory: "/root/testsss/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} @@ -208,8 +204,8 @@ attributes #4 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c", directory: "/root/testsss/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} @@ -220,15 +216,15 @@ attributes #4 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 24, baseType: !43) +!42 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -247,109 +243,110 @@ attributes #4 = { nounwind } !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) +!61 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !62, line: 18, baseType: !63) +!62 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") +!63 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!64 = !DILocation(line: 33, column: 16, scope: !60) +!65 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 34, type: !51) +!66 = !DILocation(line: 34, column: 17, scope: !60) +!67 = !DILocation(line: 35, column: 17, scope: !60) +!68 = !DILocation(line: 35, column: 9, scope: !60) +!69 = !DILocation(line: 36, column: 9, scope: !60) +!70 = !DILocation(line: 36, column: 23, scope: !60) +!71 = !DILocation(line: 38, column: 16, scope: !72) +!72 = distinct !DILexicalBlock(scope: !60, file: !2, line: 38, column: 9) +!73 = !DILocation(line: 38, column: 14, scope: !72) +!74 = !DILocation(line: 38, column: 21, scope: !75) +!75 = distinct !DILexicalBlock(scope: !72, file: !2, line: 38, column: 9) +!76 = !DILocation(line: 38, column: 23, scope: !75) +!77 = !DILocation(line: 38, column: 9, scope: !72) +!78 = !DILocation(line: 40, column: 30, scope: !79) +!79 = distinct !DILexicalBlock(scope: !75, file: !2, line: 39, column: 9) +!80 = !DILocation(line: 40, column: 23, scope: !79) +!81 = !DILocation(line: 40, column: 13, scope: !79) +!82 = !DILocation(line: 40, column: 18, scope: !79) +!83 = !DILocation(line: 40, column: 21, scope: !79) +!84 = !DILocation(line: 41, column: 9, scope: !79) +!85 = !DILocation(line: 38, column: 31, scope: !75) +!86 = !DILocation(line: 38, column: 9, scope: !75) +!87 = distinct !{!87, !77, !88, !89} +!88 = !DILocation(line: 41, column: 9, scope: !72) +!89 = !{!"llvm.loop.mustprogress"} +!90 = !DILocation(line: 42, column: 9, scope: !60) +!91 = !DILocation(line: 42, column: 21, scope: !60) +!92 = !DILocation(line: 43, column: 26, scope: !60) +!93 = !DILocation(line: 43, column: 9, scope: !60) +!94 = !DILocation(line: 44, column: 24, scope: !60) +!95 = !DILocation(line: 44, column: 9, scope: !60) +!96 = !DILocation(line: 45, column: 20, scope: !60) +!97 = !DILocation(line: 45, column: 9, scope: !60) +!98 = !DILocation(line: 47, column: 1, scope: !35) +!99 = 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) +!100 = !DILocation(line: 81, column: 5, scope: !99) +!101 = !DILocation(line: 82, column: 1, scope: !99) +!102 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 94, type: !103, scopeLine: 95, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) +!103 = !DISubroutineType(types: !104) +!104 = !{!43, !43, !105} +!105 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !106, size: 64) +!106 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!107 = !DILocalVariable(name: "argc", arg: 1, scope: !102, file: !2, line: 94, type: !43) +!108 = !DILocation(line: 94, column: 14, scope: !102) +!109 = !DILocalVariable(name: "argv", arg: 2, scope: !102, file: !2, line: 94, type: !105) +!110 = !DILocation(line: 94, column: 27, scope: !102) +!111 = !DILocation(line: 97, column: 22, scope: !102) +!112 = !DILocation(line: 97, column: 12, scope: !102) +!113 = !DILocation(line: 97, column: 5, scope: !102) +!114 = !DILocation(line: 99, column: 5, scope: !102) +!115 = !DILocation(line: 100, column: 5, scope: !102) +!116 = !DILocation(line: 101, column: 5, scope: !102) +!117 = !DILocation(line: 104, column: 5, scope: !102) +!118 = !DILocation(line: 105, column: 5, scope: !102) +!119 = !DILocation(line: 106, column: 5, scope: !102) +!120 = !DILocation(line: 108, column: 5, scope: !102) +!121 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 54, type: !36, scopeLine: 55, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) +!122 = !DILocalVariable(name: "data", scope: !121, file: !2, line: 56, type: !40) +!123 = !DILocation(line: 56, column: 15, scope: !121) +!124 = !DILocalVariable(name: "dataBadBuffer", scope: !121, file: !2, line: 57, type: !46) +!125 = !DILocation(line: 57, column: 13, scope: !121) +!126 = !DILocalVariable(name: "dataGoodBuffer", scope: !121, file: !2, line: 58, type: !51) +!127 = !DILocation(line: 58, column: 13, scope: !121) +!128 = !DILocation(line: 60, column: 12, scope: !121) +!129 = !DILocation(line: 60, column: 10, scope: !121) +!130 = !DILocation(line: 61, column: 5, scope: !121) +!131 = !DILocation(line: 61, column: 13, scope: !121) +!132 = !DILocalVariable(name: "i", scope: !133, file: !2, line: 63, type: !61) +!133 = distinct !DILexicalBlock(scope: !121, 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: !51) +!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, !89} +!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: !121) 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 index 58b79b230..a2594b5ab 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,17 +15,17 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !44) + #dbg_declare(ptr %dataBadBuffer, !45, !DIExpression(), !49) + #dbg_declare(ptr %dataGoodBuffer, !50, !DIExpression(), !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 + #dbg_declare(ptr %source, !59, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #4, !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 @@ -43,20 +43,17 @@ entry: 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 +declare ptr @wmemset(ptr noundef, i32 noundef, 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) #3 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printWLine(ptr noundef) #4 +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_memcpy_01_good() #0 !dbg !77 { @@ -73,12 +70,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !85, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !87, !DIExpression(), !88) + %call = call i64 @time(ptr noundef null) #4, !dbg !89 %conv = trunc i64 %call to i32, !dbg !90 - call void @srand(i32 noundef %conv) #5, !dbg !91 + call void @srand(i32 noundef %conv) #4, !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 @@ -89,12 +86,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !99 { @@ -103,17 +100,17 @@ entry: %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 + #dbg_declare(ptr %data, !100, !DIExpression(), !101) + #dbg_declare(ptr %dataBadBuffer, !102, !DIExpression(), !103) + #dbg_declare(ptr %dataGoodBuffer, !104, !DIExpression(), !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 + #dbg_declare(ptr %source, !110, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #4, !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 @@ -131,12 +128,11 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -144,7 +140,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c", directory: "/root/testsss/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} @@ -164,8 +160,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c", directory: "/root/testsss/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} @@ -176,15 +172,15 @@ attributes #5 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 24, baseType: !43) +!42 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -219,7 +215,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 41f785d76..b3c080d6f 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,17 +15,17 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !44) + #dbg_declare(ptr %dataBadBuffer, !45, !DIExpression(), !49) + #dbg_declare(ptr %dataGoodBuffer, !50, !DIExpression(), !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 + #dbg_declare(ptr %source, !59, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #4, !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 @@ -43,20 +43,17 @@ entry: 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 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #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) #3 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printWLine(ptr noundef) #4 +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_memmove_01_good() #0 !dbg !77 { @@ -73,12 +70,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !85, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !87, !DIExpression(), !88) + %call = call i64 @time(ptr noundef null) #4, !dbg !89 %conv = trunc i64 %call to i32, !dbg !90 - call void @srand(i32 noundef %conv) #5, !dbg !91 + call void @srand(i32 noundef %conv) #4, !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 @@ -89,12 +86,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !99 { @@ -103,17 +100,17 @@ entry: %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 + #dbg_declare(ptr %data, !100, !DIExpression(), !101) + #dbg_declare(ptr %dataBadBuffer, !102, !DIExpression(), !103) + #dbg_declare(ptr %dataGoodBuffer, !104, !DIExpression(), !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 + #dbg_declare(ptr %source, !110, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #4, !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 @@ -131,12 +128,11 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -144,7 +140,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c", directory: "/root/testsss/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} @@ -164,8 +160,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c", directory: "/root/testsss/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} @@ -176,15 +172,15 @@ attributes #5 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 24, baseType: !43) +!42 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -219,7 +215,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 9179a8ea8..acc719d5c 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,22 +16,22 @@ entry: %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 + #dbg_declare(ptr %data, !45, !DIExpression(), !49) + #dbg_declare(ptr %dataBadBuffer, !50, !DIExpression(), !54) + #dbg_declare(ptr %dataGoodBuffer, !55, !DIExpression(), !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 + #dbg_declare(ptr %source, !64, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #3, !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 + %call4 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %1, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay3) #3, !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 @@ -41,20 +41,17 @@ entry: 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 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #1 ; Function Attrs: nounwind -declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #2 +declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printWLine(ptr noundef) #3 +declare void @printWLine(ptr noundef) #2 ; 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 { @@ -71,12 +68,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !89, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !91, !DIExpression(), !92) + %call = call i64 @time(ptr noundef null) #3, !dbg !93 %conv = trunc i64 %call to i32, !dbg !94 - call void @srand(i32 noundef %conv) #4, !dbg !95 + call void @srand(i32 noundef %conv) #3, !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 @@ -87,12 +84,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !103 { @@ -101,22 +98,22 @@ entry: %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 + #dbg_declare(ptr %data, !104, !DIExpression(), !105) + #dbg_declare(ptr %dataBadBuffer, !106, !DIExpression(), !107) + #dbg_declare(ptr %dataGoodBuffer, !108, !DIExpression(), !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 + #dbg_declare(ptr %source, !114, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #3, !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 + %call4 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %1, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay3) #3, !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 @@ -126,11 +123,10 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind } !llvm.dbg.cu = !{!28} !llvm.module.flags = !{!33, !34, !35, !36, !37, !38, !39} @@ -138,7 +134,7 @@ attributes #4 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c", directory: "/root/testsss/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} @@ -164,8 +160,8 @@ attributes #4 = { nounwind } !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") +!28 = distinct !DICompileUnit(language: DW_LANG_C11, file: !29, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !32, splitDebugInlining: false, nameTableKind: None) +!29 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c", directory: "/root/testsss/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} @@ -176,15 +172,15 @@ attributes #4 = { nounwind } !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"} +!40 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!47 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !48, line: 24, baseType: !4) +!48 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -217,7 +213,7 @@ attributes #4 = { nounwind } !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) +!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) !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) 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 index 271327124..fccccd532 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -16,8 +16,8 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !41) + #dbg_declare(ptr %dataBuffer, !42, !DIExpression(), !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 @@ -25,12 +25,12 @@ entry: %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 + #dbg_declare(ptr %dest, !53, !DIExpression(), !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 + #dbg_declare(ptr %i, !59, !DIExpression(), !63) + #dbg_declare(ptr %dataLen, !64, !DIExpression(), !65) %2 = load ptr, ptr %data, align 8, !dbg !66 - %call = call i64 @strlen(ptr noundef %2) #6, !dbg !67 + %call = call i64 @strlen(ptr noundef %2) #5, !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 @@ -44,10 +44,10 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx1 = getelementptr inbounds nuw 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 + %arrayidx2 = getelementptr inbounds nuw [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 @@ -73,20 +73,17 @@ for.end: ; preds = %for.cond 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 +declare i64 @strlen(ptr noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01_good() #0 !dbg !102 { @@ -103,12 +100,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !110, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !112, !DIExpression(), !113) + %call = call i64 @time(ptr noundef null) #6, !dbg !114 %conv = trunc i64 %call to i32, !dbg !115 - call void @srand(i32 noundef %conv) #7, !dbg !116 + call void @srand(i32 noundef %conv) #6, !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 @@ -119,10 +116,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !124 { @@ -132,8 +129,8 @@ entry: %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 + #dbg_declare(ptr %data, !125, !DIExpression(), !126) + #dbg_declare(ptr %dataBuffer, !127, !DIExpression(), !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 @@ -141,12 +138,12 @@ entry: %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 + #dbg_declare(ptr %dest, !135, !DIExpression(), !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 + #dbg_declare(ptr %i, !138, !DIExpression(), !139) + #dbg_declare(ptr %dataLen, !140, !DIExpression(), !141) %2 = load ptr, ptr %data, align 8, !dbg !142 - %call = call i64 @strlen(ptr noundef %2) #6, !dbg !143 + %call = call i64 @strlen(ptr noundef %2) #5, !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 @@ -160,10 +157,10 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx1 = getelementptr inbounds nuw 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 + %arrayidx2 = getelementptr inbounds nuw [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 @@ -195,14 +192,13 @@ for.end: ; preds = %for.cond 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} @@ -210,7 +206,7 @@ attributes #7 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c", directory: "/root/testsss/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} @@ -230,8 +226,8 @@ attributes #7 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c", directory: "/root/testsss/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} @@ -242,7 +238,7 @@ attributes #7 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -268,8 +264,8 @@ attributes #7 = { nounwind } !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") +!60 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !61, line: 18, baseType: !62) +!61 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -310,7 +306,7 @@ attributes #7 = { nounwind } !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) +!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) !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) 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 index 23325c195..4297e111d 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -14,8 +14,8 @@ 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 + #dbg_declare(ptr %data, !39, !DIExpression(), !41) + #dbg_declare(ptr %dataBuffer, !42, !DIExpression(), !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 @@ -23,21 +23,21 @@ entry: %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 + #dbg_declare(ptr %dest, !53, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %3) #5, !dbg !62 + %call2 = call ptr @strncpy(ptr noundef %arraydecay1, ptr noundef %2, i64 noundef %call) #6, !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 + %call4 = call i64 @strlen(ptr noundef %4) #5, !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 + %call6 = call i64 @strlen(ptr noundef %6) #5, !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 @@ -47,23 +47,20 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nounwind -declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #3 +declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #4 +declare i64 @strlen(ptr noundef) #3 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #4 -declare i32 @SAFE_BUFACCESS(...) #5 +declare i32 @SAFE_BUFACCESS(...) #4 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01_good() #0 !dbg !79 { @@ -80,12 +77,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !87, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !89, !DIExpression(), !90) + %call = call i64 @time(ptr noundef null) #6, !dbg !91 %conv = trunc i64 %call to i32, !dbg !92 - call void @srand(i32 noundef %conv) #7, !dbg !93 + call void @srand(i32 noundef %conv) #6, !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 @@ -96,10 +93,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 +declare void @srand(i32 noundef) #2 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 +declare i64 @time(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !101 { @@ -107,8 +104,8 @@ 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 + #dbg_declare(ptr %data, !102, !DIExpression(), !103) + #dbg_declare(ptr %dataBuffer, !104, !DIExpression(), !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 @@ -116,21 +113,21 @@ entry: %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 + #dbg_declare(ptr %dest, !112, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %3) #5, !dbg !118 + %call2 = call ptr @strncpy(ptr noundef %arraydecay1, ptr noundef %2, i64 noundef %call) #6, !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 + %call4 = call i64 @strlen(ptr noundef %4) #5, !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 + %call6 = call i64 @strlen(ptr noundef %6) #5, !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 @@ -140,14 +137,13 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} @@ -155,7 +151,7 @@ attributes #7 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c", directory: "/root/testsss/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} @@ -175,8 +171,8 @@ attributes #7 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c", directory: "/root/testsss/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} @@ -187,7 +183,7 @@ attributes #7 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -232,7 +228,7 @@ attributes #7 = { nounwind } !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) +!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) !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) 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 index 2642d4973..1463aeece 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -14,32 +14,32 @@ 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 + #dbg_declare(ptr %data, !39, !DIExpression(), !44) + #dbg_declare(ptr %dataBuffer, !45, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %0, i32 noundef 65, i64 noundef 99) #6, !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 + #dbg_declare(ptr %dest, !56, !DIExpression(), !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 + %call2 = call i64 @wcslen(ptr noundef %3) #7, !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 + %call4 = call i64 @wcslen(ptr noundef %4) #7, !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 + %call7 = call i64 @wcslen(ptr noundef %6) #7, !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 @@ -50,26 +50,23 @@ entry: 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 +declare ptr @wmemset(ptr noundef, i32 noundef, 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) #3 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #4 +declare i64 @wcslen(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 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare i32 @SAFE_BUFACCESS(...) #6 +declare i32 @SAFE_BUFACCESS(...) #5 -declare void @printWLine(ptr noundef) #6 +declare void @printWLine(ptr noundef) #5 ; 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 { @@ -86,12 +83,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !92, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !94, !DIExpression(), !95) + %call = call i64 @time(ptr noundef null) #6, !dbg !96 %conv = trunc i64 %call to i32, !dbg !97 - call void @srand(i32 noundef %conv) #7, !dbg !98 + call void @srand(i32 noundef %conv) #6, !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 @@ -102,12 +99,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !106 { @@ -115,32 +112,32 @@ 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 + #dbg_declare(ptr %data, !107, !DIExpression(), !108) + #dbg_declare(ptr %dataBuffer, !109, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %0, i32 noundef 65, i64 noundef 49) #6, !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 + #dbg_declare(ptr %dest, !117, !DIExpression(), !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 + %call2 = call i64 @wcslen(ptr noundef %3) #7, !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 + %call4 = call i64 @wcslen(ptr noundef %4) #7, !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 + %call7 = call i64 @wcslen(ptr noundef %6) #7, !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 @@ -151,15 +148,14 @@ entry: 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nounwind } +attributes #7 = { nounwind willreturn memory(read) } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} @@ -167,7 +163,7 @@ attributes #8 = { nounwind willreturn memory(read) } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c", directory: "/root/testsss/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} @@ -187,8 +183,8 @@ attributes #8 = { nounwind willreturn memory(read) } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c", directory: "/root/testsss/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} @@ -199,15 +195,15 @@ attributes #8 = { nounwind willreturn memory(read) } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 24, baseType: !43) +!42 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -249,7 +245,7 @@ attributes #8 = { nounwind willreturn memory(read) } !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) +!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) !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) 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 index 1782e95f6..dd3befebe 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,11 +15,11 @@ entry: %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 + #dbg_declare(ptr %data, !43, !DIExpression(), !44) + #dbg_declare(ptr %dataBadBuffer, !45, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !48, !DIExpression(), !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 @@ -27,14 +27,14 @@ entry: %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 + #dbg_declare(ptr %source, !55, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #3, !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 + %call3 = call ptr @wcscpy(ptr noundef %4, ptr noundef %arraydecay2) #3, !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 @@ -44,20 +44,17 @@ entry: 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 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #1 ; Function Attrs: nounwind -declare ptr @wcscpy(ptr noundef, ptr noundef) #2 +declare ptr @wcscpy(ptr noundef, ptr noundef) #1 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 -declare void @printWLine(ptr noundef) #3 +declare void @printWLine(ptr noundef) #2 ; 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 { @@ -74,12 +71,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !83, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !85, !DIExpression(), !86) + %call = call i64 @time(ptr noundef null) #3, !dbg !87 %conv = trunc i64 %call to i32, !dbg !88 - call void @srand(i32 noundef %conv) #4, !dbg !89 + call void @srand(i32 noundef %conv) #3, !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 @@ -90,12 +87,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !97 { @@ -104,11 +101,11 @@ entry: %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 + #dbg_declare(ptr %data, !98, !DIExpression(), !99) + #dbg_declare(ptr %dataBadBuffer, !100, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !103, !DIExpression(), !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 @@ -116,14 +113,14 @@ entry: %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 + #dbg_declare(ptr %source, !110, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #3, !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 + %call3 = call ptr @wcscpy(ptr noundef %4, ptr noundef %arraydecay2) #3, !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 @@ -133,11 +130,10 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!31, !32, !33, !34, !35, !36, !37} @@ -145,7 +141,7 @@ attributes #4 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c", directory: "/root/testsss/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} @@ -165,12 +161,12 @@ attributes #4 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !30, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c", directory: "/root/testsss/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") +!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 24, baseType: !28) +!27 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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} @@ -181,7 +177,7 @@ attributes #4 = { nounwind } !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"} +!38 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -218,7 +214,7 @@ attributes #4 = { nounwind } !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) +!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) !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) 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 index 0aeaa6ecf..d3de8aa00 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -14,8 +14,8 @@ 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 + #dbg_declare(ptr %data, !40, !DIExpression(), !41) + #dbg_declare(ptr %dataBuffer, !42, !DIExpression(), !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 @@ -25,11 +25,11 @@ entry: %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 + #dbg_declare(ptr %dest, !51, !DIExpression(), !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 + %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %4) #4, !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 @@ -39,20 +39,17 @@ entry: 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #3 +declare ptr @strcpy(ptr noundef, ptr noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01_good() #0 !dbg !67 { @@ -69,12 +66,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !75, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !77, !DIExpression(), !78) + %call = call i64 @time(ptr noundef null) #4, !dbg !79 %conv = trunc i64 %call to i32, !dbg !80 - call void @srand(i32 noundef %conv) #5, !dbg !81 + call void @srand(i32 noundef %conv) #4, !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 @@ -85,10 +82,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 +declare void @srand(i32 noundef) #2 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 +declare i64 @time(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !89 { @@ -96,8 +93,8 @@ 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 + #dbg_declare(ptr %data, !90, !DIExpression(), !91) + #dbg_declare(ptr %dataBuffer, !92, !DIExpression(), !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 @@ -107,11 +104,11 @@ entry: %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 + #dbg_declare(ptr %dest, !101, !DIExpression(), !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 + %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %4) #4, !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 @@ -121,12 +118,11 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} @@ -134,7 +130,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c", directory: "/root/testsss/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} @@ -154,8 +150,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c", directory: "/root/testsss/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) @@ -167,7 +163,7 @@ attributes #5 = { nounwind } !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"} +!35 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -199,7 +195,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index d2550c4fb..f663ddc15 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -14,20 +14,20 @@ 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 + #dbg_declare(ptr %data, !39, !DIExpression(), !44) + #dbg_declare(ptr %dataBuffer, !45, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %0, i32 noundef 65, i64 noundef 99) #4, !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 + #dbg_declare(ptr %dest, !56, !DIExpression(), !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 + %call2 = call ptr @wcscpy(ptr noundef %arraydecay1, ptr noundef %2) #4, !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 @@ -37,23 +37,20 @@ entry: 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 +declare ptr @wmemset(ptr noundef, i32 noundef, 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) #3 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 ; Function Attrs: nounwind -declare ptr @wcscpy(ptr noundef, ptr noundef) #2 +declare ptr @wcscpy(ptr noundef, ptr noundef) #1 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #3 -declare void @printWLine(ptr noundef) #4 +declare void @printWLine(ptr noundef) #3 ; 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 { @@ -70,12 +67,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !80, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !82, !DIExpression(), !83) + %call = call i64 @time(ptr noundef null) #4, !dbg !84 %conv = trunc i64 %call to i32, !dbg !85 - call void @srand(i32 noundef %conv) #5, !dbg !86 + call void @srand(i32 noundef %conv) #4, !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 @@ -86,12 +83,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !94 { @@ -99,20 +96,20 @@ 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 + #dbg_declare(ptr %data, !95, !DIExpression(), !96) + #dbg_declare(ptr %dataBuffer, !97, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %0, i32 noundef 65, i64 noundef 49) #4, !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 + #dbg_declare(ptr %dest, !105, !DIExpression(), !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 + %call2 = call ptr @wcscpy(ptr noundef %arraydecay1, ptr noundef %2) #4, !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 @@ -122,12 +119,11 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +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"="+cmov,+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} @@ -135,7 +131,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c", directory: "/root/testsss/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} @@ -155,8 +151,8 @@ attributes #5 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c", directory: "/root/testsss/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} @@ -167,15 +163,15 @@ attributes #5 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 24, baseType: !43) +!42 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -205,7 +201,7 @@ attributes #5 = { nounwind } !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) +!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) !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) 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 index 92942809e..f4de852e7 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -14,191 +14,187 @@ 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 + #dbg_declare(ptr %data, !42, !DIExpression(), !43) store ptr null, ptr %data, align 8, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef 10) #7, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef 10) #6, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !49 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !51 - unreachable, !dbg !51 + call void @exit(i32 noundef -1) #7, !dbg !50 + unreachable, !dbg !50 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 + #dbg_declare(ptr %source, !52, !DIExpression(), !57) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !57 + #dbg_declare(ptr %i, !58, !DIExpression(), !62) + store i64 0, ptr %i, align 8, !dbg !63 + br label %for.cond, !dbg !65 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 + %1 = load i64, ptr %i, align 8, !dbg !66 + %cmp1 = icmp ult i64 %1, 10, !dbg !68 + br i1 %cmp1, label %for.body, label %for.end, !dbg !69 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 + %2 = load i64, ptr %i, align 8, !dbg !70 + %arrayidx = getelementptr inbounds nuw [10 x i32], ptr %source, i64 0, i64 %2, !dbg !72 + %3 = load i32, ptr %arrayidx, align 4, !dbg !72 + %4 = load ptr, ptr %data, align 8, !dbg !73 + %5 = load i64, ptr %i, align 8, !dbg !74 + %arrayidx2 = getelementptr inbounds nuw i32, ptr %4, i64 %5, !dbg !73 + store i32 %3, ptr %arrayidx2, align 4, !dbg !75 + br label %for.inc, !dbg !76 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 + %6 = load i64, ptr %i, align 8, !dbg !77 + %inc = add i64 %6, 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 - %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 + %7 = load ptr, ptr %data, align 8, !dbg !82 + %call3 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %7, i64 noundef 39), !dbg !83 + %8 = load ptr, ptr %data, align 8, !dbg !84 + %arrayidx4 = getelementptr inbounds i32, ptr %8, i64 0, !dbg !84 + %9 = load i32, ptr %arrayidx4, align 4, !dbg !84 + call void @printIntLine(i32 noundef %9), !dbg !85 + %10 = load ptr, ptr %data, align 8, !dbg !86 + call void @free(ptr noundef %10) #8, !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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #4 -declare void @printIntLine(i32 noundef) #5 +declare void @printIntLine(i32 noundef) #4 ; Function Attrs: nounwind -declare void @free(ptr noundef) #6 +declare void @free(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01_good() #0 !dbg !90 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01_good() #0 !dbg !89 { entry: - call void @goodG2B(), !dbg !91 - ret void, !dbg !92 + 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 !93 { +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 !98, metadata !DIExpression()), !dbg !99 + #dbg_declare(ptr %argc.addr, !97, !DIExpression(), !98) 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 + #dbg_declare(ptr %argv.addr, !99, !DIExpression(), !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 @CWE122_Heap_Based_Buffer_Overflow__CWE131_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 @CWE122_Heap_Based_Buffer_Overflow__CWE131_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) #6 +declare void @srand(i32 noundef) #5 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #6 +declare i64 @time(ptr noundef) #5 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !112 { +define internal void @goodG2B() #0 !dbg !111 { 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 + #dbg_declare(ptr %data, !112, !DIExpression(), !113) + store ptr null, ptr %data, align 8, !dbg !114 + %call = call noalias ptr @malloc(i64 noundef 40) #6, !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 !119 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !122 - unreachable, !dbg !122 + call void @exit(i32 noundef -1) #7, !dbg !120 + unreachable, !dbg !120 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 + #dbg_declare(ptr %source, !122, !DIExpression(), !124) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !124 + #dbg_declare(ptr %i, !125, !DIExpression(), !126) + store i64 0, ptr %i, align 8, !dbg !127 + br label %for.cond, !dbg !129 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 + %1 = load i64, ptr %i, align 8, !dbg !130 + %cmp1 = icmp ult i64 %1, 10, !dbg !132 + br i1 %cmp1, label %for.body, label %for.end, !dbg !133 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 + %2 = load i64, ptr %i, align 8, !dbg !134 + %arrayidx = getelementptr inbounds nuw [10 x i32], ptr %source, i64 0, i64 %2, !dbg !136 + %3 = load i32, ptr %arrayidx, align 4, !dbg !136 + %4 = load ptr, ptr %data, align 8, !dbg !137 + %5 = load i64, ptr %i, align 8, !dbg !138 + %arrayidx2 = getelementptr inbounds nuw i32, ptr %4, i64 %5, !dbg !137 + store i32 %3, ptr %arrayidx2, align 4, !dbg !139 + %6 = load ptr, ptr %data, align 8, !dbg !140 + %7 = load i64, ptr %i, align 8, !dbg !141 + %add = add i64 %7, 1, !dbg !142 + %mul = mul i64 %add, 4, !dbg !143 + %sub = sub i64 %mul, 1, !dbg !144 + %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub), !dbg !145 + br label %for.inc, !dbg !146 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 + %8 = load i64, ptr %i, align 8, !dbg !147 + %inc = add i64 %8, 1, !dbg !147 + store i64 %inc, ptr %i, align 8, !dbg !147 + br label %for.cond, !dbg !148, !llvm.loop !149 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 + %9 = load ptr, ptr %data, align 8, !dbg !151 + %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %9, i64 noundef 39), !dbg !152 + %10 = load ptr, ptr %data, align 8, !dbg !153 + %arrayidx5 = getelementptr inbounds i32, ptr %10, i64 0, !dbg !153 + %11 = load i32, ptr %arrayidx5, align 4, !dbg !153 + call void @printIntLine(i32 noundef %11), !dbg !154 + %12 = load ptr, ptr %data, align 8, !dbg !155 + call void @free(ptr noundef %12) #8, !dbg !156 + ret void, !dbg !157 } -declare i32 @SAFE_BUFACCESS(...) #5 +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 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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 = !{!30, !31, !32, !33, !34, !35, !36} @@ -206,7 +202,7 @@ attributes #9 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/root/testsss/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} @@ -226,8 +222,8 @@ attributes #9 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/root/testsss/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) @@ -241,7 +237,7 @@ attributes #9 = { nounwind } !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"} +!37 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -254,113 +250,111 @@ attributes #9 = { nounwind } !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) +!50 = !DILocation(line: 27, column: 24, scope: !51) +!51 = distinct !DILexicalBlock(scope: !48, file: !2, line: 27, column: 23) +!52 = !DILocalVariable(name: "source", scope: !53, file: !2, line: 29, type: !54) +!53 = distinct !DILexicalBlock(scope: !38, file: !2, line: 28, column: 5) +!54 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 320, elements: !55) +!55 = !{!56} +!56 = !DISubrange(count: 10) +!57 = !DILocation(line: 29, column: 13, scope: !53) +!58 = !DILocalVariable(name: "i", scope: !53, file: !2, line: 30, type: !59) +!59 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !60, line: 18, baseType: !61) +!60 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") +!61 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!62 = !DILocation(line: 30, column: 16, scope: !53) +!63 = !DILocation(line: 32, column: 16, scope: !64) +!64 = distinct !DILexicalBlock(scope: !53, file: !2, line: 32, column: 9) +!65 = !DILocation(line: 32, column: 14, scope: !64) +!66 = !DILocation(line: 32, column: 21, scope: !67) +!67 = distinct !DILexicalBlock(scope: !64, file: !2, line: 32, column: 9) +!68 = !DILocation(line: 32, column: 23, scope: !67) +!69 = !DILocation(line: 32, column: 9, scope: !64) +!70 = !DILocation(line: 34, column: 30, scope: !71) +!71 = distinct !DILexicalBlock(scope: !67, file: !2, line: 33, column: 9) +!72 = !DILocation(line: 34, column: 23, scope: !71) +!73 = !DILocation(line: 34, column: 13, scope: !71) +!74 = !DILocation(line: 34, column: 18, scope: !71) +!75 = !DILocation(line: 34, column: 21, scope: !71) +!76 = !DILocation(line: 35, column: 9, scope: !71) +!77 = !DILocation(line: 32, column: 30, scope: !67) +!78 = !DILocation(line: 32, column: 9, scope: !67) +!79 = distinct !{!79, !69, !80, !81} +!80 = !DILocation(line: 35, column: 9, scope: !64) +!81 = !{!"llvm.loop.mustprogress"} +!82 = !DILocation(line: 36, column: 26, scope: !53) +!83 = !DILocation(line: 36, column: 9, scope: !53) +!84 = !DILocation(line: 37, column: 22, scope: !53) +!85 = !DILocation(line: 37, column: 9, scope: !53) +!86 = !DILocation(line: 38, column: 14, scope: !53) +!87 = !DILocation(line: 38, column: 9, scope: !53) +!88 = !DILocation(line: 40, column: 1, scope: !38) +!89 = 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) +!90 = !DILocation(line: 71, column: 5, scope: !89) +!91 = !DILocation(line: 72, column: 1, scope: !89) +!92 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 84, type: !93, scopeLine: 85, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) +!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: 84, type: !26) +!98 = !DILocation(line: 84, column: 14, scope: !92) +!99 = !DILocalVariable(name: "argv", arg: 2, scope: !92, file: !2, line: 84, type: !95) +!100 = !DILocation(line: 84, column: 27, scope: !92) +!101 = !DILocation(line: 87, column: 22, scope: !92) +!102 = !DILocation(line: 87, column: 12, scope: !92) +!103 = !DILocation(line: 87, column: 5, scope: !92) +!104 = !DILocation(line: 89, column: 5, scope: !92) +!105 = !DILocation(line: 90, column: 5, scope: !92) +!106 = !DILocation(line: 91, column: 5, scope: !92) +!107 = !DILocation(line: 94, column: 5, scope: !92) +!108 = !DILocation(line: 95, column: 5, scope: !92) +!109 = !DILocation(line: 96, column: 5, scope: !92) +!110 = !DILocation(line: 98, column: 5, scope: !92) +!111 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 47, type: !39, scopeLine: 48, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !41) +!112 = !DILocalVariable(name: "data", scope: !111, file: !2, line: 49, type: !25) +!113 = !DILocation(line: 49, column: 11, scope: !111) +!114 = !DILocation(line: 50, column: 10, scope: !111) +!115 = !DILocation(line: 52, column: 19, scope: !111) +!116 = !DILocation(line: 52, column: 10, scope: !111) +!117 = !DILocation(line: 53, column: 9, scope: !118) +!118 = distinct !DILexicalBlock(scope: !111, file: !2, line: 53, column: 9) +!119 = !DILocation(line: 53, column: 14, scope: !118) +!120 = !DILocation(line: 53, column: 24, scope: !121) +!121 = distinct !DILexicalBlock(scope: !118, file: !2, line: 53, column: 23) +!122 = !DILocalVariable(name: "source", scope: !123, file: !2, line: 55, type: !54) +!123 = distinct !DILexicalBlock(scope: !111, file: !2, line: 54, column: 5) +!124 = !DILocation(line: 55, column: 13, scope: !123) +!125 = !DILocalVariable(name: "i", scope: !123, file: !2, line: 56, type: !59) +!126 = !DILocation(line: 56, column: 16, scope: !123) +!127 = !DILocation(line: 58, column: 16, scope: !128) +!128 = distinct !DILexicalBlock(scope: !123, file: !2, line: 58, column: 9) +!129 = !DILocation(line: 58, column: 14, scope: !128) +!130 = !DILocation(line: 58, column: 21, scope: !131) +!131 = distinct !DILexicalBlock(scope: !128, file: !2, line: 58, column: 9) +!132 = !DILocation(line: 58, column: 23, scope: !131) +!133 = !DILocation(line: 58, column: 9, scope: !128) +!134 = !DILocation(line: 60, column: 30, scope: !135) +!135 = distinct !DILexicalBlock(scope: !131, file: !2, line: 59, column: 9) +!136 = !DILocation(line: 60, column: 23, scope: !135) +!137 = !DILocation(line: 60, column: 13, scope: !135) +!138 = !DILocation(line: 60, column: 18, scope: !135) +!139 = !DILocation(line: 60, column: 21, scope: !135) +!140 = !DILocation(line: 61, column: 28, scope: !135) +!141 = !DILocation(line: 61, column: 35, scope: !135) +!142 = !DILocation(line: 61, column: 37, scope: !135) +!143 = !DILocation(line: 61, column: 42, scope: !135) +!144 = !DILocation(line: 61, column: 56, scope: !135) +!145 = !DILocation(line: 61, column: 13, scope: !135) +!146 = !DILocation(line: 62, column: 9, scope: !135) +!147 = !DILocation(line: 58, column: 30, scope: !131) +!148 = !DILocation(line: 58, column: 9, scope: !131) +!149 = distinct !{!149, !133, !150, !81} +!150 = !DILocation(line: 62, column: 9, scope: !128) +!151 = !DILocation(line: 63, column: 24, scope: !123) +!152 = !DILocation(line: 63, column: 9, scope: !123) +!153 = !DILocation(line: 64, column: 22, scope: !123) +!154 = !DILocation(line: 64, column: 9, scope: !123) +!155 = !DILocation(line: 65, column: 14, scope: !123) +!156 = !DILocation(line: 65, column: 9, scope: !123) +!157 = !DILocation(line: 67, column: 1, scope: !111) 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 index 899031e48..b1ef606ff 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,146 +13,142 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_bad() 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 + #dbg_declare(ptr %data, !42, !DIExpression(), !43) store ptr null, ptr %data, align 8, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef 10) #8, !dbg !45 + %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !49 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !51 - unreachable, !dbg !51 + call void @exit(i32 noundef -1) #8, !dbg !50 + unreachable, !dbg !50 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 + #dbg_declare(ptr %source, !52, !DIExpression(), !57) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !57 + %1 = load ptr, ptr %data, align 8, !dbg !58 + %arraydecay = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !59 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 40, i1 false), !dbg !59 + %2 = load ptr, ptr %data, align 8, !dbg !60 + %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 39), !dbg !61 + %arraydecay2 = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !62 + %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 39), !dbg !63 + %3 = load ptr, ptr %data, align 8, !dbg !64 + %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !64 + %4 = load i32, ptr %arrayidx, align 4, !dbg !64 + call void @printIntLine(i32 noundef %4), !dbg !65 + %5 = load ptr, ptr %data, align 8, !dbg !66 + call void @free(ptr noundef %5) #9, !dbg !67 + ret void, !dbg !68 } -; 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 noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare i32 @SAFE_BUFACCESS(...) #6 +declare i32 @SAFE_BUFACCESS(...) #5 -declare void @printIntLine(i32 noundef) #6 +declare void @printIntLine(i32 noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #7 +declare void @free(ptr noundef) #6 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_good() #0 !dbg !70 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_good() #0 !dbg !69 { entry: - call void @goodG2B(), !dbg !71 - ret void, !dbg !72 + call void @goodG2B(), !dbg !70 + ret void, !dbg !71 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !73 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !72 { 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 + #dbg_declare(ptr %argc.addr, !77, !DIExpression(), !78) 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 + #dbg_declare(ptr %argv.addr, !79, !DIExpression(), !80) + %call = call i64 @time(ptr noundef null) #9, !dbg !81 + %conv = trunc i64 %call to i32, !dbg !82 + call void @srand(i32 noundef %conv) #9, !dbg !83 + call void @printLine(ptr noundef @.str), !dbg !84 + call void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_good(), !dbg !85 + call void @printLine(ptr noundef @.str.1), !dbg !86 + call void @printLine(ptr noundef @.str.2), !dbg !87 + call void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_bad(), !dbg !88 + call void @printLine(ptr noundef @.str.3), !dbg !89 + ret i32 0, !dbg !90 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #7 +declare void @srand(i32 noundef) #6 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 +declare i64 @time(ptr noundef) #6 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !92 { +define internal void @goodG2B() #0 !dbg !91 { 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 + #dbg_declare(ptr %data, !92, !DIExpression(), !93) + store ptr null, ptr %data, align 8, !dbg !94 + %call = call noalias ptr @malloc(i64 noundef 40) #7, !dbg !95 + store ptr %call, ptr %data, align 8, !dbg !96 + %0 = load ptr, ptr %data, align 8, !dbg !97 + %cmp = icmp eq ptr %0, null, !dbg !99 + br i1 %cmp, label %if.then, label %if.end, !dbg !99 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !102 - unreachable, !dbg !102 + call void @exit(i32 noundef -1) #8, !dbg !100 + unreachable, !dbg !100 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 + #dbg_declare(ptr %source, !102, !DIExpression(), !104) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !104 + %1 = load ptr, ptr %data, align 8, !dbg !105 + %arraydecay = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !106 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 40, i1 false), !dbg !106 + %2 = load ptr, ptr %data, align 8, !dbg !107 + %call1 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 39), !dbg !108 + %arraydecay2 = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !109 + %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 39), !dbg !110 + %3 = load ptr, ptr %data, align 8, !dbg !111 + %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !111 + %4 = load i32, ptr %arrayidx, align 4, !dbg !111 + call void @printIntLine(i32 noundef %4), !dbg !112 + %5 = load ptr, ptr %data, align 8, !dbg !113 + call void @free(ptr noundef %5) #9, !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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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} @@ -160,7 +156,7 @@ attributes #10 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/root/testsss/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} @@ -180,8 +176,8 @@ attributes #10 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/root/testsss/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) @@ -195,7 +191,7 @@ attributes #10 = { nounwind } !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"} +!37 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -208,71 +204,69 @@ attributes #10 = { nounwind } !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) +!50 = !DILocation(line: 27, column: 24, scope: !51) +!51 = distinct !DILexicalBlock(scope: !48, file: !2, line: 27, column: 23) +!52 = !DILocalVariable(name: "source", scope: !53, file: !2, line: 29, type: !54) +!53 = distinct !DILexicalBlock(scope: !38, file: !2, line: 28, column: 5) +!54 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 320, elements: !55) +!55 = !{!56} +!56 = !DISubrange(count: 10) +!57 = !DILocation(line: 29, column: 13, scope: !53) +!58 = !DILocation(line: 31, column: 16, scope: !53) +!59 = !DILocation(line: 31, column: 9, scope: !53) +!60 = !DILocation(line: 32, column: 26, scope: !53) +!61 = !DILocation(line: 32, column: 9, scope: !53) +!62 = !DILocation(line: 33, column: 24, scope: !53) +!63 = !DILocation(line: 33, column: 9, scope: !53) +!64 = !DILocation(line: 35, column: 22, scope: !53) +!65 = !DILocation(line: 35, column: 9, scope: !53) +!66 = !DILocation(line: 36, column: 14, scope: !53) +!67 = !DILocation(line: 36, column: 9, scope: !53) +!68 = !DILocation(line: 38, column: 1, scope: !38) +!69 = 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) +!70 = !DILocation(line: 66, column: 5, scope: !69) +!71 = !DILocation(line: 67, column: 1, scope: !69) +!72 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 79, type: !73, scopeLine: 80, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) +!73 = !DISubroutineType(types: !74) +!74 = !{!26, !26, !75} +!75 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !76, size: 64) +!76 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!77 = !DILocalVariable(name: "argc", arg: 1, scope: !72, file: !2, line: 79, type: !26) +!78 = !DILocation(line: 79, column: 14, scope: !72) +!79 = !DILocalVariable(name: "argv", arg: 2, scope: !72, file: !2, line: 79, type: !75) +!80 = !DILocation(line: 79, column: 27, scope: !72) +!81 = !DILocation(line: 82, column: 22, scope: !72) +!82 = !DILocation(line: 82, column: 12, scope: !72) +!83 = !DILocation(line: 82, column: 5, scope: !72) +!84 = !DILocation(line: 84, column: 5, scope: !72) +!85 = !DILocation(line: 85, column: 5, scope: !72) +!86 = !DILocation(line: 86, column: 5, scope: !72) +!87 = !DILocation(line: 89, column: 5, scope: !72) +!88 = !DILocation(line: 90, column: 5, scope: !72) +!89 = !DILocation(line: 91, column: 5, scope: !72) +!90 = !DILocation(line: 93, column: 5, scope: !72) +!91 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 45, type: !39, scopeLine: 46, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !41) +!92 = !DILocalVariable(name: "data", scope: !91, file: !2, line: 47, type: !25) +!93 = !DILocation(line: 47, column: 11, scope: !91) +!94 = !DILocation(line: 48, column: 10, scope: !91) +!95 = !DILocation(line: 50, column: 19, scope: !91) +!96 = !DILocation(line: 50, column: 10, scope: !91) +!97 = !DILocation(line: 51, column: 9, scope: !98) +!98 = distinct !DILexicalBlock(scope: !91, file: !2, line: 51, column: 9) +!99 = !DILocation(line: 51, column: 14, scope: !98) +!100 = !DILocation(line: 51, column: 24, scope: !101) +!101 = distinct !DILexicalBlock(scope: !98, file: !2, line: 51, column: 23) +!102 = !DILocalVariable(name: "source", scope: !103, file: !2, line: 53, type: !54) +!103 = distinct !DILexicalBlock(scope: !91, file: !2, line: 52, column: 5) +!104 = !DILocation(line: 53, column: 13, scope: !103) +!105 = !DILocation(line: 55, column: 16, scope: !103) +!106 = !DILocation(line: 55, column: 9, scope: !103) +!107 = !DILocation(line: 56, column: 24, scope: !103) +!108 = !DILocation(line: 56, column: 9, scope: !103) +!109 = !DILocation(line: 57, column: 24, scope: !103) +!110 = !DILocation(line: 57, column: 9, scope: !103) +!111 = !DILocation(line: 59, column: 22, scope: !103) +!112 = !DILocation(line: 59, column: 9, scope: !103) +!113 = !DILocation(line: 60, column: 14, scope: !103) +!114 = !DILocation(line: 60, column: 9, scope: !103) +!115 = !DILocation(line: 62, column: 1, scope: !91) 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 index a5186da53..2e143c3ac 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,146 +13,142 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcp 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 + #dbg_declare(ptr %data, !46, !DIExpression(), !47) store ptr null, ptr %data, align 8, !dbg !48 - %call = call noalias ptr @malloc(i64 noundef 400) #8, !dbg !49 + %call = call noalias ptr @malloc(i64 noundef 400) #7, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !53 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !55 - unreachable, !dbg !55 + call void @exit(i32 noundef -1) #8, !dbg !54 + unreachable, !dbg !54 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 + #dbg_declare(ptr %source, !56, !DIExpression(), !61) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !61 + %1 = load ptr, ptr %data, align 8, !dbg !62 + %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !63 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !63 + %2 = load ptr, ptr %data, align 8, !dbg !64 + %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, 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 + %3 = load ptr, ptr %data, align 8, !dbg !68 + %arrayidx = getelementptr inbounds i64, ptr %3, i64 0, !dbg !68 + %4 = load i64, ptr %arrayidx, align 8, !dbg !68 + call void @printLongLongLine(i64 noundef %4), !dbg !69 + %5 = load ptr, ptr %data, align 8, !dbg !70 + call void @free(ptr noundef %5) #9, !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: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare i32 @SAFE_BUFACCESS(...) #6 +declare i32 @SAFE_BUFACCESS(...) #5 -declare void @printLongLongLine(i64 noundef) #6 +declare void @printLongLongLine(i64 noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #7 +declare void @free(ptr noundef) #6 ; 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 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01_good() #0 !dbg !73 { entry: - call void @goodG2B(), !dbg !75 - ret void, !dbg !76 + 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 !77 { +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 !83, metadata !DIExpression()), !dbg !84 + #dbg_declare(ptr %argc.addr, !82, !DIExpression(), !83) 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 + #dbg_declare(ptr %argv.addr, !84, !DIExpression(), !85) + %call = call i64 @time(ptr noundef null) #9, !dbg !86 + %conv = trunc i64 %call to i32, !dbg !87 + call void @srand(i32 noundef %conv) #9, !dbg !88 + call void @printLine(ptr noundef @.str), !dbg !89 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01_good(), !dbg !90 + call void @printLine(ptr noundef @.str.1), !dbg !91 + call void @printLine(ptr noundef @.str.2), !dbg !92 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_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) #7 +declare void @srand(i32 noundef) #6 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 +declare i64 @time(ptr noundef) #6 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !97 { +define internal void @goodG2B() #0 !dbg !96 { 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 + #dbg_declare(ptr %data, !97, !DIExpression(), !98) + store ptr null, ptr %data, align 8, !dbg !99 + %call = call noalias ptr @malloc(i64 noundef 800) #7, !dbg !100 + store ptr %call, ptr %data, align 8, !dbg !101 + %0 = load ptr, ptr %data, align 8, !dbg !102 + %cmp = icmp eq ptr %0, null, !dbg !104 + br i1 %cmp, label %if.then, label %if.end, !dbg !104 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !107 - unreachable, !dbg !107 + call void @exit(i32 noundef -1) #8, !dbg !105 + unreachable, !dbg !105 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 + #dbg_declare(ptr %source, !107, !DIExpression(), !109) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !109 + %1 = load ptr, ptr %data, align 8, !dbg !110 + %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !111 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !111 + %2 = load ptr, ptr %data, align 8, !dbg !112 + %call1 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 799), !dbg !113 + %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !114 + %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !115 + %3 = load ptr, ptr %data, align 8, !dbg !116 + %arrayidx = getelementptr inbounds i64, ptr %3, i64 0, !dbg !116 + %4 = load i64, ptr %arrayidx, align 8, !dbg !116 + call void @printLongLongLine(i64 noundef %4), !dbg !117 + %5 = load ptr, ptr %data, align 8, !dbg !118 + call void @free(ptr noundef %5) #9, !dbg !119 + ret void, !dbg !120 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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 = !{!34, !35, !36, !37, !38, !39, !40} @@ -160,7 +156,7 @@ attributes #10 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c", directory: "/root/testsss/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} @@ -180,14 +176,14 @@ attributes #10 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !33, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c", directory: "/root/testsss/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") +!27 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "649b383a60bfa3eb90e85840b2b0be20") !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") +!29 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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) @@ -199,7 +195,7 @@ attributes #10 = { nounwind } !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"} +!41 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -212,72 +208,70 @@ attributes #10 = { nounwind } !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) +!54 = !DILocation(line: 27, column: 24, scope: !55) +!55 = distinct !DILexicalBlock(scope: !52, file: !2, line: 27, column: 23) +!56 = !DILocalVariable(name: "source", scope: !57, file: !2, line: 29, type: !58) +!57 = distinct !DILexicalBlock(scope: !42, file: !2, line: 28, column: 5) +!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 6400, elements: !59) +!59 = !{!60} +!60 = !DISubrange(count: 100) +!61 = !DILocation(line: 29, column: 17, scope: !57) +!62 = !DILocation(line: 31, column: 16, scope: !57) +!63 = !DILocation(line: 31, column: 9, scope: !57) +!64 = !DILocation(line: 32, column: 26, scope: !57) +!65 = !DILocation(line: 32, column: 9, scope: !57) +!66 = !DILocation(line: 33, column: 24, scope: !57) +!67 = !DILocation(line: 33, column: 9, scope: !57) +!68 = !DILocation(line: 34, column: 27, scope: !57) +!69 = !DILocation(line: 34, column: 9, scope: !57) +!70 = !DILocation(line: 35, column: 14, scope: !57) +!71 = !DILocation(line: 35, column: 9, scope: !57) +!72 = !DILocation(line: 37, column: 1, scope: !42) +!73 = 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) +!74 = !DILocation(line: 64, column: 5, scope: !73) +!75 = !DILocation(line: 65, column: 1, scope: !73) +!76 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 77, type: !77, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !45) +!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: !81, size: 64) +!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!82 = !DILocalVariable(name: "argc", arg: 1, scope: !76, file: !2, line: 77, type: !79) +!83 = !DILocation(line: 77, column: 14, scope: !76) +!84 = !DILocalVariable(name: "argv", arg: 2, scope: !76, file: !2, line: 77, type: !80) +!85 = !DILocation(line: 77, column: 27, scope: !76) +!86 = !DILocation(line: 80, column: 22, scope: !76) +!87 = !DILocation(line: 80, column: 12, scope: !76) +!88 = !DILocation(line: 80, column: 5, scope: !76) +!89 = !DILocation(line: 82, column: 5, scope: !76) +!90 = !DILocation(line: 83, column: 5, scope: !76) +!91 = !DILocation(line: 84, column: 5, scope: !76) +!92 = !DILocation(line: 87, column: 5, scope: !76) +!93 = !DILocation(line: 88, column: 5, scope: !76) +!94 = !DILocation(line: 89, column: 5, scope: !76) +!95 = !DILocation(line: 91, column: 5, scope: !76) +!96 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !43, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !45) +!97 = !DILocalVariable(name: "data", scope: !96, file: !2, line: 46, type: !25) +!98 = !DILocation(line: 46, column: 15, scope: !96) +!99 = !DILocation(line: 47, column: 10, scope: !96) +!100 = !DILocation(line: 49, column: 23, scope: !96) +!101 = !DILocation(line: 49, column: 10, scope: !96) +!102 = !DILocation(line: 50, column: 9, scope: !103) +!103 = distinct !DILexicalBlock(scope: !96, file: !2, line: 50, column: 9) +!104 = !DILocation(line: 50, column: 14, scope: !103) +!105 = !DILocation(line: 50, column: 24, scope: !106) +!106 = distinct !DILexicalBlock(scope: !103, file: !2, line: 50, column: 23) +!107 = !DILocalVariable(name: "source", scope: !108, file: !2, line: 52, type: !58) +!108 = distinct !DILexicalBlock(scope: !96, file: !2, line: 51, column: 5) +!109 = !DILocation(line: 52, column: 17, scope: !108) +!110 = !DILocation(line: 54, column: 16, scope: !108) +!111 = !DILocation(line: 54, column: 9, scope: !108) +!112 = !DILocation(line: 55, column: 24, scope: !108) +!113 = !DILocation(line: 55, column: 9, scope: !108) +!114 = !DILocation(line: 56, column: 24, scope: !108) +!115 = !DILocation(line: 56, column: 9, scope: !108) +!116 = !DILocation(line: 57, column: 27, scope: !108) +!117 = !DILocation(line: 57, column: 9, scope: !108) +!118 = !DILocation(line: 58, column: 14, scope: !108) +!119 = !DILocation(line: 58, column: 9, scope: !108) +!120 = !DILocation(line: 60, column: 1, scope: !96) 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 index 6a19a0d87..9f9649b6e 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,146 +13,142 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmo 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 + #dbg_declare(ptr %data, !46, !DIExpression(), !47) store ptr null, ptr %data, align 8, !dbg !48 - %call = call noalias ptr @malloc(i64 noundef 400) #8, !dbg !49 + %call = call noalias ptr @malloc(i64 noundef 400) #7, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !53 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !55 - unreachable, !dbg !55 + call void @exit(i32 noundef -1) #8, !dbg !54 + unreachable, !dbg !54 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 + #dbg_declare(ptr %source, !56, !DIExpression(), !61) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !61 + %1 = load ptr, ptr %data, align 8, !dbg !62 + %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !63 + call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !63 + %2 = load ptr, ptr %data, align 8, !dbg !64 + %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, 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 + %3 = load ptr, ptr %data, align 8, !dbg !68 + %arrayidx = getelementptr inbounds i64, ptr %3, i64 0, !dbg !68 + %4 = load i64, ptr %arrayidx, align 8, !dbg !68 + call void @printLongLongLine(i64 noundef %4), !dbg !69 + %5 = load ptr, ptr %data, align 8, !dbg !70 + call void @free(ptr noundef %5) #9, !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: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare i32 @SAFE_BUFACCESS(...) #6 +declare i32 @SAFE_BUFACCESS(...) #5 -declare void @printLongLongLine(i64 noundef) #6 +declare void @printLongLongLine(i64 noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #7 +declare void @free(ptr noundef) #6 ; 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 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01_good() #0 !dbg !73 { entry: - call void @goodG2B(), !dbg !75 - ret void, !dbg !76 + 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 !77 { +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 !83, metadata !DIExpression()), !dbg !84 + #dbg_declare(ptr %argc.addr, !82, !DIExpression(), !83) 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 + #dbg_declare(ptr %argv.addr, !84, !DIExpression(), !85) + %call = call i64 @time(ptr noundef null) #9, !dbg !86 + %conv = trunc i64 %call to i32, !dbg !87 + call void @srand(i32 noundef %conv) #9, !dbg !88 + call void @printLine(ptr noundef @.str), !dbg !89 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01_good(), !dbg !90 + call void @printLine(ptr noundef @.str.1), !dbg !91 + call void @printLine(ptr noundef @.str.2), !dbg !92 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_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) #7 +declare void @srand(i32 noundef) #6 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 +declare i64 @time(ptr noundef) #6 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !97 { +define internal void @goodG2B() #0 !dbg !96 { 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 + #dbg_declare(ptr %data, !97, !DIExpression(), !98) + store ptr null, ptr %data, align 8, !dbg !99 + %call = call noalias ptr @malloc(i64 noundef 800) #7, !dbg !100 + store ptr %call, ptr %data, align 8, !dbg !101 + %0 = load ptr, ptr %data, align 8, !dbg !102 + %cmp = icmp eq ptr %0, null, !dbg !104 + br i1 %cmp, label %if.then, label %if.end, !dbg !104 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !107 - unreachable, !dbg !107 + call void @exit(i32 noundef -1) #8, !dbg !105 + unreachable, !dbg !105 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 + #dbg_declare(ptr %source, !107, !DIExpression(), !109) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !109 + %1 = load ptr, ptr %data, align 8, !dbg !110 + %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !111 + call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !111 + %2 = load ptr, ptr %data, align 8, !dbg !112 + %call1 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 799), !dbg !113 + %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !114 + %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !115 + %3 = load ptr, ptr %data, align 8, !dbg !116 + %arrayidx = getelementptr inbounds i64, ptr %3, i64 0, !dbg !116 + %4 = load i64, ptr %arrayidx, align 8, !dbg !116 + call void @printLongLongLine(i64 noundef %4), !dbg !117 + %5 = load ptr, ptr %data, align 8, !dbg !118 + call void @free(ptr noundef %5) #9, !dbg !119 + ret void, !dbg !120 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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 = !{!34, !35, !36, !37, !38, !39, !40} @@ -160,7 +156,7 @@ attributes #10 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c", directory: "/root/testsss/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} @@ -180,14 +176,14 @@ attributes #10 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !33, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c", directory: "/root/testsss/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") +!27 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "649b383a60bfa3eb90e85840b2b0be20") !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") +!29 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") !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) @@ -199,7 +195,7 @@ attributes #10 = { nounwind } !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"} +!41 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -212,72 +208,70 @@ attributes #10 = { nounwind } !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) +!54 = !DILocation(line: 27, column: 24, scope: !55) +!55 = distinct !DILexicalBlock(scope: !52, file: !2, line: 27, column: 23) +!56 = !DILocalVariable(name: "source", scope: !57, file: !2, line: 29, type: !58) +!57 = distinct !DILexicalBlock(scope: !42, file: !2, line: 28, column: 5) +!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 6400, elements: !59) +!59 = !{!60} +!60 = !DISubrange(count: 100) +!61 = !DILocation(line: 29, column: 17, scope: !57) +!62 = !DILocation(line: 31, column: 17, scope: !57) +!63 = !DILocation(line: 31, column: 9, scope: !57) +!64 = !DILocation(line: 32, column: 26, scope: !57) +!65 = !DILocation(line: 32, column: 9, scope: !57) +!66 = !DILocation(line: 33, column: 24, scope: !57) +!67 = !DILocation(line: 33, column: 9, scope: !57) +!68 = !DILocation(line: 34, column: 27, scope: !57) +!69 = !DILocation(line: 34, column: 9, scope: !57) +!70 = !DILocation(line: 35, column: 14, scope: !57) +!71 = !DILocation(line: 35, column: 9, scope: !57) +!72 = !DILocation(line: 37, column: 1, scope: !42) +!73 = 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) +!74 = !DILocation(line: 64, column: 5, scope: !73) +!75 = !DILocation(line: 65, column: 1, scope: !73) +!76 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 77, type: !77, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !45) +!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: !81, size: 64) +!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!82 = !DILocalVariable(name: "argc", arg: 1, scope: !76, file: !2, line: 77, type: !79) +!83 = !DILocation(line: 77, column: 14, scope: !76) +!84 = !DILocalVariable(name: "argv", arg: 2, scope: !76, file: !2, line: 77, type: !80) +!85 = !DILocation(line: 77, column: 27, scope: !76) +!86 = !DILocation(line: 80, column: 22, scope: !76) +!87 = !DILocation(line: 80, column: 12, scope: !76) +!88 = !DILocation(line: 80, column: 5, scope: !76) +!89 = !DILocation(line: 82, column: 5, scope: !76) +!90 = !DILocation(line: 83, column: 5, scope: !76) +!91 = !DILocation(line: 84, column: 5, scope: !76) +!92 = !DILocation(line: 87, column: 5, scope: !76) +!93 = !DILocation(line: 88, column: 5, scope: !76) +!94 = !DILocation(line: 89, column: 5, scope: !76) +!95 = !DILocation(line: 91, column: 5, scope: !76) +!96 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !43, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !45) +!97 = !DILocalVariable(name: "data", scope: !96, file: !2, line: 46, type: !25) +!98 = !DILocation(line: 46, column: 15, scope: !96) +!99 = !DILocation(line: 47, column: 10, scope: !96) +!100 = !DILocation(line: 49, column: 23, scope: !96) +!101 = !DILocation(line: 49, column: 10, scope: !96) +!102 = !DILocation(line: 50, column: 9, scope: !103) +!103 = distinct !DILexicalBlock(scope: !96, file: !2, line: 50, column: 9) +!104 = !DILocation(line: 50, column: 14, scope: !103) +!105 = !DILocation(line: 50, column: 24, scope: !106) +!106 = distinct !DILexicalBlock(scope: !103, file: !2, line: 50, column: 23) +!107 = !DILocalVariable(name: "source", scope: !108, file: !2, line: 52, type: !58) +!108 = distinct !DILexicalBlock(scope: !96, file: !2, line: 51, column: 5) +!109 = !DILocation(line: 52, column: 17, scope: !108) +!110 = !DILocation(line: 54, column: 17, scope: !108) +!111 = !DILocation(line: 54, column: 9, scope: !108) +!112 = !DILocation(line: 55, column: 24, scope: !108) +!113 = !DILocation(line: 55, column: 9, scope: !108) +!114 = !DILocation(line: 56, column: 24, scope: !108) +!115 = !DILocation(line: 56, column: 9, scope: !108) +!116 = !DILocation(line: 57, column: 27, scope: !108) +!117 = !DILocation(line: 57, column: 9, scope: !108) +!118 = !DILocation(line: 58, column: 14, scope: !108) +!119 = !DILocation(line: 58, column: 9, scope: !108) +!120 = !DILocation(line: 60, column: 1, scope: !96) 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 index bd9c9f06a..9e8dfcb6c 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,146 +13,142 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_0 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 + #dbg_declare(ptr %data, !42, !DIExpression(), !43) store ptr null, ptr %data, align 8, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef 200) #8, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef 200) #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 + br i1 %cmp, label %if.then, label %if.end, !dbg !49 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !51 - unreachable, !dbg !51 + call void @exit(i32 noundef -1) #8, !dbg !50 + unreachable, !dbg !50 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 + #dbg_declare(ptr %source, !52, !DIExpression(), !57) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 400, i1 false), !dbg !57 + %1 = load ptr, ptr %data, align 8, !dbg !58 + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !59 + call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 400, i1 false), !dbg !59 + %2 = load ptr, ptr %data, align 8, !dbg !60 + %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !61 + %arraydecay2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !62 + %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 399), !dbg !63 + %3 = load ptr, ptr %data, align 8, !dbg !64 + %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !64 + %4 = load i32, ptr %arrayidx, align 4, !dbg !64 + call void @printIntLine(i32 noundef %4), !dbg !65 + %5 = load ptr, ptr %data, align 8, !dbg !66 + call void @free(ptr noundef %5) #9, !dbg !67 + ret void, !dbg !68 } -; 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 noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare i32 @SAFE_BUFACCESS(...) #6 +declare i32 @SAFE_BUFACCESS(...) #5 -declare void @printIntLine(i32 noundef) #6 +declare void @printIntLine(i32 noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #7 +declare void @free(ptr noundef) #6 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_good() #0 !dbg !70 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_good() #0 !dbg !69 { entry: - call void @goodG2B(), !dbg !71 - ret void, !dbg !72 + call void @goodG2B(), !dbg !70 + ret void, !dbg !71 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !73 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !72 { 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 + #dbg_declare(ptr %argc.addr, !77, !DIExpression(), !78) 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 + #dbg_declare(ptr %argv.addr, !79, !DIExpression(), !80) + %call = call i64 @time(ptr noundef null) #9, !dbg !81 + %conv = trunc i64 %call to i32, !dbg !82 + call void @srand(i32 noundef %conv) #9, !dbg !83 + call void @printLine(ptr noundef @.str), !dbg !84 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_good(), !dbg !85 + call void @printLine(ptr noundef @.str.1), !dbg !86 + call void @printLine(ptr noundef @.str.2), !dbg !87 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_bad(), !dbg !88 + call void @printLine(ptr noundef @.str.3), !dbg !89 + ret i32 0, !dbg !90 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #7 +declare void @srand(i32 noundef) #6 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 +declare i64 @time(ptr noundef) #6 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !92 { +define internal void @goodG2B() #0 !dbg !91 { 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 + #dbg_declare(ptr %data, !92, !DIExpression(), !93) + store ptr null, ptr %data, align 8, !dbg !94 + %call = call noalias ptr @malloc(i64 noundef 400) #7, !dbg !95 + store ptr %call, ptr %data, align 8, !dbg !96 + %0 = load ptr, ptr %data, align 8, !dbg !97 + %cmp = icmp eq ptr %0, null, !dbg !99 + br i1 %cmp, label %if.then, label %if.end, !dbg !99 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !102 - unreachable, !dbg !102 + call void @exit(i32 noundef -1) #8, !dbg !100 + unreachable, !dbg !100 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 + #dbg_declare(ptr %source, !102, !DIExpression(), !104) + call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 400, i1 false), !dbg !104 + %1 = load ptr, ptr %data, align 8, !dbg !105 + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !106 + call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 400, i1 false), !dbg !106 + %2 = load ptr, ptr %data, align 8, !dbg !107 + %call1 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !108 + %arraydecay2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !109 + %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 399), !dbg !110 + %3 = load ptr, ptr %data, align 8, !dbg !111 + %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !111 + %4 = load i32, ptr %arrayidx, align 4, !dbg !111 + call void @printIntLine(i32 noundef %4), !dbg !112 + %5 = load ptr, ptr %data, align 8, !dbg !113 + call void @free(ptr noundef %5) #9, !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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+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} @@ -160,7 +156,7 @@ attributes #10 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c", directory: "/root/testsss/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} @@ -180,8 +176,8 @@ attributes #10 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c", directory: "/root/testsss/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) @@ -195,7 +191,7 @@ attributes #10 = { nounwind } !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"} +!37 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -208,71 +204,69 @@ attributes #10 = { nounwind } !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) +!50 = !DILocation(line: 27, column: 24, scope: !51) +!51 = distinct !DILexicalBlock(scope: !48, file: !2, line: 27, column: 23) +!52 = !DILocalVariable(name: "source", scope: !53, file: !2, line: 29, type: !54) +!53 = distinct !DILexicalBlock(scope: !38, file: !2, line: 28, column: 5) +!54 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !55) +!55 = !{!56} +!56 = !DISubrange(count: 100) +!57 = !DILocation(line: 29, column: 13, scope: !53) +!58 = !DILocation(line: 31, column: 17, scope: !53) +!59 = !DILocation(line: 31, column: 9, scope: !53) +!60 = !DILocation(line: 32, column: 26, scope: !53) +!61 = !DILocation(line: 32, column: 9, scope: !53) +!62 = !DILocation(line: 33, column: 24, scope: !53) +!63 = !DILocation(line: 33, column: 9, scope: !53) +!64 = !DILocation(line: 34, column: 22, scope: !53) +!65 = !DILocation(line: 34, column: 9, scope: !53) +!66 = !DILocation(line: 35, column: 14, scope: !53) +!67 = !DILocation(line: 35, column: 9, scope: !53) +!68 = !DILocation(line: 37, column: 1, scope: !38) +!69 = 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) +!70 = !DILocation(line: 64, column: 5, scope: !69) +!71 = !DILocation(line: 65, column: 1, scope: !69) +!72 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 77, type: !73, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) +!73 = !DISubroutineType(types: !74) +!74 = !{!26, !26, !75} +!75 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !76, size: 64) +!76 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!77 = !DILocalVariable(name: "argc", arg: 1, scope: !72, file: !2, line: 77, type: !26) +!78 = !DILocation(line: 77, column: 14, scope: !72) +!79 = !DILocalVariable(name: "argv", arg: 2, scope: !72, file: !2, line: 77, type: !75) +!80 = !DILocation(line: 77, column: 27, scope: !72) +!81 = !DILocation(line: 80, column: 22, scope: !72) +!82 = !DILocation(line: 80, column: 12, scope: !72) +!83 = !DILocation(line: 80, column: 5, scope: !72) +!84 = !DILocation(line: 82, column: 5, scope: !72) +!85 = !DILocation(line: 83, column: 5, scope: !72) +!86 = !DILocation(line: 84, column: 5, scope: !72) +!87 = !DILocation(line: 87, column: 5, scope: !72) +!88 = !DILocation(line: 88, column: 5, scope: !72) +!89 = !DILocation(line: 89, column: 5, scope: !72) +!90 = !DILocation(line: 91, column: 5, scope: !72) +!91 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !39, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !41) +!92 = !DILocalVariable(name: "data", scope: !91, file: !2, line: 46, type: !25) +!93 = !DILocation(line: 46, column: 11, scope: !91) +!94 = !DILocation(line: 47, column: 10, scope: !91) +!95 = !DILocation(line: 49, column: 19, scope: !91) +!96 = !DILocation(line: 49, column: 10, scope: !91) +!97 = !DILocation(line: 50, column: 9, scope: !98) +!98 = distinct !DILexicalBlock(scope: !91, file: !2, line: 50, column: 9) +!99 = !DILocation(line: 50, column: 14, scope: !98) +!100 = !DILocation(line: 50, column: 24, scope: !101) +!101 = distinct !DILexicalBlock(scope: !98, file: !2, line: 50, column: 23) +!102 = !DILocalVariable(name: "source", scope: !103, file: !2, line: 52, type: !54) +!103 = distinct !DILexicalBlock(scope: !91, file: !2, line: 51, column: 5) +!104 = !DILocation(line: 52, column: 13, scope: !103) +!105 = !DILocation(line: 54, column: 17, scope: !103) +!106 = !DILocation(line: 54, column: 9, scope: !103) +!107 = !DILocation(line: 55, column: 24, scope: !103) +!108 = !DILocation(line: 55, column: 9, scope: !103) +!109 = !DILocation(line: 56, column: 24, scope: !103) +!110 = !DILocation(line: 56, column: 9, scope: !103) +!111 = !DILocation(line: 57, column: 22, scope: !103) +!112 = !DILocation(line: 57, column: 9, scope: !103) +!113 = !DILocation(line: 58, column: 14, scope: !103) +!114 = !DILocation(line: 58, column: 9, scope: !103) +!115 = !DILocation(line: 60, column: 1, scope: !91) 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 index 1c9249108..4644827cb 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct._twoIntsStruct = type { i32, i32 } @@ -16,193 +16,189 @@ 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 + #dbg_declare(ptr %data, !48, !DIExpression(), !49) store ptr null, ptr %data, align 8, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef 400) #7, !dbg !51 + %call = call noalias ptr @malloc(i64 noundef 400) #6, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !55 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !57 - unreachable, !dbg !57 + call void @exit(i32 noundef -1) #7, !dbg !56 + unreachable, !dbg !56 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 + #dbg_declare(ptr %source, !58, !DIExpression(), !63) + #dbg_declare(ptr %i, !64, !DIExpression(), !69) + store i64 0, ptr %i, align 8, !dbg !70 + br label %for.cond, !dbg !72 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 + %1 = load i64, ptr %i, align 8, !dbg !73 + %cmp1 = icmp ult i64 %1, 100, !dbg !75 + br i1 %cmp1, label %for.body, label %for.end, !dbg !76 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 + %2 = load i64, ptr %i, align 8, !dbg !77 + %arrayidx = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %2, !dbg !79 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !80 + store i32 0, ptr %intOne, align 8, !dbg !81 + %3 = load i64, ptr %i, align 8, !dbg !82 + %arrayidx2 = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %3, !dbg !83 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %arrayidx2, 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 - %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 + %4 = load i64, ptr %i, align 8, !dbg !87 + %inc = add i64 %4, 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 - %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 + %5 = load ptr, ptr %data, align 8, !dbg !92 + %arraydecay = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !93 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %5, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !93 + %6 = load ptr, ptr %data, align 8, !dbg !94 + %call3 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %6, i64 noundef 799), !dbg !95 + %arraydecay4 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !96 + %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef 799), !dbg !97 + %7 = load ptr, ptr %data, align 8, !dbg !98 + %arrayidx6 = getelementptr inbounds %struct._twoIntsStruct, ptr %7, i64 0, !dbg !98 + call void @printStructLine(ptr noundef %arrayidx6), !dbg !99 + %8 = load ptr, ptr %data, align 8, !dbg !100 + call void @free(ptr noundef %8) #8, !dbg !101 + ret void, !dbg !102 } -; 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 noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(i32 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) #4 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #4 -declare i32 @SAFE_BUFACCESS(...) #5 +declare i32 @SAFE_BUFACCESS(...) #4 -declare void @printStructLine(ptr noundef) #5 +declare void @printStructLine(ptr noundef) #4 ; Function Attrs: nounwind -declare void @free(ptr noundef) #6 +declare void @free(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_good() #0 !dbg !104 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_good() #0 !dbg !103 { entry: - call void @goodG2B(), !dbg !105 - ret void, !dbg !106 + call void @goodG2B(), !dbg !104 + ret void, !dbg !105 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !107 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !106 { 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 + #dbg_declare(ptr %argc.addr, !111, !DIExpression(), !112) 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 + #dbg_declare(ptr %argv.addr, !113, !DIExpression(), !114) + %call = call i64 @time(ptr noundef null) #8, !dbg !115 + %conv = trunc i64 %call to i32, !dbg !116 + call void @srand(i32 noundef %conv) #8, !dbg !117 + call void @printLine(ptr noundef @.str), !dbg !118 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_good(), !dbg !119 + call void @printLine(ptr noundef @.str.1), !dbg !120 + call void @printLine(ptr noundef @.str.2), !dbg !121 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_bad(), !dbg !122 + call void @printLine(ptr noundef @.str.3), !dbg !123 + ret i32 0, !dbg !124 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #6 +declare void @srand(i32 noundef) #5 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #6 +declare i64 @time(ptr noundef) #5 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !126 { +define internal void @goodG2B() #0 !dbg !125 { 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 + #dbg_declare(ptr %data, !126, !DIExpression(), !127) + store ptr null, ptr %data, align 8, !dbg !128 + %call = call noalias ptr @malloc(i64 noundef 800) #6, !dbg !129 + store ptr %call, ptr %data, align 8, !dbg !130 + %0 = load ptr, ptr %data, align 8, !dbg !131 + %cmp = icmp eq ptr %0, null, !dbg !133 + br i1 %cmp, label %if.then, label %if.end, !dbg !133 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !136 - unreachable, !dbg !136 + call void @exit(i32 noundef -1) #7, !dbg !134 + unreachable, !dbg !134 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 + #dbg_declare(ptr %source, !136, !DIExpression(), !138) + #dbg_declare(ptr %i, !139, !DIExpression(), !141) + store i64 0, ptr %i, align 8, !dbg !142 + br label %for.cond, !dbg !144 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 + %1 = load i64, ptr %i, align 8, !dbg !145 + %cmp1 = icmp ult i64 %1, 100, !dbg !147 + br i1 %cmp1, label %for.body, label %for.end, !dbg !148 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 + %2 = load i64, ptr %i, align 8, !dbg !149 + %arrayidx = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %2, !dbg !151 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !152 + store i32 0, ptr %intOne, align 8, !dbg !153 + %3 = load i64, ptr %i, align 8, !dbg !154 + %arrayidx2 = getelementptr inbounds nuw [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %3, !dbg !155 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %arrayidx2, i32 0, i32 1, !dbg !156 + store i32 0, ptr %intTwo, align 4, !dbg !157 + br label %for.inc, !dbg !158 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 + %4 = load i64, ptr %i, align 8, !dbg !159 + %inc = add i64 %4, 1, !dbg !159 + store i64 %inc, ptr %i, align 8, !dbg !159 + br label %for.cond, !dbg !160, !llvm.loop !161 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 + %5 = load ptr, ptr %data, align 8, !dbg !163 + %arraydecay = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !164 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %5, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !164 + %6 = load ptr, ptr %data, align 8, !dbg !165 + %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef 799), !dbg !166 + %arraydecay4 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !167 + %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef 799), !dbg !168 + %7 = load ptr, ptr %data, align 8, !dbg !169 + %arrayidx6 = getelementptr inbounds %struct._twoIntsStruct, ptr %7, i64 0, !dbg !169 + call void @printStructLine(ptr noundef %arrayidx6), !dbg !170 + %8 = load ptr, ptr %data, align 8, !dbg !171 + call void @free(ptr noundef %8) #8, !dbg !172 + ret void, !dbg !173 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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 = !{!36, !37, !38, !39, !40, !41, !42} @@ -210,7 +206,7 @@ attributes #9 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c", directory: "/root/testsss/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} @@ -230,12 +226,12 @@ attributes #9 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !35, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c", directory: "/root/testsss/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") +!27 = !DIFile(filename: "src/ae_overflow_tests/std_testcase.h", directory: "/root/testsss/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) @@ -251,7 +247,7 @@ attributes #9 = { nounwind } !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"} +!43 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -264,123 +260,121 @@ attributes #9 = { nounwind } !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) +!56 = !DILocation(line: 27, column: 24, scope: !57) +!57 = distinct !DILexicalBlock(scope: !54, file: !2, line: 27, column: 23) +!58 = !DILocalVariable(name: "source", scope: !59, file: !2, line: 29, type: !60) +!59 = distinct !DILexicalBlock(scope: !44, file: !2, line: 28, column: 5) +!60 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 6400, elements: !61) +!61 = !{!62} +!62 = !DISubrange(count: 100) +!63 = !DILocation(line: 29, column: 23, scope: !59) +!64 = !DILocalVariable(name: "i", scope: !65, file: !2, line: 31, type: !66) +!65 = distinct !DILexicalBlock(scope: !59, file: !2, line: 30, column: 9) +!66 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !67, line: 18, baseType: !68) +!67 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") +!68 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!69 = !DILocation(line: 31, column: 20, scope: !65) +!70 = !DILocation(line: 33, column: 20, scope: !71) +!71 = distinct !DILexicalBlock(scope: !65, file: !2, line: 33, column: 13) +!72 = !DILocation(line: 33, column: 18, scope: !71) +!73 = !DILocation(line: 33, column: 25, scope: !74) +!74 = distinct !DILexicalBlock(scope: !71, file: !2, line: 33, column: 13) +!75 = !DILocation(line: 33, column: 27, scope: !74) +!76 = !DILocation(line: 33, column: 13, scope: !71) +!77 = !DILocation(line: 35, column: 24, scope: !78) +!78 = distinct !DILexicalBlock(scope: !74, file: !2, line: 34, column: 13) +!79 = !DILocation(line: 35, column: 17, scope: !78) +!80 = !DILocation(line: 35, column: 27, scope: !78) +!81 = !DILocation(line: 35, column: 34, scope: !78) +!82 = !DILocation(line: 36, column: 24, scope: !78) +!83 = !DILocation(line: 36, column: 17, scope: !78) +!84 = !DILocation(line: 36, column: 27, scope: !78) +!85 = !DILocation(line: 36, column: 34, scope: !78) +!86 = !DILocation(line: 37, column: 13, scope: !78) +!87 = !DILocation(line: 33, column: 35, scope: !74) +!88 = !DILocation(line: 33, column: 13, scope: !74) +!89 = distinct !{!89, !76, !90, !91} +!90 = !DILocation(line: 37, column: 13, scope: !71) +!91 = !{!"llvm.loop.mustprogress"} +!92 = !DILocation(line: 40, column: 16, scope: !59) +!93 = !DILocation(line: 40, column: 9, scope: !59) +!94 = !DILocation(line: 41, column: 26, scope: !59) +!95 = !DILocation(line: 41, column: 9, scope: !59) +!96 = !DILocation(line: 42, column: 24, scope: !59) +!97 = !DILocation(line: 42, column: 9, scope: !59) +!98 = !DILocation(line: 43, column: 26, scope: !59) +!99 = !DILocation(line: 43, column: 9, scope: !59) +!100 = !DILocation(line: 44, column: 14, scope: !59) +!101 = !DILocation(line: 44, column: 9, scope: !59) +!102 = !DILocation(line: 46, column: 1, scope: !44) +!103 = 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) +!104 = !DILocation(line: 83, column: 5, scope: !103) +!105 = !DILocation(line: 84, column: 1, scope: !103) +!106 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 96, type: !107, scopeLine: 97, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !47) +!107 = !DISubroutineType(types: !108) +!108 = !{!31, !31, !109} +!109 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !110, size: 64) +!110 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!111 = !DILocalVariable(name: "argc", arg: 1, scope: !106, file: !2, line: 96, type: !31) +!112 = !DILocation(line: 96, column: 14, scope: !106) +!113 = !DILocalVariable(name: "argv", arg: 2, scope: !106, file: !2, line: 96, type: !109) +!114 = !DILocation(line: 96, column: 27, scope: !106) +!115 = !DILocation(line: 99, column: 22, scope: !106) +!116 = !DILocation(line: 99, column: 12, scope: !106) +!117 = !DILocation(line: 99, column: 5, scope: !106) +!118 = !DILocation(line: 101, column: 5, scope: !106) +!119 = !DILocation(line: 102, column: 5, scope: !106) +!120 = !DILocation(line: 103, column: 5, scope: !106) +!121 = !DILocation(line: 106, column: 5, scope: !106) +!122 = !DILocation(line: 107, column: 5, scope: !106) +!123 = !DILocation(line: 108, column: 5, scope: !106) +!124 = !DILocation(line: 110, column: 5, scope: !106) +!125 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !45, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !47) +!126 = !DILocalVariable(name: "data", scope: !125, file: !2, line: 55, type: !25) +!127 = !DILocation(line: 55, column: 21, scope: !125) +!128 = !DILocation(line: 56, column: 10, scope: !125) +!129 = !DILocation(line: 58, column: 29, scope: !125) +!130 = !DILocation(line: 58, column: 10, scope: !125) +!131 = !DILocation(line: 59, column: 9, scope: !132) +!132 = distinct !DILexicalBlock(scope: !125, file: !2, line: 59, column: 9) +!133 = !DILocation(line: 59, column: 14, scope: !132) +!134 = !DILocation(line: 59, column: 24, scope: !135) +!135 = distinct !DILexicalBlock(scope: !132, file: !2, line: 59, column: 23) +!136 = !DILocalVariable(name: "source", scope: !137, file: !2, line: 61, type: !60) +!137 = distinct !DILexicalBlock(scope: !125, file: !2, line: 60, column: 5) +!138 = !DILocation(line: 61, column: 23, scope: !137) +!139 = !DILocalVariable(name: "i", scope: !140, file: !2, line: 63, type: !66) +!140 = distinct !DILexicalBlock(scope: !137, file: !2, line: 62, column: 9) +!141 = !DILocation(line: 63, column: 20, scope: !140) +!142 = !DILocation(line: 65, column: 20, scope: !143) +!143 = distinct !DILexicalBlock(scope: !140, file: !2, line: 65, column: 13) +!144 = !DILocation(line: 65, column: 18, scope: !143) +!145 = !DILocation(line: 65, column: 25, scope: !146) +!146 = distinct !DILexicalBlock(scope: !143, file: !2, line: 65, column: 13) +!147 = !DILocation(line: 65, column: 27, scope: !146) +!148 = !DILocation(line: 65, column: 13, scope: !143) +!149 = !DILocation(line: 67, column: 24, scope: !150) +!150 = distinct !DILexicalBlock(scope: !146, file: !2, line: 66, column: 13) +!151 = !DILocation(line: 67, column: 17, scope: !150) +!152 = !DILocation(line: 67, column: 27, scope: !150) +!153 = !DILocation(line: 67, column: 34, scope: !150) +!154 = !DILocation(line: 68, column: 24, scope: !150) +!155 = !DILocation(line: 68, column: 17, scope: !150) +!156 = !DILocation(line: 68, column: 27, scope: !150) +!157 = !DILocation(line: 68, column: 34, scope: !150) +!158 = !DILocation(line: 69, column: 13, scope: !150) +!159 = !DILocation(line: 65, column: 35, scope: !146) +!160 = !DILocation(line: 65, column: 13, scope: !146) +!161 = distinct !{!161, !148, !162, !91} +!162 = !DILocation(line: 69, column: 13, scope: !143) +!163 = !DILocation(line: 72, column: 16, scope: !137) +!164 = !DILocation(line: 72, column: 9, scope: !137) +!165 = !DILocation(line: 73, column: 24, scope: !137) +!166 = !DILocation(line: 73, column: 9, scope: !137) +!167 = !DILocation(line: 74, column: 24, scope: !137) +!168 = !DILocation(line: 74, column: 9, scope: !137) +!169 = !DILocation(line: 76, column: 26, scope: !137) +!170 = !DILocation(line: 76, column: 9, scope: !137) +!171 = !DILocation(line: 77, column: 14, scope: !137) +!172 = !DILocation(line: 77, column: 9, scope: !137) +!173 = !DILocation(line: 79, column: 1, scope: !125) 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 index 84899fbf0..df3435f39 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,159 +13,155 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmo 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 + #dbg_declare(ptr %data, !44, !DIExpression(), !45) store ptr null, ptr %data, align 8, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef 200) #7, !dbg !47 + %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !51 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !53 - unreachable, !dbg !53 + call void @exit(i32 noundef -1) #7, !dbg !52 + unreachable, !dbg !52 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 + %1 = load ptr, ptr %data, align 8, !dbg !54 + %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !54 + store i32 0, ptr %arrayidx, align 4, !dbg !55 + #dbg_declare(ptr %source, !56, !DIExpression(), !61) + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !62 + %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #8, !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 + %2 = 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 %2, ptr align 16 %arraydecay3, i64 400, i1 false), !dbg !67 + %3 = load ptr, ptr %data, align 8, !dbg !68 + %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, 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 + %4 = load ptr, ptr %data, align 8, !dbg !72 + %arrayidx7 = getelementptr inbounds i32, ptr %4, i64 99, !dbg !72 + store i32 0, ptr %arrayidx7, align 4, !dbg !73 + %5 = load ptr, ptr %data, align 8, !dbg !74 + call void @printWLine(ptr noundef %5), !dbg !75 + %6 = load ptr, ptr %data, align 8, !dbg !76 + call void @free(ptr noundef %6) #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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(i32 noundef) #2 ; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 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) #5 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare i32 @SAFE_BUFACCESS(...) #6 +declare i32 @SAFE_BUFACCESS(...) #5 -declare void @printWLine(ptr noundef) #6 +declare void @printWLine(ptr noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 ; 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 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01_good() #0 !dbg !79 { entry: - call void @goodG2B(), !dbg !81 - ret void, !dbg !82 + 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 !83 { +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 !88, metadata !DIExpression()), !dbg !89 + #dbg_declare(ptr %argc.addr, !87, !DIExpression(), !88) 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 + #dbg_declare(ptr %argv.addr, !89, !DIExpression(), !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_CWE805_wchar_t_memmove_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_CWE805_wchar_t_memmove_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 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !102 { +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 !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 + #dbg_declare(ptr %data, !102, !DIExpression(), !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 !109 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !112 - unreachable, !dbg !112 + call void @exit(i32 noundef -1) #7, !dbg !110 + unreachable, !dbg !110 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 + %1 = load ptr, ptr %data, align 8, !dbg !112 + %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !112 + store i32 0, ptr %arrayidx, align 4, !dbg !113 + #dbg_declare(ptr %source, !114, !DIExpression(), !116) + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !117 + %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #8, !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 + %2 = load ptr, ptr %data, align 8, !dbg !121 + %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !122 + call void @llvm.memmove.p0.p0.i64(ptr align 4 %2, ptr align 16 %arraydecay3, i64 400, i1 false), !dbg !122 + %3 = load ptr, ptr %data, align 8, !dbg !123 + %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !124 + %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !125 + %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !126 + %4 = load ptr, ptr %data, align 8, !dbg !127 + %arrayidx7 = getelementptr inbounds i32, ptr %4, i64 99, !dbg !127 + store i32 0, ptr %arrayidx7, align 4, !dbg !128 + %5 = load ptr, ptr %data, align 8, !dbg !129 + call void @printWLine(ptr noundef %5), !dbg !130 + %6 = load ptr, ptr %data, align 8, !dbg !131 + call void @free(ptr noundef %6) #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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -173,7 +169,7 @@ attributes #9 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c", directory: "/root/testsss/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} @@ -193,12 +189,12 @@ attributes #9 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c", directory: "/root/testsss/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") +!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 24, baseType: !28) +!27 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -210,7 +206,7 @@ attributes #9 = { nounwind } !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"} +!39 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -223,87 +219,85 @@ attributes #9 = { nounwind } !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) +!52 = !DILocation(line: 29, column: 24, scope: !53) +!53 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 23) +!54 = !DILocation(line: 30, column: 5, scope: !40) +!55 = !DILocation(line: 30, column: 13, scope: !40) +!56 = !DILocalVariable(name: "source", scope: !57, file: !2, line: 32, type: !58) +!57 = distinct !DILexicalBlock(scope: !40, file: !2, line: 31, column: 5) +!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !59) +!59 = !{!60} +!60 = !DISubrange(count: 100) +!61 = !DILocation(line: 32, column: 17, scope: !57) +!62 = !DILocation(line: 33, column: 17, scope: !57) +!63 = !DILocation(line: 33, column: 9, scope: !57) +!64 = !DILocation(line: 34, column: 9, scope: !57) +!65 = !DILocation(line: 34, column: 23, scope: !57) +!66 = !DILocation(line: 36, column: 17, scope: !57) +!67 = !DILocation(line: 36, column: 9, scope: !57) +!68 = !DILocation(line: 37, column: 26, scope: !57) +!69 = !DILocation(line: 37, column: 9, scope: !57) +!70 = !DILocation(line: 38, column: 24, scope: !57) +!71 = !DILocation(line: 38, column: 9, scope: !57) +!72 = !DILocation(line: 40, column: 9, scope: !57) +!73 = !DILocation(line: 40, column: 21, scope: !57) +!74 = !DILocation(line: 41, column: 20, scope: !57) +!75 = !DILocation(line: 41, column: 9, scope: !57) +!76 = !DILocation(line: 42, column: 14, scope: !57) +!77 = !DILocation(line: 42, column: 9, scope: !57) +!78 = !DILocation(line: 44, column: 1, scope: !40) +!79 = 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) +!80 = !DILocation(line: 75, column: 5, scope: !79) +!81 = !DILocation(line: 76, column: 1, scope: !79) +!82 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 88, type: !83, scopeLine: 89, 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: 88, type: !28) +!88 = !DILocation(line: 88, column: 14, scope: !82) +!89 = !DILocalVariable(name: "argv", arg: 2, scope: !82, file: !2, line: 88, type: !85) +!90 = !DILocation(line: 88, column: 27, scope: !82) +!91 = !DILocation(line: 91, column: 22, scope: !82) +!92 = !DILocation(line: 91, column: 12, scope: !82) +!93 = !DILocation(line: 91, column: 5, scope: !82) +!94 = !DILocation(line: 93, column: 5, scope: !82) +!95 = !DILocation(line: 94, column: 5, scope: !82) +!96 = !DILocation(line: 95, column: 5, scope: !82) +!97 = !DILocation(line: 98, column: 5, scope: !82) +!98 = !DILocation(line: 99, column: 5, scope: !82) +!99 = !DILocation(line: 100, column: 5, scope: !82) +!100 = !DILocation(line: 102, column: 5, scope: !82) +!101 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 51, type: !41, scopeLine: 52, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) +!102 = !DILocalVariable(name: "data", scope: !101, file: !2, line: 53, type: !25) +!103 = !DILocation(line: 53, column: 15, scope: !101) +!104 = !DILocation(line: 54, column: 10, scope: !101) +!105 = !DILocation(line: 56, column: 23, scope: !101) +!106 = !DILocation(line: 56, column: 10, scope: !101) +!107 = !DILocation(line: 57, column: 9, scope: !108) +!108 = distinct !DILexicalBlock(scope: !101, file: !2, line: 57, column: 9) +!109 = !DILocation(line: 57, column: 14, scope: !108) +!110 = !DILocation(line: 57, column: 24, scope: !111) +!111 = distinct !DILexicalBlock(scope: !108, file: !2, line: 57, column: 23) +!112 = !DILocation(line: 58, column: 5, scope: !101) +!113 = !DILocation(line: 58, column: 13, scope: !101) +!114 = !DILocalVariable(name: "source", scope: !115, file: !2, line: 60, type: !58) +!115 = distinct !DILexicalBlock(scope: !101, file: !2, line: 59, column: 5) +!116 = !DILocation(line: 60, column: 17, scope: !115) +!117 = !DILocation(line: 61, column: 17, scope: !115) +!118 = !DILocation(line: 61, column: 9, scope: !115) +!119 = !DILocation(line: 62, column: 9, scope: !115) +!120 = !DILocation(line: 62, column: 23, scope: !115) +!121 = !DILocation(line: 64, column: 17, scope: !115) +!122 = !DILocation(line: 64, column: 9, scope: !115) +!123 = !DILocation(line: 65, column: 24, scope: !115) +!124 = !DILocation(line: 65, column: 9, scope: !115) +!125 = !DILocation(line: 66, column: 24, scope: !115) +!126 = !DILocation(line: 66, column: 9, scope: !115) +!127 = !DILocation(line: 67, column: 9, scope: !115) +!128 = !DILocation(line: 67, column: 21, scope: !115) +!129 = !DILocation(line: 68, column: 20, scope: !115) +!130 = !DILocation(line: 68, column: 9, scope: !115) +!131 = !DILocation(line: 69, column: 14, scope: !115) +!132 = !DILocation(line: 69, column: 9, scope: !115) +!133 = !DILocation(line: 71, column: 1, scope: !101) 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 index ed9e02bf3..c60269637 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -14,152 +14,148 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snpri 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 + #dbg_declare(ptr %data, !49, !DIExpression(), !50) store ptr null, ptr %data, align 8, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef 200) #6, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef 200) #5, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !56 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #7, !dbg !58 - unreachable, !dbg !58 + call void @exit(i32 noundef -1) #6, !dbg !57 + unreachable, !dbg !57 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 + %1 = load ptr, ptr %data, align 8, !dbg !59 + %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !59 + store i32 0, ptr %arrayidx, align 4, !dbg !60 + #dbg_declare(ptr %source, !61, !DIExpression(), !66) + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !67 + %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #7, !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 + %2 = 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 %2, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay3) #7, !dbg !73 + %3 = load ptr, ptr %data, align 8, !dbg !74 + %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, 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 + %4 = load ptr, ptr %data, align 8, !dbg !78 + call void @printWLine(ptr noundef %4), !dbg !79 + %5 = load ptr, ptr %data, align 8, !dbg !80 + call void @free(ptr noundef %5) #7, !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: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(i32 noundef) #2 ; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #3 ; Function Attrs: nounwind -declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #4 +declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #3 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #4 -declare i32 @SAFE_BUFACCESS(...) #5 +declare i32 @SAFE_BUFACCESS(...) #4 -declare void @printWLine(ptr noundef) #5 +declare void @printWLine(ptr noundef) #4 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 ; 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 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_good() #0 !dbg !83 { entry: - call void @goodG2B(), !dbg !85 - ret void, !dbg !86 + 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 !87 { +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 !92, metadata !DIExpression()), !dbg !93 + #dbg_declare(ptr %argc.addr, !91, !DIExpression(), !92) 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 + #dbg_declare(ptr %argv.addr, !93, !DIExpression(), !94) + %call = call i64 @time(ptr noundef null) #7, !dbg !95 + %conv = trunc i64 %call to i32, !dbg !96 + call void @srand(i32 noundef %conv) #7, !dbg !97 + call void @printLine(ptr noundef @.str.1), !dbg !98 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_good(), !dbg !99 + call void @printLine(ptr noundef @.str.2), !dbg !100 + call void @printLine(ptr noundef @.str.3), !dbg !101 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_bad(), !dbg !102 + call void @printLine(ptr noundef @.str.4), !dbg !103 + ret i32 0, !dbg !104 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !106 { +define internal void @goodG2B() #0 !dbg !105 { 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 + #dbg_declare(ptr %data, !106, !DIExpression(), !107) + store ptr null, ptr %data, align 8, !dbg !108 + %call = call noalias ptr @malloc(i64 noundef 400) #5, !dbg !109 + store ptr %call, ptr %data, align 8, !dbg !110 + %0 = load ptr, ptr %data, align 8, !dbg !111 + %cmp = icmp eq ptr %0, null, !dbg !113 + br i1 %cmp, label %if.then, label %if.end, !dbg !113 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #7, !dbg !116 - unreachable, !dbg !116 + call void @exit(i32 noundef -1) #6, !dbg !114 + unreachable, !dbg !114 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 + %1 = load ptr, ptr %data, align 8, !dbg !116 + %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !116 + store i32 0, ptr %arrayidx, align 4, !dbg !117 + #dbg_declare(ptr %source, !118, !DIExpression(), !120) + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !121 + %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #7, !dbg !122 + %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !123 + store i32 0, ptr %arrayidx2, align 4, !dbg !124 + %2 = load ptr, ptr %data, align 8, !dbg !125 + %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !126 + %call4 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %2, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay3) #7, !dbg !127 + %3 = load ptr, ptr %data, align 8, !dbg !128 + %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !129 + %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !130 + %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !131 + %4 = load ptr, ptr %data, align 8, !dbg !132 + call void @printWLine(ptr noundef %4), !dbg !133 + %5 = load ptr, ptr %data, align 8, !dbg !134 + call void @free(ptr noundef %5) #7, !dbg !135 + ret void, !dbg !136 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind allocsize(0) } +attributes #6 = { noreturn nounwind } +attributes #7 = { nounwind } !llvm.dbg.cu = !{!28} !llvm.module.flags = !{!37, !38, !39, !40, !41, !42, !43} @@ -167,7 +163,7 @@ attributes #8 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c", directory: "/root/testsss/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} @@ -193,12 +189,12 @@ attributes #8 = { nounwind } !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") +!28 = distinct !DICompileUnit(language: DW_LANG_C11, file: !29, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !36, splitDebugInlining: false, nameTableKind: None) +!29 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c", directory: "/root/testsss/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") +!32 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !33, line: 24, baseType: !4) +!33 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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} @@ -209,7 +205,7 @@ attributes #8 = { nounwind } !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"} +!44 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -222,85 +218,83 @@ attributes #8 = { nounwind } !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) +!57 = !DILocation(line: 35, column: 24, scope: !58) +!58 = distinct !DILexicalBlock(scope: !55, file: !2, line: 35, column: 23) +!59 = !DILocation(line: 36, column: 5, scope: !45) +!60 = !DILocation(line: 36, column: 13, scope: !45) +!61 = !DILocalVariable(name: "source", scope: !62, file: !2, line: 38, type: !63) +!62 = distinct !DILexicalBlock(scope: !45, file: !2, line: 37, column: 5) +!63 = !DICompositeType(tag: DW_TAG_array_type, baseType: !32, size: 3200, elements: !64) +!64 = !{!65} +!65 = !DISubrange(count: 100) +!66 = !DILocation(line: 38, column: 17, scope: !62) +!67 = !DILocation(line: 39, column: 17, scope: !62) +!68 = !DILocation(line: 39, column: 9, scope: !62) +!69 = !DILocation(line: 40, column: 9, scope: !62) +!70 = !DILocation(line: 40, column: 23, scope: !62) +!71 = !DILocation(line: 42, column: 18, scope: !62) +!72 = !DILocation(line: 42, column: 36, scope: !62) +!73 = !DILocation(line: 42, column: 9, scope: !62) +!74 = !DILocation(line: 43, column: 26, scope: !62) +!75 = !DILocation(line: 43, column: 9, scope: !62) +!76 = !DILocation(line: 44, column: 24, scope: !62) +!77 = !DILocation(line: 44, column: 9, scope: !62) +!78 = !DILocation(line: 45, column: 20, scope: !62) +!79 = !DILocation(line: 45, column: 9, scope: !62) +!80 = !DILocation(line: 46, column: 14, scope: !62) +!81 = !DILocation(line: 46, column: 9, scope: !62) +!82 = !DILocation(line: 48, column: 1, scope: !45) +!83 = 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) +!84 = !DILocation(line: 78, column: 5, scope: !83) +!85 = !DILocation(line: 79, column: 1, scope: !83) +!86 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 91, type: !87, scopeLine: 92, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !48) +!87 = !DISubroutineType(types: !88) +!88 = !{!4, !4, !89} +!89 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !90, size: 64) +!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64) +!91 = !DILocalVariable(name: "argc", arg: 1, scope: !86, file: !2, line: 91, type: !4) +!92 = !DILocation(line: 91, column: 14, scope: !86) +!93 = !DILocalVariable(name: "argv", arg: 2, scope: !86, file: !2, line: 91, type: !89) +!94 = !DILocation(line: 91, column: 27, scope: !86) +!95 = !DILocation(line: 94, column: 22, scope: !86) +!96 = !DILocation(line: 94, column: 12, scope: !86) +!97 = !DILocation(line: 94, column: 5, scope: !86) +!98 = !DILocation(line: 96, column: 5, scope: !86) +!99 = !DILocation(line: 97, column: 5, scope: !86) +!100 = !DILocation(line: 98, column: 5, scope: !86) +!101 = !DILocation(line: 101, column: 5, scope: !86) +!102 = !DILocation(line: 102, column: 5, scope: !86) +!103 = !DILocation(line: 103, column: 5, scope: !86) +!104 = !DILocation(line: 105, column: 5, scope: !86) +!105 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 55, type: !46, scopeLine: 56, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !28, retainedNodes: !48) +!106 = !DILocalVariable(name: "data", scope: !105, file: !2, line: 57, type: !31) +!107 = !DILocation(line: 57, column: 15, scope: !105) +!108 = !DILocation(line: 58, column: 10, scope: !105) +!109 = !DILocation(line: 60, column: 23, scope: !105) +!110 = !DILocation(line: 60, column: 10, scope: !105) +!111 = !DILocation(line: 61, column: 9, scope: !112) +!112 = distinct !DILexicalBlock(scope: !105, file: !2, line: 61, column: 9) +!113 = !DILocation(line: 61, column: 14, scope: !112) +!114 = !DILocation(line: 61, column: 24, scope: !115) +!115 = distinct !DILexicalBlock(scope: !112, file: !2, line: 61, column: 23) +!116 = !DILocation(line: 62, column: 5, scope: !105) +!117 = !DILocation(line: 62, column: 13, scope: !105) +!118 = !DILocalVariable(name: "source", scope: !119, file: !2, line: 64, type: !63) +!119 = distinct !DILexicalBlock(scope: !105, file: !2, line: 63, column: 5) +!120 = !DILocation(line: 64, column: 17, scope: !119) +!121 = !DILocation(line: 65, column: 17, scope: !119) +!122 = !DILocation(line: 65, column: 9, scope: !119) +!123 = !DILocation(line: 66, column: 9, scope: !119) +!124 = !DILocation(line: 66, column: 23, scope: !119) +!125 = !DILocation(line: 68, column: 18, scope: !119) +!126 = !DILocation(line: 68, column: 36, scope: !119) +!127 = !DILocation(line: 68, column: 9, scope: !119) +!128 = !DILocation(line: 69, column: 24, scope: !119) +!129 = !DILocation(line: 69, column: 9, scope: !119) +!130 = !DILocation(line: 70, column: 24, scope: !119) +!131 = !DILocation(line: 70, column: 9, scope: !119) +!132 = !DILocation(line: 71, column: 20, scope: !119) +!133 = !DILocation(line: 71, column: 9, scope: !119) +!134 = !DILocation(line: 72, column: 14, scope: !119) +!135 = !DILocation(line: 72, column: 9, scope: !119) +!136 = !DILocation(line: 74, column: 1, scope: !105) 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 index d695b3871..a680057eb 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,179 +13,175 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_ 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 + #dbg_declare(ptr %data, !41, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !47 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !49 - unreachable, !dbg !49 + call void @exit(i32 noundef -1) #9, !dbg !48 + unreachable, !dbg !48 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 + %1 = load ptr, ptr %data, align 8, !dbg !50 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 99, i1 false), !dbg !51 + %2 = load ptr, ptr %data, align 8, !dbg !52 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 99, !dbg !52 + store i8 0, ptr %arrayidx, align 1, !dbg !53 + #dbg_declare(ptr %dest, !54, !DIExpression(), !59) + call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !59 + %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !60 + %3 = load ptr, ptr %data, align 8, !dbg !61 + %4 = load ptr, ptr %data, align 8, !dbg !62 + %call1 = call i64 @strlen(ptr noundef %4) #10, !dbg !63 + %mul = mul i64 %call1, 1, !dbg !64 + call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay, ptr align 1 %3, i64 %mul, i1 false), !dbg !60 + %arraydecay2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !65 + %5 = load ptr, ptr %data, align 8, !dbg !66 + %call3 = call i64 @strlen(ptr noundef %5) #10, !dbg !67 + %mul4 = mul i64 %call3, 1, !dbg !68 + %sub = sub i64 %mul4, 1, !dbg !69 + %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !70 + %6 = load ptr, ptr %data, align 8, !dbg !71 + %7 = load ptr, ptr %data, align 8, !dbg !72 + %call6 = call i64 @strlen(ptr noundef %7) #10, !dbg !73 + %mul7 = mul i64 %call6, 1, !dbg !74 + %sub8 = sub i64 %mul7, 1, !dbg !75 + %call9 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub8), !dbg !76 + %arrayidx10 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 49, !dbg !77 + store i8 0, ptr %arrayidx10, align 1, !dbg !78 + %8 = load ptr, ptr %data, align 8, !dbg !79 + call void @printLine(ptr noundef %8), !dbg !80 + %9 = load ptr, ptr %data, align 8, !dbg !81 + call void @free(ptr noundef %9) #11, !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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #5 +declare i64 @strlen(ptr 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) #6 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #5 -declare i32 @UNSAFE_BUFACCESS(...) #7 +declare i32 @UNSAFE_BUFACCESS(...) #6 -declare i32 @SAFE_BUFACCESS(...) #7 +declare i32 @SAFE_BUFACCESS(...) #6 -declare void @printLine(ptr noundef) #7 +declare void @printLine(ptr noundef) #6 ; Function Attrs: nounwind -declare void @free(ptr noundef) #8 +declare void @free(ptr noundef) #7 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_good() #0 !dbg !85 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_good() #0 !dbg !84 { entry: - call void @goodG2B(), !dbg !86 - ret void, !dbg !87 + 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 !88 { +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 !93, metadata !DIExpression()), !dbg !94 + #dbg_declare(ptr %argc.addr, !92, !DIExpression(), !93) 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 + #dbg_declare(ptr %argv.addr, !94, !DIExpression(), !95) + %call = call i64 @time(ptr noundef null) #11, !dbg !96 + %conv = trunc i64 %call to i32, !dbg !97 + call void @srand(i32 noundef %conv) #11, !dbg !98 + call void @printLine(ptr noundef @.str), !dbg !99 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_good(), !dbg !100 + call void @printLine(ptr noundef @.str.1), !dbg !101 + call void @printLine(ptr noundef @.str.2), !dbg !102 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_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) #8 +declare void @srand(i32 noundef) #7 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #8 +declare i64 @time(ptr noundef) #7 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !107 { +define internal void @goodG2B() #0 !dbg !106 { 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 + #dbg_declare(ptr %data, !107, !DIExpression(), !108) + %call = call noalias ptr @malloc(i64 noundef 100) #8, !dbg !109 + store ptr %call, ptr %data, align 8, !dbg !110 + %0 = load ptr, ptr %data, align 8, !dbg !111 + %cmp = icmp eq ptr %0, null, !dbg !113 + br i1 %cmp, label %if.then, label %if.end, !dbg !113 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !116 - unreachable, !dbg !116 + call void @exit(i32 noundef -1) #9, !dbg !114 + unreachable, !dbg !114 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 + %1 = load ptr, ptr %data, align 8, !dbg !116 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 49, i1 false), !dbg !117 + %2 = load ptr, ptr %data, align 8, !dbg !118 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 49, !dbg !118 + store i8 0, ptr %arrayidx, align 1, !dbg !119 + #dbg_declare(ptr %dest, !120, !DIExpression(), !122) + call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !122 + %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !123 + %3 = load ptr, ptr %data, align 8, !dbg !124 + %4 = load ptr, ptr %data, align 8, !dbg !125 + %call1 = call i64 @strlen(ptr noundef %4) #10, !dbg !126 + %mul = mul i64 %call1, 1, !dbg !127 + call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay, ptr align 1 %3, i64 %mul, i1 false), !dbg !123 + %arraydecay2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !128 + %5 = load ptr, ptr %data, align 8, !dbg !129 + %call3 = call i64 @strlen(ptr noundef %5) #10, !dbg !130 + %mul4 = mul i64 %call3, 1, !dbg !131 + %sub = sub i64 %mul4, 1, !dbg !132 + %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !133 + %6 = load ptr, ptr %data, align 8, !dbg !134 + %7 = load ptr, ptr %data, align 8, !dbg !135 + %call6 = call i64 @strlen(ptr noundef %7) #10, !dbg !136 + %mul7 = mul i64 %call6, 1, !dbg !137 + %sub8 = sub i64 %mul7, 1, !dbg !138 + %call9 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub8), !dbg !139 + %arrayidx10 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 49, !dbg !140 + store i8 0, ptr %arrayidx10, align 1, !dbg !141 + %8 = load ptr, ptr %data, align 8, !dbg !142 + call void @printLine(ptr noundef %8), !dbg !143 + %9 = load ptr, ptr %data, align 8, !dbg !144 + call void @free(ptr noundef %9) #11, !dbg !145 + ret void, !dbg !146 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -193,7 +189,7 @@ attributes #12 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c", directory: "/root/testsss/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} @@ -213,8 +209,8 @@ attributes #12 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c", directory: "/root/testsss/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) @@ -227,7 +223,7 @@ attributes #12 = { nounwind } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -239,104 +235,102 @@ attributes #12 = { nounwind } !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) +!48 = !DILocation(line: 27, column: 24, scope: !49) +!49 = distinct !DILexicalBlock(scope: !46, file: !2, line: 27, column: 23) +!50 = !DILocation(line: 29, column: 12, scope: !37) +!51 = !DILocation(line: 29, column: 5, scope: !37) +!52 = !DILocation(line: 30, column: 5, scope: !37) +!53 = !DILocation(line: 30, column: 17, scope: !37) +!54 = !DILocalVariable(name: "dest", 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: 400, elements: !57) +!57 = !{!58} +!58 = !DISubrange(count: 50) +!59 = !DILocation(line: 32, column: 14, scope: !55) +!60 = !DILocation(line: 34, column: 9, scope: !55) +!61 = !DILocation(line: 34, column: 23, scope: !55) +!62 = !DILocation(line: 34, column: 36, scope: !55) +!63 = !DILocation(line: 34, column: 29, scope: !55) +!64 = !DILocation(line: 34, column: 41, scope: !55) +!65 = !DILocation(line: 35, column: 26, scope: !55) +!66 = !DILocation(line: 35, column: 39, scope: !55) +!67 = !DILocation(line: 35, column: 32, scope: !55) +!68 = !DILocation(line: 35, column: 45, scope: !55) +!69 = !DILocation(line: 35, column: 60, scope: !55) +!70 = !DILocation(line: 35, column: 9, scope: !55) +!71 = !DILocation(line: 36, column: 24, scope: !55) +!72 = !DILocation(line: 36, column: 37, scope: !55) +!73 = !DILocation(line: 36, column: 30, scope: !55) +!74 = !DILocation(line: 36, column: 43, scope: !55) +!75 = !DILocation(line: 36, column: 58, scope: !55) +!76 = !DILocation(line: 36, column: 9, scope: !55) +!77 = !DILocation(line: 38, column: 9, scope: !55) +!78 = !DILocation(line: 38, column: 20, scope: !55) +!79 = !DILocation(line: 39, column: 19, scope: !55) +!80 = !DILocation(line: 39, column: 9, scope: !55) +!81 = !DILocation(line: 40, column: 14, scope: !55) +!82 = !DILocation(line: 40, column: 9, scope: !55) +!83 = !DILocation(line: 42, column: 1, scope: !37) +!84 = 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) +!85 = !DILocation(line: 71, column: 5, scope: !84) +!86 = !DILocation(line: 72, column: 1, scope: !84) +!87 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 84, type: !88, scopeLine: 85, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) +!88 = !DISubroutineType(types: !89) +!89 = !{!90, !90, !91} +!90 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!91 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) +!92 = !DILocalVariable(name: "argc", arg: 1, scope: !87, file: !2, line: 84, type: !90) +!93 = !DILocation(line: 84, column: 14, scope: !87) +!94 = !DILocalVariable(name: "argv", arg: 2, scope: !87, file: !2, line: 84, type: !91) +!95 = !DILocation(line: 84, column: 27, scope: !87) +!96 = !DILocation(line: 87, column: 22, scope: !87) +!97 = !DILocation(line: 87, column: 12, scope: !87) +!98 = !DILocation(line: 87, column: 5, scope: !87) +!99 = !DILocation(line: 89, column: 5, scope: !87) +!100 = !DILocation(line: 90, column: 5, scope: !87) +!101 = !DILocation(line: 91, column: 5, scope: !87) +!102 = !DILocation(line: 94, column: 5, scope: !87) +!103 = !DILocation(line: 95, column: 5, scope: !87) +!104 = !DILocation(line: 96, column: 5, scope: !87) +!105 = !DILocation(line: 98, column: 5, scope: !87) +!106 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 49, type: !38, scopeLine: 50, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) +!107 = !DILocalVariable(name: "data", scope: !106, file: !2, line: 51, type: !25) +!108 = !DILocation(line: 51, column: 12, scope: !106) +!109 = !DILocation(line: 52, column: 20, scope: !106) +!110 = !DILocation(line: 52, column: 10, scope: !106) +!111 = !DILocation(line: 53, column: 9, scope: !112) +!112 = distinct !DILexicalBlock(scope: !106, file: !2, line: 53, column: 9) +!113 = !DILocation(line: 53, column: 14, scope: !112) +!114 = !DILocation(line: 53, column: 24, scope: !115) +!115 = distinct !DILexicalBlock(scope: !112, file: !2, line: 53, column: 23) +!116 = !DILocation(line: 55, column: 12, scope: !106) +!117 = !DILocation(line: 55, column: 5, scope: !106) +!118 = !DILocation(line: 56, column: 5, scope: !106) +!119 = !DILocation(line: 56, column: 16, scope: !106) +!120 = !DILocalVariable(name: "dest", scope: !121, file: !2, line: 58, type: !56) +!121 = distinct !DILexicalBlock(scope: !106, file: !2, line: 57, column: 5) +!122 = !DILocation(line: 58, column: 14, scope: !121) +!123 = !DILocation(line: 60, column: 9, scope: !121) +!124 = !DILocation(line: 60, column: 23, scope: !121) +!125 = !DILocation(line: 60, column: 36, scope: !121) +!126 = !DILocation(line: 60, column: 29, scope: !121) +!127 = !DILocation(line: 60, column: 41, scope: !121) +!128 = !DILocation(line: 61, column: 24, scope: !121) +!129 = !DILocation(line: 61, column: 37, scope: !121) +!130 = !DILocation(line: 61, column: 30, scope: !121) +!131 = !DILocation(line: 61, column: 43, scope: !121) +!132 = !DILocation(line: 61, column: 58, scope: !121) +!133 = !DILocation(line: 61, column: 9, scope: !121) +!134 = !DILocation(line: 62, column: 24, scope: !121) +!135 = !DILocation(line: 62, column: 37, scope: !121) +!136 = !DILocation(line: 62, column: 30, scope: !121) +!137 = !DILocation(line: 62, column: 43, scope: !121) +!138 = !DILocation(line: 62, column: 58, scope: !121) +!139 = !DILocation(line: 62, column: 9, scope: !121) +!140 = !DILocation(line: 63, column: 9, scope: !121) +!141 = !DILocation(line: 63, column: 20, scope: !121) +!142 = !DILocation(line: 64, column: 19, scope: !121) +!143 = !DILocation(line: 64, column: 9, scope: !121) +!144 = !DILocation(line: 65, column: 14, scope: !121) +!145 = !DILocation(line: 65, column: 9, scope: !121) +!146 = !DILocation(line: 67, column: 1, scope: !106) 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 index 64c8bed6c..d385ec58b 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,184 +13,180 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmo 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 + #dbg_declare(ptr %data, !44, !DIExpression(), !45) + %call = call noalias ptr @malloc(i64 noundef 400) #8, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !50 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !52 - unreachable, !dbg !52 + call void @exit(i32 noundef -1) #9, !dbg !51 + unreachable, !dbg !51 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 + %1 = load ptr, ptr %data, align 8, !dbg !53 + %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 99) #10, !dbg !54 + %2 = load ptr, ptr %data, align 8, !dbg !55 + %arrayidx = getelementptr inbounds i32, ptr %2, i64 99, !dbg !55 + store i32 0, ptr %arrayidx, align 4, !dbg !56 + #dbg_declare(ptr %dest, !57, !DIExpression(), !62) + call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 200, i1 false), !dbg !62 + %arraydecay = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !63 + %3 = load ptr, ptr %data, align 8, !dbg !64 + %4 = load ptr, ptr %data, align 8, !dbg !65 + %call2 = call i64 @wcslen(ptr noundef %4) #11, !dbg !66 + %mul = mul i64 %call2, 4, !dbg !67 + call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay, ptr align 4 %3, i64 %mul, i1 false), !dbg !63 + %arraydecay3 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !68 + %5 = load ptr, ptr %data, align 8, !dbg !69 + %call4 = call i64 @wcslen(ptr noundef %5) #11, !dbg !70 + %mul5 = mul i64 %call4, 4, !dbg !71 + %sub = sub i64 %mul5, 1, !dbg !72 + %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !73 + %6 = load ptr, ptr %data, align 8, !dbg !74 + %7 = load ptr, ptr %data, align 8, !dbg !75 + %call7 = call i64 @wcslen(ptr noundef %7) #11, !dbg !76 + %mul8 = mul i64 %call7, 4, !dbg !77 + %sub9 = sub i64 %mul8, 1, !dbg !78 + %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub9), !dbg !79 + %arrayidx11 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 49, !dbg !80 + store i32 0, ptr %arrayidx11, align 4, !dbg !81 + %8 = load ptr, ptr %data, align 8, !dbg !82 + call void @printWLine(ptr noundef %8), !dbg !83 + %9 = load ptr, ptr %data, align 8, !dbg !84 + call void @free(ptr noundef %9) #10, !dbg !85 + ret void, !dbg !86 } -; 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 noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(i32 noundef) #2 ; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #3 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #6 +declare i64 @wcslen(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) #7 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #6 -declare i32 @UNSAFE_BUFACCESS(...) #8 +declare i32 @UNSAFE_BUFACCESS(...) #7 -declare i32 @SAFE_BUFACCESS(...) #8 +declare i32 @SAFE_BUFACCESS(...) #7 -declare void @printWLine(ptr noundef) #8 +declare void @printWLine(ptr noundef) #7 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 ; 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 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_good() #0 !dbg !87 { entry: - call void @goodG2B(), !dbg !89 - ret void, !dbg !90 + call void @goodG2B(), !dbg !88 + ret void, !dbg !89 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !91 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !90 { 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 + #dbg_declare(ptr %argc.addr, !95, !DIExpression(), !96) 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 + #dbg_declare(ptr %argv.addr, !97, !DIExpression(), !98) + %call = call i64 @time(ptr noundef null) #10, !dbg !99 + %conv = trunc i64 %call to i32, !dbg !100 + call void @srand(i32 noundef %conv) #10, !dbg !101 + call void @printLine(ptr noundef @.str), !dbg !102 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_good(), !dbg !103 + call void @printLine(ptr noundef @.str.1), !dbg !104 + call void @printLine(ptr noundef @.str.2), !dbg !105 + call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_bad(), !dbg !106 + call void @printLine(ptr noundef @.str.3), !dbg !107 + ret i32 0, !dbg !108 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #8 +declare void @printLine(ptr noundef) #7 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !110 { +define internal void @goodG2B() #0 !dbg !109 { 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 + #dbg_declare(ptr %data, !110, !DIExpression(), !111) + %call = call noalias ptr @malloc(i64 noundef 400) #8, !dbg !112 + store ptr %call, ptr %data, align 8, !dbg !113 + %0 = load ptr, ptr %data, align 8, !dbg !114 + %cmp = icmp eq ptr %0, null, !dbg !116 + br i1 %cmp, label %if.then, label %if.end, !dbg !116 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !119 - unreachable, !dbg !119 + call void @exit(i32 noundef -1) #9, !dbg !117 + unreachable, !dbg !117 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 + %1 = load ptr, ptr %data, align 8, !dbg !119 + %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 49) #10, !dbg !120 + %2 = load ptr, ptr %data, align 8, !dbg !121 + %arrayidx = getelementptr inbounds i32, ptr %2, i64 49, !dbg !121 + store i32 0, ptr %arrayidx, align 4, !dbg !122 + #dbg_declare(ptr %dest, !123, !DIExpression(), !125) + call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 200, i1 false), !dbg !125 + %arraydecay = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !126 + %3 = load ptr, ptr %data, align 8, !dbg !127 + %4 = load ptr, ptr %data, align 8, !dbg !128 + %call2 = call i64 @wcslen(ptr noundef %4) #11, !dbg !129 + %mul = mul i64 %call2, 4, !dbg !130 + call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay, ptr align 4 %3, i64 %mul, i1 false), !dbg !126 + %arraydecay3 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !131 + %5 = load ptr, ptr %data, align 8, !dbg !132 + %call4 = call i64 @wcslen(ptr noundef %5) #11, !dbg !133 + %mul5 = mul i64 %call4, 4, !dbg !134 + %sub = sub i64 %mul5, 1, !dbg !135 + %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !136 + %6 = load ptr, ptr %data, align 8, !dbg !137 + %7 = load ptr, ptr %data, align 8, !dbg !138 + %call7 = call i64 @wcslen(ptr noundef %7) #11, !dbg !139 + %mul8 = mul i64 %call7, 4, !dbg !140 + %sub9 = sub i64 %mul8, 1, !dbg !141 + %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub9), !dbg !142 + %arrayidx11 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 49, !dbg !143 + store i32 0, ptr %arrayidx11, align 4, !dbg !144 + %8 = load ptr, ptr %data, align 8, !dbg !145 + call void @printWLine(ptr noundef %8), !dbg !146 + %9 = load ptr, ptr %data, align 8, !dbg !147 + call void @free(ptr noundef %9) #10, !dbg !148 + ret void, !dbg !149 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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 = !{!32, !33, !34, !35, !36, !37, !38} @@ -198,7 +194,7 @@ attributes #12 = { nounwind willreturn memory(read) } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c", directory: "/root/testsss/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} @@ -218,12 +214,12 @@ attributes #12 = { nounwind willreturn memory(read) } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c", directory: "/root/testsss/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") +!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 24, baseType: !28) +!27 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -235,7 +231,7 @@ attributes #12 = { nounwind willreturn memory(read) } !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"} +!39 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -247,104 +243,102 @@ attributes #12 = { nounwind willreturn memory(read) } !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) +!51 = !DILocation(line: 27, column: 24, scope: !52) +!52 = distinct !DILexicalBlock(scope: !49, file: !2, line: 27, column: 23) +!53 = !DILocation(line: 29, column: 13, scope: !40) +!54 = !DILocation(line: 29, column: 5, scope: !40) +!55 = !DILocation(line: 30, column: 5, scope: !40) +!56 = !DILocation(line: 30, column: 17, scope: !40) +!57 = !DILocalVariable(name: "dest", 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: 1600, elements: !60) +!60 = !{!61} +!61 = !DISubrange(count: 50) +!62 = !DILocation(line: 32, column: 17, scope: !58) +!63 = !DILocation(line: 34, column: 9, scope: !58) +!64 = !DILocation(line: 34, column: 23, scope: !58) +!65 = !DILocation(line: 34, column: 36, scope: !58) +!66 = !DILocation(line: 34, column: 29, scope: !58) +!67 = !DILocation(line: 34, column: 41, scope: !58) +!68 = !DILocation(line: 35, column: 26, scope: !58) +!69 = !DILocation(line: 35, column: 39, scope: !58) +!70 = !DILocation(line: 35, column: 32, scope: !58) +!71 = !DILocation(line: 35, column: 44, scope: !58) +!72 = !DILocation(line: 35, column: 61, scope: !58) +!73 = !DILocation(line: 35, column: 9, scope: !58) +!74 = !DILocation(line: 36, column: 24, scope: !58) +!75 = !DILocation(line: 36, column: 37, scope: !58) +!76 = !DILocation(line: 36, column: 30, scope: !58) +!77 = !DILocation(line: 36, column: 42, scope: !58) +!78 = !DILocation(line: 36, column: 59, scope: !58) +!79 = !DILocation(line: 36, column: 9, scope: !58) +!80 = !DILocation(line: 38, column: 9, scope: !58) +!81 = !DILocation(line: 38, column: 20, scope: !58) +!82 = !DILocation(line: 39, column: 20, scope: !58) +!83 = !DILocation(line: 39, column: 9, scope: !58) +!84 = !DILocation(line: 40, column: 14, scope: !58) +!85 = !DILocation(line: 40, column: 9, scope: !58) +!86 = !DILocation(line: 42, column: 1, scope: !40) +!87 = 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) +!88 = !DILocation(line: 72, column: 5, scope: !87) +!89 = !DILocation(line: 73, column: 1, scope: !87) +!90 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 85, type: !91, scopeLine: 86, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) +!91 = !DISubroutineType(types: !92) +!92 = !{!28, !28, !93} +!93 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !94, size: 64) +!94 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!95 = !DILocalVariable(name: "argc", arg: 1, scope: !90, file: !2, line: 85, type: !28) +!96 = !DILocation(line: 85, column: 14, scope: !90) +!97 = !DILocalVariable(name: "argv", arg: 2, scope: !90, file: !2, line: 85, type: !93) +!98 = !DILocation(line: 85, column: 27, scope: !90) +!99 = !DILocation(line: 88, column: 22, scope: !90) +!100 = !DILocation(line: 88, column: 12, scope: !90) +!101 = !DILocation(line: 88, column: 5, scope: !90) +!102 = !DILocation(line: 90, column: 5, scope: !90) +!103 = !DILocation(line: 91, column: 5, scope: !90) +!104 = !DILocation(line: 92, column: 5, scope: !90) +!105 = !DILocation(line: 95, column: 5, scope: !90) +!106 = !DILocation(line: 96, column: 5, scope: !90) +!107 = !DILocation(line: 97, column: 5, scope: !90) +!108 = !DILocation(line: 99, column: 5, scope: !90) +!109 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 49, type: !41, scopeLine: 50, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) +!110 = !DILocalVariable(name: "data", scope: !109, file: !2, line: 51, type: !25) +!111 = !DILocation(line: 51, column: 15, scope: !109) +!112 = !DILocation(line: 52, column: 23, scope: !109) +!113 = !DILocation(line: 52, column: 10, scope: !109) +!114 = !DILocation(line: 53, column: 9, scope: !115) +!115 = distinct !DILexicalBlock(scope: !109, file: !2, line: 53, column: 9) +!116 = !DILocation(line: 53, column: 14, scope: !115) +!117 = !DILocation(line: 53, column: 24, scope: !118) +!118 = distinct !DILexicalBlock(scope: !115, file: !2, line: 53, column: 23) +!119 = !DILocation(line: 55, column: 13, scope: !109) +!120 = !DILocation(line: 55, column: 5, scope: !109) +!121 = !DILocation(line: 56, column: 5, scope: !109) +!122 = !DILocation(line: 56, column: 16, scope: !109) +!123 = !DILocalVariable(name: "dest", scope: !124, file: !2, line: 58, type: !59) +!124 = distinct !DILexicalBlock(scope: !109, file: !2, line: 57, column: 5) +!125 = !DILocation(line: 58, column: 17, scope: !124) +!126 = !DILocation(line: 60, column: 9, scope: !124) +!127 = !DILocation(line: 60, column: 23, scope: !124) +!128 = !DILocation(line: 60, column: 36, scope: !124) +!129 = !DILocation(line: 60, column: 29, scope: !124) +!130 = !DILocation(line: 60, column: 41, scope: !124) +!131 = !DILocation(line: 61, column: 24, scope: !124) +!132 = !DILocation(line: 61, column: 37, scope: !124) +!133 = !DILocation(line: 61, column: 30, scope: !124) +!134 = !DILocation(line: 61, column: 42, scope: !124) +!135 = !DILocation(line: 61, column: 59, scope: !124) +!136 = !DILocation(line: 61, column: 9, scope: !124) +!137 = !DILocation(line: 62, column: 24, scope: !124) +!138 = !DILocation(line: 62, column: 37, scope: !124) +!139 = !DILocation(line: 62, column: 30, scope: !124) +!140 = !DILocation(line: 62, column: 42, scope: !124) +!141 = !DILocation(line: 62, column: 59, scope: !124) +!142 = !DILocation(line: 62, column: 9, scope: !124) +!143 = !DILocation(line: 64, column: 9, scope: !124) +!144 = !DILocation(line: 64, column: 20, scope: !124) +!145 = !DILocation(line: 65, column: 20, scope: !124) +!146 = !DILocation(line: 65, column: 9, scope: !124) +!147 = !DILocation(line: 66, column: 14, scope: !124) +!148 = !DILocation(line: 66, column: 9, scope: !124) +!149 = !DILocation(line: 68, column: 1, scope: !109) 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 index 9f2694a9e..fb7d71b9e 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,151 +13,147 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_bad 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 + #dbg_declare(ptr %data, !41, !DIExpression(), !42) store ptr null, ptr %data, align 8, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef 50) #7, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef 50) #6, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !48 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !50 - unreachable, !dbg !50 + call void @exit(i32 noundef -1) #7, !dbg !49 + unreachable, !dbg !49 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 + %1 = load ptr, ptr %data, align 8, !dbg !51 + %arrayidx = getelementptr inbounds i8, ptr %1, i64 0, !dbg !51 + store i8 0, ptr %arrayidx, align 1, !dbg !52 + #dbg_declare(ptr %source, !53, !DIExpression(), !58) + %arraydecay = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !59 + call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !59 + %arrayidx1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !60 + store i8 0, ptr %arrayidx1, align 1, !dbg !61 + %2 = load ptr, ptr %data, align 8, !dbg !62 + %arraydecay2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !63 + %call3 = call ptr @strcpy(ptr noundef %2, ptr noundef %arraydecay2) #8, !dbg !64 + %3 = load ptr, ptr %data, align 8, !dbg !65 + %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef 99), !dbg !66 + %arraydecay5 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !67 + %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 99), !dbg !68 + %4 = load ptr, ptr %data, align 8, !dbg !69 + call void @printLine(ptr noundef %4), !dbg !70 + %5 = load ptr, ptr %data, align 8, !dbg !71 + call void @free(ptr noundef %5) #8, !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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #5 +declare ptr @strcpy(ptr noundef, ptr noundef) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare i32 @SAFE_BUFACCESS(...) #6 +declare i32 @SAFE_BUFACCESS(...) #5 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #5 +declare void @free(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_good() #0 !dbg !75 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_good() #0 !dbg !74 { entry: - call void @goodG2B(), !dbg !76 - ret void, !dbg !77 + 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 !78 { +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 + #dbg_declare(ptr %argc.addr, !82, !DIExpression(), !83) 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 + #dbg_declare(ptr %argv.addr, !84, !DIExpression(), !85) + %call = call i64 @time(ptr noundef null) #8, !dbg !86 + %conv = trunc i64 %call to i32, !dbg !87 + call void @srand(i32 noundef %conv) #8, !dbg !88 + call void @printLine(ptr noundef @.str), !dbg !89 + call void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_good(), !dbg !90 + call void @printLine(ptr noundef @.str.1), !dbg !91 + call void @printLine(ptr noundef @.str.2), !dbg !92 + call void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_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) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !97 { +define internal void @goodG2B() #0 !dbg !96 { 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 + #dbg_declare(ptr %data, !97, !DIExpression(), !98) + store ptr null, ptr %data, align 8, !dbg !99 + %call = call noalias ptr @malloc(i64 noundef 100) #6, !dbg !100 + store ptr %call, ptr %data, align 8, !dbg !101 + %0 = load ptr, ptr %data, align 8, !dbg !102 + %cmp = icmp eq ptr %0, null, !dbg !104 + br i1 %cmp, label %if.then, label %if.end, !dbg !104 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !107 - unreachable, !dbg !107 + call void @exit(i32 noundef -1) #7, !dbg !105 + unreachable, !dbg !105 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 + %1 = load ptr, ptr %data, align 8, !dbg !107 + %arrayidx = getelementptr inbounds i8, ptr %1, i64 0, !dbg !107 + store i8 0, ptr %arrayidx, align 1, !dbg !108 + #dbg_declare(ptr %source, !109, !DIExpression(), !111) + %arraydecay = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !112 + call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !112 + %arrayidx1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !113 + store i8 0, ptr %arrayidx1, align 1, !dbg !114 + %2 = load ptr, ptr %data, align 8, !dbg !115 + %arraydecay2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !116 + %call3 = call ptr @strcpy(ptr noundef %2, ptr noundef %arraydecay2) #8, !dbg !117 + %3 = load ptr, ptr %data, align 8, !dbg !118 + %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 99), !dbg !119 + %arraydecay5 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !120 + %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 99), !dbg !121 + %4 = load ptr, ptr %data, align 8, !dbg !122 + call void @printLine(ptr noundef %4), !dbg !123 + %5 = load ptr, ptr %data, align 8, !dbg !124 + call void @free(ptr noundef %5) #8, !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 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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 = !{!29, !30, !31, !32, !33, !34, !35} @@ -165,7 +161,7 @@ attributes #9 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c", directory: "/root/testsss/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} @@ -185,8 +181,8 @@ attributes #9 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c", directory: "/root/testsss/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) @@ -199,7 +195,7 @@ attributes #9 = { nounwind } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -212,83 +208,81 @@ attributes #9 = { nounwind } !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) +!49 = !DILocation(line: 29, column: 24, scope: !50) +!50 = distinct !DILexicalBlock(scope: !47, file: !2, line: 29, column: 23) +!51 = !DILocation(line: 30, column: 5, scope: !37) +!52 = !DILocation(line: 30, column: 13, scope: !37) +!53 = !DILocalVariable(name: "source", scope: !54, file: !2, line: 32, type: !55) +!54 = distinct !DILexicalBlock(scope: !37, file: !2, line: 31, column: 5) +!55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !56) +!56 = !{!57} +!57 = !DISubrange(count: 100) +!58 = !DILocation(line: 32, column: 14, scope: !54) +!59 = !DILocation(line: 33, column: 9, scope: !54) +!60 = !DILocation(line: 34, column: 9, scope: !54) +!61 = !DILocation(line: 34, column: 23, scope: !54) +!62 = !DILocation(line: 36, column: 16, scope: !54) +!63 = !DILocation(line: 36, column: 22, scope: !54) +!64 = !DILocation(line: 36, column: 9, scope: !54) +!65 = !DILocation(line: 37, column: 26, scope: !54) +!66 = !DILocation(line: 37, column: 9, scope: !54) +!67 = !DILocation(line: 38, column: 24, scope: !54) +!68 = !DILocation(line: 38, column: 9, scope: !54) +!69 = !DILocation(line: 39, column: 19, scope: !54) +!70 = !DILocation(line: 39, column: 9, scope: !54) +!71 = !DILocation(line: 40, column: 14, scope: !54) +!72 = !DILocation(line: 40, column: 9, scope: !54) +!73 = !DILocation(line: 42, column: 1, scope: !37) +!74 = 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) +!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: !40) +!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: !25, 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: 49, type: !38, scopeLine: 50, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) +!97 = !DILocalVariable(name: "data", scope: !96, file: !2, line: 51, type: !25) +!98 = !DILocation(line: 51, column: 12, scope: !96) +!99 = !DILocation(line: 52, column: 10, scope: !96) +!100 = !DILocation(line: 54, column: 20, scope: !96) +!101 = !DILocation(line: 54, column: 10, scope: !96) +!102 = !DILocation(line: 55, column: 9, scope: !103) +!103 = distinct !DILexicalBlock(scope: !96, file: !2, line: 55, column: 9) +!104 = !DILocation(line: 55, column: 14, scope: !103) +!105 = !DILocation(line: 55, column: 24, scope: !106) +!106 = distinct !DILexicalBlock(scope: !103, file: !2, line: 55, column: 23) +!107 = !DILocation(line: 56, column: 5, scope: !96) +!108 = !DILocation(line: 56, column: 13, scope: !96) +!109 = !DILocalVariable(name: "source", scope: !110, file: !2, line: 58, type: !55) +!110 = distinct !DILexicalBlock(scope: !96, file: !2, line: 57, column: 5) +!111 = !DILocation(line: 58, column: 14, scope: !110) +!112 = !DILocation(line: 59, column: 9, scope: !110) +!113 = !DILocation(line: 60, column: 9, scope: !110) +!114 = !DILocation(line: 60, column: 23, scope: !110) +!115 = !DILocation(line: 62, column: 16, scope: !110) +!116 = !DILocation(line: 62, column: 22, scope: !110) +!117 = !DILocation(line: 62, column: 9, scope: !110) +!118 = !DILocation(line: 63, column: 24, scope: !110) +!119 = !DILocation(line: 63, column: 9, scope: !110) +!120 = !DILocation(line: 64, column: 24, scope: !110) +!121 = !DILocation(line: 64, column: 9, scope: !110) +!122 = !DILocation(line: 66, column: 19, scope: !110) +!123 = !DILocation(line: 66, column: 9, scope: !110) +!124 = !DILocation(line: 67, column: 14, scope: !110) +!125 = !DILocation(line: 67, column: 9, scope: !110) +!126 = !DILocation(line: 69, column: 1, scope: !96) 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 index 1cf695119..1c77a37b6 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,152 +13,148 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_ 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 + #dbg_declare(ptr %data, !44, !DIExpression(), !45) store ptr null, ptr %data, align 8, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef 200) #6, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef 200) #5, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !51 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #7, !dbg !53 - unreachable, !dbg !53 + call void @exit(i32 noundef -1) #6, !dbg !52 + unreachable, !dbg !52 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 + %1 = load ptr, ptr %data, align 8, !dbg !54 + %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !54 + store i32 0, ptr %arrayidx, align 4, !dbg !55 + #dbg_declare(ptr %source, !56, !DIExpression(), !61) + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !62 + %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #7, !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 + %2 = load ptr, ptr %data, align 8, !dbg !66 + %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !67 + %call4 = call ptr @wcscpy(ptr noundef %2, ptr noundef %arraydecay3) #7, !dbg !68 + %3 = load ptr, ptr %data, align 8, !dbg !69 + %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !70 + %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !71 + %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !72 + %4 = load ptr, ptr %data, align 8, !dbg !73 + call void @printWLine(ptr noundef %4), !dbg !74 + %5 = load ptr, ptr %data, align 8, !dbg !75 + call void @free(ptr noundef %5) #7, !dbg !76 + ret void, !dbg !77 } -; 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 noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(i32 noundef) #2 ; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #3 ; Function Attrs: nounwind -declare ptr @wcscpy(ptr noundef, ptr noundef) #4 +declare ptr @wcscpy(ptr noundef, ptr noundef) #3 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #4 -declare i32 @SAFE_BUFACCESS(...) #5 +declare i32 @SAFE_BUFACCESS(...) #4 -declare void @printWLine(ptr noundef) #5 +declare void @printWLine(ptr noundef) #4 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 ; 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 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_good() #0 !dbg !78 { entry: - call void @goodG2B(), !dbg !80 - ret void, !dbg !81 + call void @goodG2B(), !dbg !79 + ret void, !dbg !80 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !82 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !81 { 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 + #dbg_declare(ptr %argc.addr, !86, !DIExpression(), !87) 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 + #dbg_declare(ptr %argv.addr, !88, !DIExpression(), !89) + %call = call i64 @time(ptr noundef null) #7, !dbg !90 + %conv = trunc i64 %call to i32, !dbg !91 + call void @srand(i32 noundef %conv) #7, !dbg !92 + call void @printLine(ptr noundef @.str), !dbg !93 + call void @CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_good(), !dbg !94 + call void @printLine(ptr noundef @.str.1), !dbg !95 + call void @printLine(ptr noundef @.str.2), !dbg !96 + call void @CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_bad(), !dbg !97 + call void @printLine(ptr noundef @.str.3), !dbg !98 + ret i32 0, !dbg !99 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !101 { +define internal void @goodG2B() #0 !dbg !100 { 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 + #dbg_declare(ptr %data, !101, !DIExpression(), !102) + store ptr null, ptr %data, align 8, !dbg !103 + %call = call noalias ptr @malloc(i64 noundef 400) #5, !dbg !104 + store ptr %call, ptr %data, align 8, !dbg !105 + %0 = load ptr, ptr %data, align 8, !dbg !106 + %cmp = icmp eq ptr %0, null, !dbg !108 + br i1 %cmp, label %if.then, label %if.end, !dbg !108 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #7, !dbg !111 - unreachable, !dbg !111 + call void @exit(i32 noundef -1) #6, !dbg !109 + unreachable, !dbg !109 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 + %1 = load ptr, ptr %data, align 8, !dbg !111 + %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !111 + store i32 0, ptr %arrayidx, align 4, !dbg !112 + #dbg_declare(ptr %source, !113, !DIExpression(), !115) + %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !116 + %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #7, !dbg !117 + %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !118 + store i32 0, ptr %arrayidx2, align 4, !dbg !119 + %2 = load ptr, ptr %data, align 8, !dbg !120 + %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !121 + %call4 = call ptr @wcscpy(ptr noundef %2, ptr noundef %arraydecay3) #7, !dbg !122 + %3 = load ptr, ptr %data, align 8, !dbg !123 + %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !124 + %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !125 + %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !126 + %4 = load ptr, ptr %data, align 8, !dbg !127 + call void @printWLine(ptr noundef %4), !dbg !128 + %5 = load ptr, ptr %data, align 8, !dbg !129 + call void @free(ptr noundef %5) #7, !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 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind allocsize(0) } +attributes #6 = { noreturn nounwind } +attributes #7 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} @@ -166,7 +162,7 @@ attributes #8 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c", directory: "/root/testsss/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} @@ -186,12 +182,12 @@ attributes #8 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c", directory: "/root/testsss/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") +!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 24, baseType: !28) +!27 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -203,7 +199,7 @@ attributes #8 = { nounwind } !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"} +!39 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -216,85 +212,83 @@ attributes #8 = { nounwind } !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) +!52 = !DILocation(line: 29, column: 24, scope: !53) +!53 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 23) +!54 = !DILocation(line: 30, column: 5, scope: !40) +!55 = !DILocation(line: 30, column: 13, scope: !40) +!56 = !DILocalVariable(name: "source", scope: !57, file: !2, line: 32, type: !58) +!57 = distinct !DILexicalBlock(scope: !40, file: !2, line: 31, column: 5) +!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !59) +!59 = !{!60} +!60 = !DISubrange(count: 100) +!61 = !DILocation(line: 32, column: 17, scope: !57) +!62 = !DILocation(line: 33, column: 17, scope: !57) +!63 = !DILocation(line: 33, column: 9, scope: !57) +!64 = !DILocation(line: 34, column: 9, scope: !57) +!65 = !DILocation(line: 34, column: 23, scope: !57) +!66 = !DILocation(line: 36, column: 16, scope: !57) +!67 = !DILocation(line: 36, column: 22, scope: !57) +!68 = !DILocation(line: 36, column: 9, scope: !57) +!69 = !DILocation(line: 37, column: 26, scope: !57) +!70 = !DILocation(line: 37, column: 9, scope: !57) +!71 = !DILocation(line: 38, column: 24, scope: !57) +!72 = !DILocation(line: 38, column: 9, scope: !57) +!73 = !DILocation(line: 40, column: 20, scope: !57) +!74 = !DILocation(line: 40, column: 9, scope: !57) +!75 = !DILocation(line: 41, column: 14, scope: !57) +!76 = !DILocation(line: 41, column: 9, scope: !57) +!77 = !DILocation(line: 43, column: 1, scope: !40) +!78 = 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) +!79 = !DILocation(line: 74, column: 5, scope: !78) +!80 = !DILocation(line: 75, column: 1, scope: !78) +!81 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 87, type: !82, scopeLine: 88, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) +!82 = !DISubroutineType(types: !83) +!83 = !{!28, !28, !84} +!84 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !85, size: 64) +!85 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!86 = !DILocalVariable(name: "argc", arg: 1, scope: !81, file: !2, line: 87, type: !28) +!87 = !DILocation(line: 87, column: 14, scope: !81) +!88 = !DILocalVariable(name: "argv", arg: 2, scope: !81, file: !2, line: 87, type: !84) +!89 = !DILocation(line: 87, column: 27, scope: !81) +!90 = !DILocation(line: 90, column: 22, scope: !81) +!91 = !DILocation(line: 90, column: 12, scope: !81) +!92 = !DILocation(line: 90, column: 5, scope: !81) +!93 = !DILocation(line: 92, column: 5, scope: !81) +!94 = !DILocation(line: 93, column: 5, scope: !81) +!95 = !DILocation(line: 94, column: 5, scope: !81) +!96 = !DILocation(line: 97, column: 5, scope: !81) +!97 = !DILocation(line: 98, column: 5, scope: !81) +!98 = !DILocation(line: 99, column: 5, scope: !81) +!99 = !DILocation(line: 101, column: 5, scope: !81) +!100 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !41, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) +!101 = !DILocalVariable(name: "data", scope: !100, file: !2, line: 52, type: !25) +!102 = !DILocation(line: 52, column: 15, scope: !100) +!103 = !DILocation(line: 53, column: 10, scope: !100) +!104 = !DILocation(line: 55, column: 23, scope: !100) +!105 = !DILocation(line: 55, column: 10, scope: !100) +!106 = !DILocation(line: 56, column: 9, scope: !107) +!107 = distinct !DILexicalBlock(scope: !100, file: !2, line: 56, column: 9) +!108 = !DILocation(line: 56, column: 14, scope: !107) +!109 = !DILocation(line: 56, column: 24, scope: !110) +!110 = distinct !DILexicalBlock(scope: !107, file: !2, line: 56, column: 23) +!111 = !DILocation(line: 57, column: 5, scope: !100) +!112 = !DILocation(line: 57, column: 13, scope: !100) +!113 = !DILocalVariable(name: "source", scope: !114, file: !2, line: 59, type: !58) +!114 = distinct !DILexicalBlock(scope: !100, file: !2, line: 58, column: 5) +!115 = !DILocation(line: 59, column: 17, scope: !114) +!116 = !DILocation(line: 60, column: 17, scope: !114) +!117 = !DILocation(line: 60, column: 9, scope: !114) +!118 = !DILocation(line: 61, column: 9, scope: !114) +!119 = !DILocation(line: 61, column: 23, scope: !114) +!120 = !DILocation(line: 63, column: 16, scope: !114) +!121 = !DILocation(line: 63, column: 22, scope: !114) +!122 = !DILocation(line: 63, column: 9, scope: !114) +!123 = !DILocation(line: 64, column: 24, scope: !114) +!124 = !DILocation(line: 64, column: 9, scope: !114) +!125 = !DILocation(line: 65, column: 24, scope: !114) +!126 = !DILocation(line: 65, column: 9, scope: !114) +!127 = !DILocation(line: 67, column: 20, scope: !114) +!128 = !DILocation(line: 67, column: 9, scope: !114) +!129 = !DILocation(line: 68, column: 14, scope: !114) +!130 = !DILocation(line: 68, column: 9, scope: !114) +!131 = !DILocation(line: 70, column: 1, scope: !100) 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 index 5b28be8bd..f7b85a2cc 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,168 +13,164 @@ define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_bad( 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 + #dbg_declare(ptr %data, !41, !DIExpression(), !42) + %call = call noalias ptr @malloc(i64 noundef 100) #7, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !47 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !49 - unreachable, !dbg !49 + call void @exit(i32 noundef -1) #8, !dbg !48 + unreachable, !dbg !48 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 + %1 = load ptr, ptr %data, align 8, !dbg !50 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 99, i1 false), !dbg !51 + %2 = load ptr, ptr %data, align 8, !dbg !52 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 99, !dbg !52 + store i8 0, ptr %arrayidx, align 1, !dbg !53 + #dbg_declare(ptr %dest, !54, !DIExpression(), !59) + call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !59 + %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !60 + %3 = load ptr, ptr %data, align 8, !dbg !61 + %call1 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %3) #9, !dbg !62 + %arraydecay2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !63 + %4 = load ptr, ptr %data, align 8, !dbg !64 + %call3 = call i64 @strlen(ptr noundef %4) #10, !dbg !65 + %mul = mul i64 %call3, 1, !dbg !66 + %sub = sub i64 %mul, 1, !dbg !67 + %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !68 + %5 = load ptr, ptr %data, align 8, !dbg !69 + %6 = load ptr, ptr %data, align 8, !dbg !70 + %call5 = call i64 @strlen(ptr noundef %6) #10, !dbg !71 + %mul6 = mul i64 %call5, 1, !dbg !72 + %sub7 = sub i64 %mul6, 1, !dbg !73 + %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub7), !dbg !74 + %7 = load ptr, ptr %data, align 8, !dbg !75 + call void @printLine(ptr noundef %7), !dbg !76 + %8 = load ptr, ptr %data, align 8, !dbg !77 + call void @free(ptr noundef %8) #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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #5 +declare ptr @strcpy(ptr noundef, ptr noundef) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #7 +declare i64 @strlen(ptr noundef) #6 -declare i32 @SAFE_BUFACCESS(...) #6 +declare i32 @SAFE_BUFACCESS(...) #5 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #5 +declare void @free(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_good() #0 !dbg !81 { +define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_good() #0 !dbg !80 { entry: - call void @goodG2B(), !dbg !82 - ret void, !dbg !83 + 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 !84 { +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 !89, metadata !DIExpression()), !dbg !90 + #dbg_declare(ptr %argc.addr, !88, !DIExpression(), !89) 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 + #dbg_declare(ptr %argv.addr, !90, !DIExpression(), !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_src_char_cpy_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_src_char_cpy_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) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !103 { +define internal void @goodG2B() #0 !dbg !102 { 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 + #dbg_declare(ptr %data, !103, !DIExpression(), !104) + %call = call noalias ptr @malloc(i64 noundef 100) #7, !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 !109 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !112 - unreachable, !dbg !112 + call void @exit(i32 noundef -1) #8, !dbg !110 + unreachable, !dbg !110 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 + %1 = load ptr, ptr %data, align 8, !dbg !112 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 49, i1 false), !dbg !113 + %2 = load ptr, ptr %data, align 8, !dbg !114 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 49, !dbg !114 + store i8 0, ptr %arrayidx, align 1, !dbg !115 + #dbg_declare(ptr %dest, !116, !DIExpression(), !118) + call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !118 + %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !119 + %3 = load ptr, ptr %data, align 8, !dbg !120 + %call1 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %3) #9, !dbg !121 + %arraydecay2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !122 + %4 = load ptr, ptr %data, align 8, !dbg !123 + %call3 = call i64 @strlen(ptr noundef %4) #10, !dbg !124 + %mul = mul i64 %call3, 1, !dbg !125 + %sub = sub i64 %mul, 1, !dbg !126 + %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !127 + %5 = load ptr, ptr %data, align 8, !dbg !128 + %6 = load ptr, ptr %data, align 8, !dbg !129 + %call5 = call i64 @strlen(ptr noundef %6) #10, !dbg !130 + %mul6 = mul i64 %call5, 1, !dbg !131 + %sub7 = sub i64 %mul6, 1, !dbg !132 + %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub7), !dbg !133 + %7 = load ptr, ptr %data, align 8, !dbg !134 + call void @printLine(ptr noundef %7), !dbg !135 + %8 = load ptr, ptr %data, align 8, !dbg !136 + call void @free(ptr noundef %8) #9, !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 = { 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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 = !{!29, !30, !31, !32, !33, !34, !35} @@ -182,7 +178,7 @@ attributes #11 = { nounwind willreturn memory(read) } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c", directory: "/root/testsss/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} @@ -202,8 +198,8 @@ attributes #11 = { nounwind willreturn memory(read) } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c", directory: "/root/testsss/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) @@ -216,7 +212,7 @@ attributes #11 = { nounwind willreturn memory(read) } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -228,96 +224,94 @@ attributes #11 = { nounwind willreturn memory(read) } !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) +!48 = !DILocation(line: 27, column: 24, scope: !49) +!49 = distinct !DILexicalBlock(scope: !46, file: !2, line: 27, column: 23) +!50 = !DILocation(line: 29, column: 12, scope: !37) +!51 = !DILocation(line: 29, column: 5, scope: !37) +!52 = !DILocation(line: 30, column: 5, scope: !37) +!53 = !DILocation(line: 30, column: 17, scope: !37) +!54 = !DILocalVariable(name: "dest", 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: 400, elements: !57) +!57 = !{!58} +!58 = !DISubrange(count: 50) +!59 = !DILocation(line: 32, column: 14, scope: !55) +!60 = !DILocation(line: 34, column: 16, scope: !55) +!61 = !DILocation(line: 34, column: 22, scope: !55) +!62 = !DILocation(line: 34, column: 9, scope: !55) +!63 = !DILocation(line: 35, column: 26, scope: !55) +!64 = !DILocation(line: 35, column: 39, scope: !55) +!65 = !DILocation(line: 35, column: 32, scope: !55) +!66 = !DILocation(line: 35, column: 44, scope: !55) +!67 = !DILocation(line: 35, column: 58, scope: !55) +!68 = !DILocation(line: 35, column: 9, scope: !55) +!69 = !DILocation(line: 36, column: 24, scope: !55) +!70 = !DILocation(line: 36, column: 37, scope: !55) +!71 = !DILocation(line: 36, column: 30, scope: !55) +!72 = !DILocation(line: 36, column: 42, scope: !55) +!73 = !DILocation(line: 36, column: 56, scope: !55) +!74 = !DILocation(line: 36, column: 9, scope: !55) +!75 = !DILocation(line: 38, column: 19, scope: !55) +!76 = !DILocation(line: 38, column: 9, scope: !55) +!77 = !DILocation(line: 39, column: 14, scope: !55) +!78 = !DILocation(line: 39, column: 9, scope: !55) +!79 = !DILocation(line: 41, column: 1, scope: !37) +!80 = 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) +!81 = !DILocation(line: 69, column: 5, scope: !80) +!82 = !DILocation(line: 70, column: 1, scope: !80) +!83 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 82, type: !84, scopeLine: 83, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) +!84 = !DISubroutineType(types: !85) +!85 = !{!86, !86, !87} +!86 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!87 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) +!88 = !DILocalVariable(name: "argc", arg: 1, scope: !83, file: !2, line: 82, type: !86) +!89 = !DILocation(line: 82, column: 14, scope: !83) +!90 = !DILocalVariable(name: "argv", arg: 2, scope: !83, file: !2, line: 82, type: !87) +!91 = !DILocation(line: 82, column: 27, scope: !83) +!92 = !DILocation(line: 85, column: 22, scope: !83) +!93 = !DILocation(line: 85, column: 12, scope: !83) +!94 = !DILocation(line: 85, column: 5, scope: !83) +!95 = !DILocation(line: 87, column: 5, scope: !83) +!96 = !DILocation(line: 88, column: 5, scope: !83) +!97 = !DILocation(line: 89, column: 5, scope: !83) +!98 = !DILocation(line: 92, column: 5, scope: !83) +!99 = !DILocation(line: 93, column: 5, scope: !83) +!100 = !DILocation(line: 94, column: 5, scope: !83) +!101 = !DILocation(line: 96, column: 5, scope: !83) +!102 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 48, type: !38, scopeLine: 49, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) +!103 = !DILocalVariable(name: "data", scope: !102, file: !2, line: 50, type: !25) +!104 = !DILocation(line: 50, column: 12, scope: !102) +!105 = !DILocation(line: 51, column: 20, scope: !102) +!106 = !DILocation(line: 51, column: 10, scope: !102) +!107 = !DILocation(line: 52, column: 9, scope: !108) +!108 = distinct !DILexicalBlock(scope: !102, file: !2, line: 52, column: 9) +!109 = !DILocation(line: 52, column: 14, scope: !108) +!110 = !DILocation(line: 52, column: 24, scope: !111) +!111 = distinct !DILexicalBlock(scope: !108, file: !2, line: 52, column: 23) +!112 = !DILocation(line: 54, column: 12, scope: !102) +!113 = !DILocation(line: 54, column: 5, scope: !102) +!114 = !DILocation(line: 55, column: 5, scope: !102) +!115 = !DILocation(line: 55, column: 16, scope: !102) +!116 = !DILocalVariable(name: "dest", scope: !117, file: !2, line: 57, type: !56) +!117 = distinct !DILexicalBlock(scope: !102, file: !2, line: 56, column: 5) +!118 = !DILocation(line: 57, column: 14, scope: !117) +!119 = !DILocation(line: 59, column: 16, scope: !117) +!120 = !DILocation(line: 59, column: 22, scope: !117) +!121 = !DILocation(line: 59, column: 9, scope: !117) +!122 = !DILocation(line: 60, column: 24, scope: !117) +!123 = !DILocation(line: 60, column: 37, scope: !117) +!124 = !DILocation(line: 60, column: 30, scope: !117) +!125 = !DILocation(line: 60, column: 42, scope: !117) +!126 = !DILocation(line: 60, column: 56, scope: !117) +!127 = !DILocation(line: 60, column: 9, scope: !117) +!128 = !DILocation(line: 61, column: 24, scope: !117) +!129 = !DILocation(line: 61, column: 37, scope: !117) +!130 = !DILocation(line: 61, column: 30, scope: !117) +!131 = !DILocation(line: 61, column: 42, scope: !117) +!132 = !DILocation(line: 61, column: 56, scope: !117) +!133 = !DILocation(line: 61, column: 9, scope: !117) +!134 = !DILocation(line: 62, column: 19, scope: !117) +!135 = !DILocation(line: 62, column: 9, scope: !117) +!136 = !DILocation(line: 63, column: 14, scope: !117) +!137 = !DILocation(line: 63, column: 9, scope: !117) +!138 = !DILocation(line: 65, column: 1, scope: !102) 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 index c77711b8c..8ff152188 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @stdin = external global ptr, align 8 @.str = private unnamed_addr constant [16 x i8] c"fgets() failed.\00", align 1, !dbg !0 @@ -18,207 +18,203 @@ 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 + #dbg_declare(ptr %data, !52, !DIExpression(), !54) store i32 -1, ptr %data, align 4, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !56, metadata !DIExpression()), !dbg !61 + #dbg_declare(ptr %inputBuffer, !56, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.else, !dbg !66 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 + %arraydecay1 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !67 + %call2 = call i32 @atoi(ptr noundef %arraydecay1) #5, !dbg !69 + store i32 %call2, ptr %data, align 4, !dbg !70 + br label %if.end, !dbg !71 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !73 + call void @printLine(ptr noundef @.str), !dbg !72 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 + #dbg_declare(ptr %buffer, !74, !DIExpression(), !79) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !79 + %1 = load i32, ptr %data, align 4, !dbg !80 + %cmp3 = icmp sge i32 %1, 0, !dbg !82 + br i1 %cmp3, label %if.then4, label %if.else7, !dbg !82 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 + %2 = load i32, ptr %data, align 4, !dbg !83 + %idxprom = sext i32 %2 to i64, !dbg !85 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !85 + %3 = load i32, ptr %arrayidx, align 4, !dbg !85 + call void @printIntLine(i32 noundef %3), !dbg !86 + %arraydecay5 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !87 + %4 = load i32, ptr %data, align 4, !dbg !88 + %conv = sext i32 %4 to i64, !dbg !88 + %mul = mul i64 %conv, 4, !dbg !89 + %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef %mul), !dbg !90 + br label %if.end8, !dbg !91 if.else7: ; preds = %if.end - call void @printLine(ptr noundef @.str.1), !dbg !94 + call void @printLine(ptr noundef @.str.1), !dbg !92 br label %if.end8 if.end8: ; preds = %if.else7, %if.then4 - ret void, !dbg !96 + ret void, !dbg !94 } -; 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 @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #3 +declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #4 +declare i32 @atoi(ptr noundef) #3 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 -declare void @printIntLine(i32 noundef) #3 +declare void @printIntLine(i32 noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_fgets_01_good() #0 !dbg !97 { +define dso_local void @CWE126_Buffer_Overread__CWE129_fgets_01_good() #0 !dbg !95 { entry: - call void @goodG2B(), !dbg !98 - call void @goodB2G(), !dbg !99 - ret void, !dbg !100 + call void @goodG2B(), !dbg !96 + call void @goodB2G(), !dbg !97 + ret void, !dbg !98 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !101 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !99 { 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 + #dbg_declare(ptr %argc.addr, !104, !DIExpression(), !105) 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 + #dbg_declare(ptr %argv.addr, !106, !DIExpression(), !107) + %call = call i64 @time(ptr noundef null) #6, !dbg !108 + %conv = trunc i64 %call to i32, !dbg !109 + call void @srand(i32 noundef %conv) #6, !dbg !110 + call void @printLine(ptr noundef @.str.2), !dbg !111 + call void @CWE126_Buffer_Overread__CWE129_fgets_01_good(), !dbg !112 + call void @printLine(ptr noundef @.str.3), !dbg !113 + call void @printLine(ptr noundef @.str.4), !dbg !114 + call void @CWE126_Buffer_Overread__CWE129_fgets_01_bad(), !dbg !115 + call void @printLine(ptr noundef @.str.5), !dbg !116 + ret i32 0, !dbg !117 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !120 { +define internal void @goodG2B() #0 !dbg !118 { 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 + #dbg_declare(ptr %data, !119, !DIExpression(), !120) + store i32 -1, ptr %data, align 4, !dbg !121 + store i32 7, ptr %data, align 4, !dbg !122 + #dbg_declare(ptr %buffer, !123, !DIExpression(), !125) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !125 + %0 = load i32, ptr %data, align 4, !dbg !126 + %cmp = icmp sge i32 %0, 0, !dbg !128 + br i1 %cmp, label %if.then, label %if.else, !dbg !128 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 + %1 = load i32, ptr %data, align 4, !dbg !129 + %idxprom = sext i32 %1 to i64, !dbg !131 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !131 + %2 = load i32, ptr %arrayidx, align 4, !dbg !131 + call void @printIntLine(i32 noundef %2), !dbg !132 + %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !133 + %3 = load i32, ptr %data, align 4, !dbg !134 + %conv = sext i32 %3 to i64, !dbg !134 + %mul = mul i64 %conv, 4, !dbg !135 + %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %mul), !dbg !136 + br label %if.end, !dbg !137 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str.1), !dbg !141 + call void @printLine(ptr noundef @.str.1), !dbg !138 br label %if.end if.end: ; preds = %if.else, %if.then - ret void, !dbg !143 + ret void, !dbg !140 } -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !144 { +define internal void @goodB2G() #0 !dbg !141 { 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 + #dbg_declare(ptr %data, !142, !DIExpression(), !143) + store i32 -1, ptr %data, align 4, !dbg !144 + #dbg_declare(ptr %inputBuffer, !145, !DIExpression(), !147) + call void @llvm.memset.p0.i64(ptr align 1 %inputBuffer, i8 0, i64 14, i1 false), !dbg !147 + %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !148 + %0 = load ptr, ptr @stdin, align 8, !dbg !150 + %call = call ptr @fgets(ptr noundef %arraydecay, i32 noundef 14, ptr noundef %0), !dbg !151 + %cmp = icmp ne ptr %call, null, !dbg !152 + br i1 %cmp, label %if.then, label %if.else, !dbg !152 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 + %arraydecay1 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !153 + %call2 = call i32 @atoi(ptr noundef %arraydecay1) #5, !dbg !155 + store i32 %call2, ptr %data, align 4, !dbg !156 + br label %if.end, !dbg !157 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !162 + call void @printLine(ptr noundef @.str), !dbg !158 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 + #dbg_declare(ptr %buffer, !160, !DIExpression(), !162) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !162 + %1 = load i32, ptr %data, align 4, !dbg !163 + %cmp3 = icmp sge i32 %1, 0, !dbg !165 + br i1 %cmp3, label %land.lhs.true, label %if.else6, !dbg !166 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 + %2 = load i32, ptr %data, align 4, !dbg !167 + %cmp4 = icmp slt i32 %2, 10, !dbg !168 + br i1 %cmp4, label %if.then5, label %if.else6, !dbg !166 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 + %3 = load i32, ptr %data, align 4, !dbg !169 + %idxprom = sext i32 %3 to i64, !dbg !171 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !171 + %4 = load i32, ptr %arrayidx, align 4, !dbg !171 + call void @printIntLine(i32 noundef %4), !dbg !172 + br label %if.end7, !dbg !173 if.else6: ; preds = %land.lhs.true, %if.end - call void @printLine(ptr noundef @.str.6), !dbg !179 + call void @printLine(ptr noundef @.str.6), !dbg !174 br label %if.end7 if.end7: ; preds = %if.else6, %if.then5 - ret void, !dbg !181 + ret void, !dbg !176 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!34} !llvm.module.flags = !{!40, !41, !42, !43, !44, !45, !46} @@ -226,7 +222,7 @@ attributes #7 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c", directory: "/root/testsss/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} @@ -258,8 +254,8 @@ attributes #7 = { nounwind } !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") +!34 = distinct !DICompileUnit(language: DW_LANG_C11, file: !35, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !36, globals: !39, splitDebugInlining: false, nameTableKind: None) +!35 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c", directory: "/root/testsss/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) @@ -271,7 +267,7 @@ attributes #7 = { nounwind } !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"} +!47 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -291,118 +287,113 @@ attributes #7 = { nounwind } !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) +!67 = !DILocation(line: 35, column: 25, scope: !68) +!68 = distinct !DILexicalBlock(scope: !63, file: !2, line: 33, column: 9) +!69 = !DILocation(line: 35, column: 20, scope: !68) +!70 = !DILocation(line: 35, column: 18, scope: !68) +!71 = !DILocation(line: 36, column: 9, scope: !68) +!72 = !DILocation(line: 39, column: 13, scope: !73) +!73 = distinct !DILexicalBlock(scope: !63, file: !2, line: 38, column: 9) +!74 = !DILocalVariable(name: "buffer", scope: !75, file: !2, line: 43, type: !76) +!75 = distinct !DILexicalBlock(scope: !48, file: !2, line: 42, column: 5) +!76 = !DICompositeType(tag: DW_TAG_array_type, baseType: !53, size: 320, elements: !77) +!77 = !{!78} +!78 = !DISubrange(count: 10) +!79 = !DILocation(line: 43, column: 13, scope: !75) +!80 = !DILocation(line: 46, column: 13, scope: !81) +!81 = distinct !DILexicalBlock(scope: !75, file: !2, line: 46, column: 13) +!82 = !DILocation(line: 46, column: 18, scope: !81) +!83 = !DILocation(line: 48, column: 33, scope: !84) +!84 = distinct !DILexicalBlock(scope: !81, file: !2, line: 47, column: 9) +!85 = !DILocation(line: 48, column: 26, scope: !84) +!86 = !DILocation(line: 48, column: 13, scope: !84) +!87 = !DILocation(line: 49, column: 30, scope: !84) +!88 = !DILocation(line: 49, column: 38, scope: !84) +!89 = !DILocation(line: 49, column: 42, scope: !84) +!90 = !DILocation(line: 49, column: 13, scope: !84) +!91 = !DILocation(line: 50, column: 9, scope: !84) +!92 = !DILocation(line: 53, column: 13, scope: !93) +!93 = distinct !DILexicalBlock(scope: !81, file: !2, line: 52, column: 9) +!94 = !DILocation(line: 56, column: 1, scope: !48) +!95 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_fgets_01_good", scope: !2, file: !2, line: 120, type: !49, scopeLine: 121, spFlags: DISPFlagDefinition, unit: !34) +!96 = !DILocation(line: 122, column: 5, scope: !95) +!97 = !DILocation(line: 123, column: 5, scope: !95) +!98 = !DILocation(line: 124, column: 1, scope: !95) +!99 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 135, type: !100, scopeLine: 136, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !51) +!100 = !DISubroutineType(types: !101) +!101 = !{!53, !53, !102} +!102 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !103, size: 64) +!103 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!104 = !DILocalVariable(name: "argc", arg: 1, scope: !99, file: !2, line: 135, type: !53) +!105 = !DILocation(line: 135, column: 14, scope: !99) +!106 = !DILocalVariable(name: "argv", arg: 2, scope: !99, file: !2, line: 135, type: !102) +!107 = !DILocation(line: 135, column: 27, scope: !99) +!108 = !DILocation(line: 138, column: 22, scope: !99) +!109 = !DILocation(line: 138, column: 12, scope: !99) +!110 = !DILocation(line: 138, column: 5, scope: !99) +!111 = !DILocation(line: 140, column: 5, scope: !99) +!112 = !DILocation(line: 141, column: 5, scope: !99) +!113 = !DILocation(line: 142, column: 5, scope: !99) +!114 = !DILocation(line: 145, column: 5, scope: !99) +!115 = !DILocation(line: 146, column: 5, scope: !99) +!116 = !DILocation(line: 147, column: 5, scope: !99) +!117 = !DILocation(line: 149, column: 5, scope: !99) +!118 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 63, type: !49, scopeLine: 64, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !34, retainedNodes: !51) +!119 = !DILocalVariable(name: "data", scope: !118, file: !2, line: 65, type: !53) +!120 = !DILocation(line: 65, column: 9, scope: !118) +!121 = !DILocation(line: 67, column: 10, scope: !118) +!122 = !DILocation(line: 70, column: 10, scope: !118) +!123 = !DILocalVariable(name: "buffer", scope: !124, file: !2, line: 72, type: !76) +!124 = distinct !DILexicalBlock(scope: !118, file: !2, line: 71, column: 5) +!125 = !DILocation(line: 72, column: 13, scope: !124) +!126 = !DILocation(line: 75, column: 13, scope: !127) +!127 = distinct !DILexicalBlock(scope: !124, file: !2, line: 75, column: 13) +!128 = !DILocation(line: 75, column: 18, scope: !127) +!129 = !DILocation(line: 77, column: 33, scope: !130) +!130 = distinct !DILexicalBlock(scope: !127, file: !2, line: 76, column: 9) +!131 = !DILocation(line: 77, column: 26, scope: !130) +!132 = !DILocation(line: 77, column: 13, scope: !130) +!133 = !DILocation(line: 78, column: 28, scope: !130) +!134 = !DILocation(line: 78, column: 36, scope: !130) +!135 = !DILocation(line: 78, column: 40, scope: !130) +!136 = !DILocation(line: 78, column: 13, scope: !130) +!137 = !DILocation(line: 79, column: 9, scope: !130) +!138 = !DILocation(line: 82, column: 13, scope: !139) +!139 = distinct !DILexicalBlock(scope: !127, file: !2, line: 81, column: 9) +!140 = !DILocation(line: 85, column: 1, scope: !118) +!141 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 88, type: !49, scopeLine: 89, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !34, retainedNodes: !51) +!142 = !DILocalVariable(name: "data", scope: !141, file: !2, line: 90, type: !53) +!143 = !DILocation(line: 90, column: 9, scope: !141) +!144 = !DILocation(line: 92, column: 10, scope: !141) +!145 = !DILocalVariable(name: "inputBuffer", scope: !146, file: !2, line: 94, type: !58) +!146 = distinct !DILexicalBlock(scope: !141, file: !2, line: 93, column: 5) +!147 = !DILocation(line: 94, column: 14, scope: !146) +!148 = !DILocation(line: 96, column: 19, scope: !149) +!149 = distinct !DILexicalBlock(scope: !146, file: !2, line: 96, column: 13) +!150 = !DILocation(line: 96, column: 49, scope: !149) +!151 = !DILocation(line: 96, column: 13, scope: !149) +!152 = !DILocation(line: 96, column: 56, scope: !149) +!153 = !DILocation(line: 99, column: 25, scope: !154) +!154 = distinct !DILexicalBlock(scope: !149, file: !2, line: 97, column: 9) +!155 = !DILocation(line: 99, column: 20, scope: !154) +!156 = !DILocation(line: 99, column: 18, scope: !154) +!157 = !DILocation(line: 100, column: 9, scope: !154) +!158 = !DILocation(line: 103, column: 13, scope: !159) +!159 = distinct !DILexicalBlock(scope: !149, file: !2, line: 102, column: 9) +!160 = !DILocalVariable(name: "buffer", scope: !161, file: !2, line: 107, type: !76) +!161 = distinct !DILexicalBlock(scope: !141, file: !2, line: 106, column: 5) +!162 = !DILocation(line: 107, column: 13, scope: !161) +!163 = !DILocation(line: 109, column: 13, scope: !164) +!164 = distinct !DILexicalBlock(scope: !161, file: !2, line: 109, column: 13) +!165 = !DILocation(line: 109, column: 18, scope: !164) +!166 = !DILocation(line: 109, column: 23, scope: !164) +!167 = !DILocation(line: 109, column: 26, scope: !164) +!168 = !DILocation(line: 109, column: 31, scope: !164) +!169 = !DILocation(line: 111, column: 33, scope: !170) +!170 = distinct !DILexicalBlock(scope: !164, file: !2, line: 110, column: 9) +!171 = !DILocation(line: 111, column: 26, scope: !170) +!172 = !DILocation(line: 111, column: 13, scope: !170) +!173 = !DILocation(line: 112, column: 9, scope: !170) +!174 = !DILocation(line: 115, column: 13, scope: !175) +!175 = distinct !DILexicalBlock(scope: !164, file: !2, line: 114, column: 9) +!176 = !DILocation(line: 118, column: 1, scope: !141) 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 index f15abd0dd..225984c77 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @stdin = external global ptr, align 8 @.str = private unnamed_addr constant [3 x i8] c"%d\00", align 1, !dbg !0 @@ -17,167 +17,163 @@ define dso_local void @CWE126_Buffer_Overread__CWE129_fscanf_01_bad() #0 !dbg !5 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 + #dbg_declare(ptr %data, !54, !DIExpression(), !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 + #dbg_declare(ptr %buffer, !60, !DIExpression(), !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 + br i1 %cmp, label %if.then, label %if.else, !dbg !68 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 + %2 = load i32, ptr %data, align 4, !dbg !69 + %idxprom = sext i32 %2 to i64, !dbg !71 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !71 + %3 = load i32, ptr %arrayidx, align 4, !dbg !71 + call void @printIntLine(i32 noundef %3), !dbg !72 + %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !73 + %4 = load i32, ptr %data, align 4, !dbg !74 + %conv = sext i32 %4 to i64, !dbg !74 + %mul = mul i64 %conv, 4, !dbg !75 + %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %mul), !dbg !76 + br label %if.end, !dbg !77 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str.1), !dbg !79 + call void @printLine(ptr noundef @.str.1), !dbg !78 br label %if.end if.end: ; preds = %if.else, %if.then - ret void, !dbg !81 + ret void, !dbg !80 } -; 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 i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) #1 ; 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 @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 -declare void @printIntLine(i32 noundef) #2 +declare void @printIntLine(i32 noundef) #1 -declare i32 @UNSAFE_BUFACCESS(...) #2 +declare i32 @UNSAFE_BUFACCESS(...) #1 -declare void @printLine(ptr noundef) #2 +declare void @printLine(ptr noundef) #1 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_fscanf_01_good() #0 !dbg !82 { +define dso_local void @CWE126_Buffer_Overread__CWE129_fscanf_01_good() #0 !dbg !81 { entry: - call void @goodG2B(), !dbg !83 - call void @goodB2G(), !dbg !84 - ret void, !dbg !85 + call void @goodG2B(), !dbg !82 + call void @goodB2G(), !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 !86 { +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 !91, metadata !DIExpression()), !dbg !92 + #dbg_declare(ptr %argc.addr, !90, !DIExpression(), !91) 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 + #dbg_declare(ptr %argv.addr, !92, !DIExpression(), !93) + %call = call i64 @time(ptr noundef null) #4, !dbg !94 + %conv = trunc i64 %call to i32, !dbg !95 + call void @srand(i32 noundef %conv) #4, !dbg !96 + call void @printLine(ptr noundef @.str.2), !dbg !97 + call void @CWE126_Buffer_Overread__CWE129_fscanf_01_good(), !dbg !98 + call void @printLine(ptr noundef @.str.3), !dbg !99 + call void @printLine(ptr noundef @.str.4), !dbg !100 + call void @CWE126_Buffer_Overread__CWE129_fscanf_01_bad(), !dbg !101 + call void @printLine(ptr noundef @.str.5), !dbg !102 + ret i32 0, !dbg !103 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !105 { +define internal void @goodG2B() #0 !dbg !104 { 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 + #dbg_declare(ptr %data, !105, !DIExpression(), !106) + store i32 -1, ptr %data, align 4, !dbg !107 + store i32 7, ptr %data, align 4, !dbg !108 + #dbg_declare(ptr %buffer, !109, !DIExpression(), !111) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !111 + %0 = load i32, ptr %data, align 4, !dbg !112 + %cmp = icmp sge i32 %0, 0, !dbg !114 + br i1 %cmp, label %if.then, label %if.else, !dbg !114 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 + %1 = load i32, ptr %data, align 4, !dbg !115 + %idxprom = sext i32 %1 to i64, !dbg !117 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !117 + %2 = load i32, ptr %arrayidx, align 4, !dbg !117 + call void @printIntLine(i32 noundef %2), !dbg !118 + %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !119 + %3 = load i32, ptr %data, align 4, !dbg !120 + %conv = sext i32 %3 to i64, !dbg !120 + %mul = mul i64 %conv, 4, !dbg !121 + %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %mul), !dbg !122 + br label %if.end, !dbg !123 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str.1), !dbg !126 + call void @printLine(ptr noundef @.str.1), !dbg !124 br label %if.end if.end: ; preds = %if.else, %if.then - ret void, !dbg !128 + ret void, !dbg !126 } -declare i32 @SAFE_BUFACCESS(...) #2 +declare i32 @SAFE_BUFACCESS(...) #1 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !129 { +define internal void @goodB2G() #0 !dbg !127 { 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 + #dbg_declare(ptr %data, !128, !DIExpression(), !129) + store i32 -1, ptr %data, align 4, !dbg !130 + %0 = load ptr, ptr @stdin, align 8, !dbg !131 + %call = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef @.str, ptr noundef %data), !dbg !132 + #dbg_declare(ptr %buffer, !133, !DIExpression(), !135) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !135 + %1 = load i32, ptr %data, align 4, !dbg !136 + %cmp = icmp sge i32 %1, 0, !dbg !138 + br i1 %cmp, label %land.lhs.true, label %if.else, !dbg !139 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 + %2 = load i32, ptr %data, align 4, !dbg !140 + %cmp1 = icmp slt i32 %2, 10, !dbg !141 + br i1 %cmp1, label %if.then, label %if.else, !dbg !139 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 + %3 = load i32, ptr %data, align 4, !dbg !142 + %idxprom = sext i32 %3 to i64, !dbg !144 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !144 + %4 = load i32, ptr %arrayidx, align 4, !dbg !144 + call void @printIntLine(i32 noundef %4), !dbg !145 + br label %if.end, !dbg !146 if.else: ; preds = %land.lhs.true, %entry - call void @printLine(ptr noundef @.str.6), !dbg !150 + call void @printLine(ptr noundef @.str.6), !dbg !147 br label %if.end if.end: ; preds = %if.else, %if.then - ret void, !dbg !152 + ret void, !dbg !149 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!37} !llvm.module.flags = !{!42, !43, !44, !45, !46, !47, !48} @@ -185,7 +181,7 @@ attributes #5 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c", directory: "/root/testsss/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} @@ -220,8 +216,8 @@ attributes #5 = { nounwind } !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") +!37 = distinct !DICompileUnit(language: DW_LANG_C11, file: !38, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !39, globals: !41, splitDebugInlining: false, nameTableKind: None) +!38 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c", directory: "/root/testsss/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} @@ -232,7 +228,7 @@ attributes #5 = { nounwind } !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"} +!49 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -252,87 +248,84 @@ attributes #5 = { nounwind } !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) +!69 = !DILocation(line: 35, column: 33, scope: !70) +!70 = distinct !DILexicalBlock(scope: !67, file: !2, line: 34, column: 9) +!71 = !DILocation(line: 35, column: 26, scope: !70) +!72 = !DILocation(line: 35, column: 13, scope: !70) +!73 = !DILocation(line: 36, column: 30, scope: !70) +!74 = !DILocation(line: 36, column: 38, scope: !70) +!75 = !DILocation(line: 36, column: 42, scope: !70) +!76 = !DILocation(line: 36, column: 13, scope: !70) +!77 = !DILocation(line: 37, column: 9, scope: !70) +!78 = !DILocation(line: 40, column: 13, scope: !79) +!79 = distinct !DILexicalBlock(scope: !67, file: !2, line: 39, column: 9) +!80 = !DILocation(line: 43, column: 1, scope: !50) +!81 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_fscanf_01_good", scope: !2, file: !2, line: 96, type: !51, scopeLine: 97, spFlags: DISPFlagDefinition, unit: !37) +!82 = !DILocation(line: 98, column: 5, scope: !81) +!83 = !DILocation(line: 99, column: 5, scope: !81) +!84 = !DILocation(line: 100, column: 1, scope: !81) +!85 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 111, type: !86, scopeLine: 112, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !53) +!86 = !DISubroutineType(types: !87) +!87 = !{!55, !55, !88} +!88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !89, size: 64) +!89 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!90 = !DILocalVariable(name: "argc", arg: 1, scope: !85, file: !2, line: 111, type: !55) +!91 = !DILocation(line: 111, column: 14, scope: !85) +!92 = !DILocalVariable(name: "argv", arg: 2, scope: !85, file: !2, line: 111, type: !88) +!93 = !DILocation(line: 111, column: 27, scope: !85) +!94 = !DILocation(line: 114, column: 22, scope: !85) +!95 = !DILocation(line: 114, column: 12, scope: !85) +!96 = !DILocation(line: 114, column: 5, scope: !85) +!97 = !DILocation(line: 116, column: 5, scope: !85) +!98 = !DILocation(line: 117, column: 5, scope: !85) +!99 = !DILocation(line: 118, column: 5, scope: !85) +!100 = !DILocation(line: 121, column: 5, scope: !85) +!101 = !DILocation(line: 122, column: 5, scope: !85) +!102 = !DILocation(line: 123, column: 5, scope: !85) +!103 = !DILocation(line: 125, column: 5, scope: !85) +!104 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !51, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !37, retainedNodes: !53) +!105 = !DILocalVariable(name: "data", scope: !104, file: !2, line: 52, type: !55) +!106 = !DILocation(line: 52, column: 9, scope: !104) +!107 = !DILocation(line: 54, column: 10, scope: !104) +!108 = !DILocation(line: 57, column: 10, scope: !104) +!109 = !DILocalVariable(name: "buffer", scope: !110, file: !2, line: 59, type: !62) +!110 = distinct !DILexicalBlock(scope: !104, file: !2, line: 58, column: 5) +!111 = !DILocation(line: 59, column: 13, scope: !110) +!112 = !DILocation(line: 62, column: 13, scope: !113) +!113 = distinct !DILexicalBlock(scope: !110, file: !2, line: 62, column: 13) +!114 = !DILocation(line: 62, column: 18, scope: !113) +!115 = !DILocation(line: 64, column: 33, scope: !116) +!116 = distinct !DILexicalBlock(scope: !113, file: !2, line: 63, column: 9) +!117 = !DILocation(line: 64, column: 26, scope: !116) +!118 = !DILocation(line: 64, column: 13, scope: !116) +!119 = !DILocation(line: 65, column: 28, scope: !116) +!120 = !DILocation(line: 65, column: 36, scope: !116) +!121 = !DILocation(line: 65, column: 40, scope: !116) +!122 = !DILocation(line: 65, column: 13, scope: !116) +!123 = !DILocation(line: 66, column: 9, scope: !116) +!124 = !DILocation(line: 69, column: 13, scope: !125) +!125 = distinct !DILexicalBlock(scope: !113, file: !2, line: 68, column: 9) +!126 = !DILocation(line: 72, column: 1, scope: !104) +!127 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 75, type: !51, scopeLine: 76, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !37, retainedNodes: !53) +!128 = !DILocalVariable(name: "data", scope: !127, file: !2, line: 77, type: !55) +!129 = !DILocation(line: 77, column: 9, scope: !127) +!130 = !DILocation(line: 79, column: 10, scope: !127) +!131 = !DILocation(line: 81, column: 12, scope: !127) +!132 = !DILocation(line: 81, column: 5, scope: !127) +!133 = !DILocalVariable(name: "buffer", scope: !134, file: !2, line: 83, type: !62) +!134 = distinct !DILexicalBlock(scope: !127, file: !2, line: 82, column: 5) +!135 = !DILocation(line: 83, column: 13, scope: !134) +!136 = !DILocation(line: 85, column: 13, scope: !137) +!137 = distinct !DILexicalBlock(scope: !134, file: !2, line: 85, column: 13) +!138 = !DILocation(line: 85, column: 18, scope: !137) +!139 = !DILocation(line: 85, column: 23, scope: !137) +!140 = !DILocation(line: 85, column: 26, scope: !137) +!141 = !DILocation(line: 85, column: 31, scope: !137) +!142 = !DILocation(line: 87, column: 33, scope: !143) +!143 = distinct !DILexicalBlock(scope: !137, file: !2, line: 86, column: 9) +!144 = !DILocation(line: 87, column: 26, scope: !143) +!145 = !DILocation(line: 87, column: 13, scope: !143) +!146 = !DILocation(line: 88, column: 9, scope: !143) +!147 = !DILocation(line: 91, column: 13, scope: !148) +!148 = distinct !DILexicalBlock(scope: !137, file: !2, line: 90, column: 9) +!149 = !DILocation(line: 94, column: 1, scope: !127) 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 index 76b254e28..d801e3bd2 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.sockaddr_in = type { i16, i16, %struct.in_addr, [8 x i8] } %struct.in_addr = type { i32 } @@ -14,7 +14,7 @@ target triple = "x86_64-unknown-linux-gnu" @.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 { +define dso_local void @CWE126_Buffer_Overread__CWE129_listen_socket_01_bad() #0 !dbg !107 { entry: %data = alloca i32, align 4 %recvResult = alloca i32, align 4 @@ -23,49 +23,49 @@ entry: %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 + #dbg_declare(ptr %data, !111, !DIExpression(), !113) + store i32 -1, ptr %data, align 4, !dbg !114 + #dbg_declare(ptr %recvResult, !115, !DIExpression(), !117) + #dbg_declare(ptr %service, !118, !DIExpression(), !135) + #dbg_declare(ptr %listenSocket, !136, !DIExpression(), !137) + store i32 -1, ptr %listenSocket, align 4, !dbg !137 + #dbg_declare(ptr %acceptSocket, !138, !DIExpression(), !139) + store i32 -1, ptr %acceptSocket, align 4, !dbg !139 + #dbg_declare(ptr %inputBuffer, !140, !DIExpression(), !141) + br label %do.body, !dbg !142 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 + %call = call i32 @socket(i32 noundef 2, i32 noundef 1, i32 noundef 6) #6, !dbg !143 + store i32 %call, ptr %listenSocket, align 4, !dbg !145 + %0 = load i32, ptr %listenSocket, align 4, !dbg !146 + %cmp = icmp eq i32 %0, -1, !dbg !148 + br i1 %cmp, label %if.then, label %if.end, !dbg !148 if.then: ; preds = %do.body - br label %do.end, !dbg !147 + br label %do.end, !dbg !149 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 + call void @llvm.memset.p0.i64(ptr align 4 %service, i8 0, i64 16, i1 false), !dbg !151 + %sin_family = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 0, !dbg !152 + store i16 2, ptr %sin_family, align 4, !dbg !153 + %sin_addr = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 2, !dbg !154 + %s_addr = getelementptr inbounds nuw %struct.in_addr, ptr %sin_addr, i32 0, i32 0, !dbg !155 + store i32 0, ptr %s_addr, align 4, !dbg !156 + %call1 = call zeroext i16 @htons(i16 noundef zeroext 27015) #7, !dbg !157 + %sin_port = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 1, !dbg !158 + store i16 %call1, ptr %sin_port, align 2, !dbg !159 + %1 = load i32, ptr %listenSocket, align 4, !dbg !160 + %call2 = call i32 @bind(i32 noundef %1, ptr noundef %service, i32 noundef 16) #6, !dbg !162 + %cmp3 = icmp eq i32 %call2, -1, !dbg !163 + br i1 %cmp3, label %if.then4, label %if.end5, !dbg !163 if.then4: ; preds = %if.end - br label %do.end, !dbg !163 + br label %do.end, !dbg !164 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 + %2 = load i32, ptr %listenSocket, align 4, !dbg !166 + %call6 = call i32 @listen(i32 noundef %2, i32 noundef 5) #6, !dbg !168 + %cmp7 = icmp eq i32 %call6, -1, !dbg !169 br i1 %cmp7, label %if.then8, label %if.end9, !dbg !169 if.then8: ; preds = %if.end5 @@ -77,196 +77,193 @@ if.end9: ; preds = %if.end5 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 + br i1 %cmp11, label %if.then12, label %if.end13, !dbg !177 if.then12: ; preds = %if.end9 - br label %do.end, !dbg !179 + br label %do.end, !dbg !178 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 + %5 = load i32, ptr %acceptSocket, align 4, !dbg !180 + %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !181 + %call14 = call i64 @recv(i32 noundef %5, ptr noundef %arraydecay, i64 noundef 13, i32 noundef 0), !dbg !182 + %conv = trunc i64 %call14 to i32, !dbg !182 + store i32 %conv, ptr %recvResult, align 4, !dbg !183 + %6 = load i32, ptr %recvResult, align 4, !dbg !184 + %cmp15 = icmp eq i32 %6, -1, !dbg !186 + br i1 %cmp15, label %if.then19, label %lor.lhs.false, !dbg !187 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 + %7 = load i32, ptr %recvResult, align 4, !dbg !188 + %cmp17 = icmp eq i32 %7, 0, !dbg !189 + br i1 %cmp17, label %if.then19, label %if.end20, !dbg !187 if.then19: ; preds = %lor.lhs.false, %if.end13 - br label %do.end, !dbg !192 + br label %do.end, !dbg !190 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 + %8 = load i32, ptr %recvResult, align 4, !dbg !192 + %idxprom = sext i32 %8 to i64, !dbg !193 + %arrayidx = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 %idxprom, !dbg !193 + store i8 0, ptr %arrayidx, align 1, !dbg !194 + %arraydecay21 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !195 + %call22 = call i32 @atoi(ptr noundef %arraydecay21) #8, !dbg !196 + store i32 %call22, ptr %data, align 4, !dbg !197 + br label %do.end, !dbg !198 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 + %9 = load i32, ptr %listenSocket, align 4, !dbg !199 + %cmp23 = icmp ne i32 %9, -1, !dbg !201 + br i1 %cmp23, label %if.then25, label %if.end27, !dbg !201 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 + %10 = load i32, ptr %listenSocket, align 4, !dbg !202 + %call26 = call i32 @close(i32 noundef %10), !dbg !204 + br label %if.end27, !dbg !205 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 + %11 = load i32, ptr %acceptSocket, align 4, !dbg !206 + %cmp28 = icmp ne i32 %11, -1, !dbg !208 + br i1 %cmp28, label %if.then30, label %if.end32, !dbg !208 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 + %12 = load i32, ptr %acceptSocket, align 4, !dbg !209 + %call31 = call i32 @close(i32 noundef %12), !dbg !211 + br label %if.end32, !dbg !212 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 + #dbg_declare(ptr %buffer, !213, !DIExpression(), !218) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !218 + %13 = load i32, ptr %data, align 4, !dbg !219 + %cmp33 = icmp sge i32 %13, 0, !dbg !221 + br i1 %cmp33, label %if.then35, label %if.else, !dbg !221 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 + %14 = load i32, ptr %data, align 4, !dbg !222 + %idxprom36 = sext i32 %14 to i64, !dbg !224 + %arrayidx37 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom36, !dbg !224 + %15 = load i32, ptr %arrayidx37, align 4, !dbg !224 + call void @printIntLine(i32 noundef %15), !dbg !225 + %arraydecay38 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !226 + %16 = load i32, ptr %data, align 4, !dbg !227 + %conv39 = sext i32 %16 to i64, !dbg !227 + %mul = mul i64 %conv39, 4, !dbg !228 + %call40 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay38, i64 noundef %mul), !dbg !229 + br label %if.end41, !dbg !230 if.else: ; preds = %if.end32 - call void @printLine(ptr noundef @.str), !dbg !236 + call void @printLine(ptr noundef @.str), !dbg !231 br label %if.end41 if.end41: ; preds = %if.else, %if.then35 - ret void, !dbg !238 + ret void, !dbg !233 } -; 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 +declare i32 @socket(i32 noundef, i32 noundef, i32 noundef) #1 ; 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 @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 ; Function Attrs: nounwind willreturn memory(none) -declare zeroext i16 @htons(i16 noundef zeroext) #4 +declare zeroext i16 @htons(i16 noundef zeroext) #3 ; Function Attrs: nounwind -declare i32 @bind(i32 noundef, ptr noundef, i32 noundef) #2 +declare i32 @bind(i32 noundef, ptr noundef, i32 noundef) #1 ; Function Attrs: nounwind -declare i32 @listen(i32 noundef, i32 noundef) #2 +declare i32 @listen(i32 noundef, i32 noundef) #1 -declare i32 @accept(i32 noundef, ptr noundef, ptr noundef) #5 +declare i32 @accept(i32 noundef, ptr noundef, ptr noundef) #4 -declare i64 @recv(i32 noundef, ptr noundef, i64 noundef, i32 noundef) #5 +declare i64 @recv(i32 noundef, ptr noundef, i64 noundef, i32 noundef) #4 ; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #6 +declare i32 @atoi(ptr noundef) #5 -declare i32 @close(i32 noundef) #5 +declare i32 @close(i32 noundef) #4 -declare void @printIntLine(i32 noundef) #5 +declare void @printIntLine(i32 noundef) #4 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #4 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_listen_socket_01_good() #0 !dbg !239 { +define dso_local void @CWE126_Buffer_Overread__CWE129_listen_socket_01_good() #0 !dbg !234 { entry: - call void @goodG2B(), !dbg !240 - call void @goodB2G(), !dbg !241 - ret void, !dbg !242 + call void @goodG2B(), !dbg !235 + call void @goodB2G(), !dbg !236 + ret void, !dbg !237 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !243 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !238 { 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 + #dbg_declare(ptr %argc.addr, !243, !DIExpression(), !244) 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 + #dbg_declare(ptr %argv.addr, !245, !DIExpression(), !246) + %call = call i64 @time(ptr noundef null) #6, !dbg !247 + %conv = trunc i64 %call to i32, !dbg !248 + call void @srand(i32 noundef %conv) #6, !dbg !249 + call void @printLine(ptr noundef @.str.1), !dbg !250 + call void @CWE126_Buffer_Overread__CWE129_listen_socket_01_good(), !dbg !251 + call void @printLine(ptr noundef @.str.2), !dbg !252 + call void @printLine(ptr noundef @.str.3), !dbg !253 + call void @CWE126_Buffer_Overread__CWE129_listen_socket_01_bad(), !dbg !254 + call void @printLine(ptr noundef @.str.4), !dbg !255 + ret i32 0, !dbg !256 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !262 { +define internal void @goodG2B() #0 !dbg !257 { 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 + #dbg_declare(ptr %data, !258, !DIExpression(), !259) + store i32 -1, ptr %data, align 4, !dbg !260 + store i32 7, ptr %data, align 4, !dbg !261 + #dbg_declare(ptr %buffer, !262, !DIExpression(), !264) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !264 + %0 = load i32, ptr %data, align 4, !dbg !265 + %cmp = icmp sge i32 %0, 0, !dbg !267 + br i1 %cmp, label %if.then, label %if.else, !dbg !267 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 + %1 = load i32, ptr %data, align 4, !dbg !268 + %idxprom = sext i32 %1 to i64, !dbg !270 + %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !270 + %2 = load i32, ptr %arrayidx, align 4, !dbg !270 + call void @printIntLine(i32 noundef %2), !dbg !271 + %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !272 + %3 = load i32, ptr %data, align 4, !dbg !273 + %conv = sext i32 %3 to i64, !dbg !273 + %mul = mul i64 %conv, 4, !dbg !274 + %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %mul), !dbg !275 + br label %if.end, !dbg !276 if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !283 + call void @printLine(ptr noundef @.str), !dbg !277 br label %if.end if.end: ; preds = %if.else, %if.then - ret void, !dbg !285 + ret void, !dbg !279 } -declare i32 @SAFE_BUFACCESS(...) #5 +declare i32 @SAFE_BUFACCESS(...) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !286 { +define internal void @goodB2G() #0 !dbg !280 { entry: %data = alloca i32, align 4 %recvResult = alloca i32, align 4 @@ -275,159 +272,158 @@ entry: %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 + #dbg_declare(ptr %data, !281, !DIExpression(), !282) + store i32 -1, ptr %data, align 4, !dbg !283 + #dbg_declare(ptr %recvResult, !284, !DIExpression(), !286) + #dbg_declare(ptr %service, !287, !DIExpression(), !288) + #dbg_declare(ptr %listenSocket, !289, !DIExpression(), !290) + store i32 -1, ptr %listenSocket, align 4, !dbg !290 + #dbg_declare(ptr %acceptSocket, !291, !DIExpression(), !292) + store i32 -1, ptr %acceptSocket, align 4, !dbg !292 + #dbg_declare(ptr %inputBuffer, !293, !DIExpression(), !294) + br label %do.body, !dbg !295 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 + %call = call i32 @socket(i32 noundef 2, i32 noundef 1, i32 noundef 6) #6, !dbg !296 + store i32 %call, ptr %listenSocket, align 4, !dbg !298 + %0 = load i32, ptr %listenSocket, align 4, !dbg !299 + %cmp = icmp eq i32 %0, -1, !dbg !301 + br i1 %cmp, label %if.then, label %if.end, !dbg !301 if.then: ; preds = %do.body - br label %do.end, !dbg !309 + br label %do.end, !dbg !302 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 + call void @llvm.memset.p0.i64(ptr align 4 %service, i8 0, i64 16, i1 false), !dbg !304 + %sin_family = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 0, !dbg !305 + store i16 2, ptr %sin_family, align 4, !dbg !306 + %sin_addr = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 2, !dbg !307 + %s_addr = getelementptr inbounds nuw %struct.in_addr, ptr %sin_addr, i32 0, i32 0, !dbg !308 + store i32 0, ptr %s_addr, align 4, !dbg !309 + %call1 = call zeroext i16 @htons(i16 noundef zeroext 27015) #7, !dbg !310 + %sin_port = getelementptr inbounds nuw %struct.sockaddr_in, ptr %service, i32 0, i32 1, !dbg !311 + store i16 %call1, ptr %sin_port, align 2, !dbg !312 + %1 = load i32, ptr %listenSocket, align 4, !dbg !313 + %call2 = call i32 @bind(i32 noundef %1, ptr noundef %service, i32 noundef 16) #6, !dbg !315 + %cmp3 = icmp eq i32 %call2, -1, !dbg !316 + br i1 %cmp3, label %if.then4, label %if.end5, !dbg !316 if.then4: ; preds = %if.end - br label %do.end, !dbg !325 + br label %do.end, !dbg !317 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 + %2 = load i32, ptr %listenSocket, align 4, !dbg !319 + %call6 = call i32 @listen(i32 noundef %2, i32 noundef 5) #6, !dbg !321 + %cmp7 = icmp eq i32 %call6, -1, !dbg !322 + br i1 %cmp7, label %if.then8, label %if.end9, !dbg !322 if.then8: ; preds = %if.end5 - br label %do.end, !dbg !332 + br label %do.end, !dbg !323 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 + %3 = load i32, ptr %listenSocket, align 4, !dbg !325 + %call10 = call i32 @accept(i32 noundef %3, ptr noundef null, ptr noundef null), !dbg !326 + store i32 %call10, ptr %acceptSocket, align 4, !dbg !327 + %4 = load i32, ptr %acceptSocket, align 4, !dbg !328 + %cmp11 = icmp eq i32 %4, -1, !dbg !330 + br i1 %cmp11, label %if.then12, label %if.end13, !dbg !330 if.then12: ; preds = %if.end9 - br label %do.end, !dbg !341 + br label %do.end, !dbg !331 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 + %5 = load i32, ptr %acceptSocket, align 4, !dbg !333 + %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !334 + %call14 = call i64 @recv(i32 noundef %5, ptr noundef %arraydecay, i64 noundef 13, i32 noundef 0), !dbg !335 + %conv = trunc i64 %call14 to i32, !dbg !335 + store i32 %conv, ptr %recvResult, align 4, !dbg !336 + %6 = load i32, ptr %recvResult, align 4, !dbg !337 + %cmp15 = icmp eq i32 %6, -1, !dbg !339 + br i1 %cmp15, label %if.then19, label %lor.lhs.false, !dbg !340 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 + %7 = load i32, ptr %recvResult, align 4, !dbg !341 + %cmp17 = icmp eq i32 %7, 0, !dbg !342 + br i1 %cmp17, label %if.then19, label %if.end20, !dbg !340 if.then19: ; preds = %lor.lhs.false, %if.end13 - br label %do.end, !dbg !354 + br label %do.end, !dbg !343 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 + %8 = load i32, ptr %recvResult, align 4, !dbg !345 + %idxprom = sext i32 %8 to i64, !dbg !346 + %arrayidx = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 %idxprom, !dbg !346 + store i8 0, ptr %arrayidx, align 1, !dbg !347 + %arraydecay21 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !348 + %call22 = call i32 @atoi(ptr noundef %arraydecay21) #8, !dbg !349 + store i32 %call22, ptr %data, align 4, !dbg !350 + br label %do.end, !dbg !351 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 + %9 = load i32, ptr %listenSocket, align 4, !dbg !352 + %cmp23 = icmp ne i32 %9, -1, !dbg !354 + br i1 %cmp23, label %if.then25, label %if.end27, !dbg !354 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 + %10 = load i32, ptr %listenSocket, align 4, !dbg !355 + %call26 = call i32 @close(i32 noundef %10), !dbg !357 + br label %if.end27, !dbg !358 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 + %11 = load i32, ptr %acceptSocket, align 4, !dbg !359 + %cmp28 = icmp ne i32 %11, -1, !dbg !361 + br i1 %cmp28, label %if.then30, label %if.end32, !dbg !361 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 + %12 = load i32, ptr %acceptSocket, align 4, !dbg !362 + %call31 = call i32 @close(i32 noundef %12), !dbg !364 + br label %if.end32, !dbg !365 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 + #dbg_declare(ptr %buffer, !366, !DIExpression(), !368) + call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !368 + %13 = load i32, ptr %data, align 4, !dbg !369 + %cmp33 = icmp sge i32 %13, 0, !dbg !371 + br i1 %cmp33, label %land.lhs.true, label %if.else, !dbg !372 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 + %14 = load i32, ptr %data, align 4, !dbg !373 + %cmp35 = icmp slt i32 %14, 10, !dbg !374 + br i1 %cmp35, label %if.then37, label %if.else, !dbg !372 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 + %15 = load i32, ptr %data, align 4, !dbg !375 + %idxprom38 = sext i32 %15 to i64, !dbg !377 + %arrayidx39 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom38, !dbg !377 + %16 = load i32, ptr %arrayidx39, align 4, !dbg !377 + call void @printIntLine(i32 noundef %16), !dbg !378 + br label %if.end40, !dbg !379 if.else: ; preds = %land.lhs.true, %if.end32 - call void @printLine(ptr noundef @.str.5), !dbg !394 + call void @printLine(ptr noundef @.str.5), !dbg !380 br label %if.end40 if.end40: ; preds = %if.else, %if.then37 - ret void, !dbg !396 + ret void, !dbg !382 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #3 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nounwind } +attributes #7 = { nounwind willreturn memory(none) } +attributes #8 = { nounwind willreturn memory(read) } !llvm.dbg.cu = !{!32} -!llvm.module.flags = !{!96, !97, !98, !99, !100, !101, !102} -!llvm.ident = !{!103} +!llvm.module.flags = !{!99, !100, !101, !102, !103, !104, !105} +!llvm.ident = !{!106} !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c", directory: "/root/testsss/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} @@ -457,11 +453,11 @@ attributes #9 = { nounwind willreturn memory(read) } !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") +!32 = distinct !DICompileUnit(language: DW_LANG_C11, file: !33, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !34, retainedTypes: !80, globals: !98, splitDebugInlining: false, nameTableKind: None) +!33 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c", directory: "/root/testsss/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") +!36 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/socket_type.h", directory: "", checksumkind: CSK_MD5, checksum: "5ca1da466a04f4b8f6d88ec84b75042e") !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) @@ -474,8 +470,8 @@ attributes #9 = { nounwind willreturn memory(read) } !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} +!49 = !DIFile(filename: "/usr/include/netinet/in.h", directory: "", checksumkind: CSK_MD5, checksum: "fbd766480c8cb9a8fe07ee7aa568ee60") +!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, !77, !78, !79} !51 = !DIEnumerator(name: "IPPROTO_IP", value: 0) !52 = !DIEnumerator(name: "IPPROTO_ICMP", value: 1) !53 = !DIEnumerator(name: "IPPROTO_IGMP", value: 2) @@ -497,328 +493,314 @@ attributes #9 = { nounwind willreturn memory(read) } !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) +!72 = !DIEnumerator(name: "IPPROTO_L2TP", value: 115) +!73 = !DIEnumerator(name: "IPPROTO_SCTP", value: 132) +!74 = !DIEnumerator(name: "IPPROTO_UDPLITE", value: 136) +!75 = !DIEnumerator(name: "IPPROTO_MPLS", value: 137) +!76 = !DIEnumerator(name: "IPPROTO_ETHERNET", value: 143) +!77 = !DIEnumerator(name: "IPPROTO_RAW", value: 255) +!78 = !DIEnumerator(name: "IPPROTO_MPTCP", value: 262) +!79 = !DIEnumerator(name: "IPPROTO_MAX", value: 263) +!80 = !{!81, !86, !37} +!81 = !DIDerivedType(tag: DW_TAG_typedef, name: "in_addr_t", file: !49, line: 30, baseType: !82) +!82 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !83, line: 26, baseType: !84) +!83 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "", checksumkind: CSK_MD5, checksum: "256fcabbefa27ca8cf5e6d37525e6e16") +!84 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint32_t", file: !85, line: 42, baseType: !37) +!85 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "e1865d9fe29fe1b5ced550b7ba458f9e") +!86 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !87, size: 64) +!87 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sockaddr", file: !88, line: 183, size: 128, elements: !89) +!88 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/socket.h", directory: "", checksumkind: CSK_MD5, checksum: "71a09f67661e8e55cf505c19b5ddbb85") +!89 = !{!90, !94} +!90 = !DIDerivedType(tag: DW_TAG_member, name: "sa_family", scope: !87, file: !88, line: 185, baseType: !91, size: 16) +!91 = !DIDerivedType(tag: DW_TAG_typedef, name: "sa_family_t", file: !92, line: 28, baseType: !93) +!92 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/sockaddr.h", directory: "", checksumkind: CSK_MD5, checksum: "5066b774f0f3cdb5cbbb5467306060db") +!93 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) +!94 = !DIDerivedType(tag: DW_TAG_member, name: "sa_data", scope: !87, file: !88, line: 186, baseType: !95, size: 112, offset: 16) +!95 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 112, elements: !96) +!96 = !{!97} +!97 = !DISubrange(count: 14) +!98 = !{!0, !7, !12, !17, !22, !27} +!99 = !{i32 7, !"Dwarf Version", i32 5} +!100 = !{i32 2, !"Debug Info Version", i32 3} +!101 = !{i32 1, !"wchar_size", i32 4} +!102 = !{i32 8, !"PIC Level", i32 2} +!103 = !{i32 7, !"PIE Level", i32 2} +!104 = !{i32 7, !"uwtable", i32 2} +!105 = !{i32 7, !"frame-pointer", i32 2} +!106 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} +!107 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_listen_socket_01_bad", scope: !2, file: !2, line: 44, type: !108, scopeLine: 45, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !110) +!108 = !DISubroutineType(types: !109) +!109 = !{null} +!110 = !{} +!111 = !DILocalVariable(name: "data", scope: !107, file: !2, line: 46, type: !112) +!112 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!113 = !DILocation(line: 46, column: 9, scope: !107) +!114 = !DILocation(line: 48, column: 10, scope: !107) +!115 = !DILocalVariable(name: "recvResult", scope: !116, file: !2, line: 54, type: !112) +!116 = distinct !DILexicalBlock(scope: !107, file: !2, line: 49, column: 5) +!117 = !DILocation(line: 54, column: 13, scope: !116) +!118 = !DILocalVariable(name: "service", scope: !116, file: !2, line: 55, type: !119) +!119 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sockaddr_in", file: !49, line: 247, size: 128, elements: !120) +!120 = !{!121, !122, !126, !130} +!121 = !DIDerivedType(tag: DW_TAG_member, name: "sin_family", scope: !119, file: !49, line: 249, baseType: !91, size: 16) +!122 = !DIDerivedType(tag: DW_TAG_member, name: "sin_port", scope: !119, file: !49, line: 250, baseType: !123, size: 16, offset: 16) +!123 = !DIDerivedType(tag: DW_TAG_typedef, name: "in_port_t", file: !49, line: 125, baseType: !124) +!124 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint16_t", file: !83, line: 25, baseType: !125) +!125 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint16_t", file: !85, line: 40, baseType: !93) +!126 = !DIDerivedType(tag: DW_TAG_member, name: "sin_addr", scope: !119, file: !49, line: 251, baseType: !127, size: 32, offset: 32) +!127 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "in_addr", file: !49, line: 31, size: 32, elements: !128) +!128 = !{!129} +!129 = !DIDerivedType(tag: DW_TAG_member, name: "s_addr", scope: !127, file: !49, line: 33, baseType: !81, size: 32) +!130 = !DIDerivedType(tag: DW_TAG_member, name: "sin_zero", scope: !119, file: !49, line: 254, baseType: !131, size: 64, offset: 64) +!131 = !DICompositeType(tag: DW_TAG_array_type, baseType: !132, size: 64, elements: !133) +!132 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) +!133 = !{!134} +!134 = !DISubrange(count: 8) +!135 = !DILocation(line: 55, column: 28, scope: !116) +!136 = !DILocalVariable(name: "listenSocket", scope: !116, file: !2, line: 56, type: !112) +!137 = !DILocation(line: 56, column: 16, scope: !116) +!138 = !DILocalVariable(name: "acceptSocket", scope: !116, file: !2, line: 57, type: !112) +!139 = !DILocation(line: 57, column: 16, scope: !116) +!140 = !DILocalVariable(name: "inputBuffer", scope: !116, file: !2, line: 58, type: !95) +!141 = !DILocation(line: 58, column: 14, scope: !116) +!142 = !DILocation(line: 59, column: 9, scope: !116) +!143 = !DILocation(line: 69, column: 28, scope: !144) +!144 = distinct !DILexicalBlock(scope: !116, file: !2, line: 60, column: 9) +!145 = !DILocation(line: 69, column: 26, scope: !144) +!146 = !DILocation(line: 70, column: 17, scope: !147) +!147 = distinct !DILexicalBlock(scope: !144, file: !2, line: 70, column: 17) +!148 = !DILocation(line: 70, column: 30, scope: !147) +!149 = !DILocation(line: 72, column: 17, scope: !150) +!150 = distinct !DILexicalBlock(scope: !147, file: !2, line: 71, column: 13) +!151 = !DILocation(line: 74, column: 13, scope: !144) +!152 = !DILocation(line: 75, column: 21, scope: !144) +!153 = !DILocation(line: 75, column: 32, scope: !144) +!154 = !DILocation(line: 76, column: 21, scope: !144) +!155 = !DILocation(line: 76, column: 30, scope: !144) +!156 = !DILocation(line: 76, column: 37, scope: !144) +!157 = !DILocation(line: 77, column: 32, scope: !144) +!158 = !DILocation(line: 77, column: 21, scope: !144) +!159 = !DILocation(line: 77, column: 30, scope: !144) +!160 = !DILocation(line: 78, column: 22, scope: !161) +!161 = distinct !DILexicalBlock(scope: !144, file: !2, line: 78, column: 17) +!162 = !DILocation(line: 78, column: 17, scope: !161) +!163 = !DILocation(line: 78, column: 81, scope: !161) +!164 = !DILocation(line: 80, column: 17, scope: !165) +!165 = distinct !DILexicalBlock(scope: !161, file: !2, line: 79, column: 13) +!166 = !DILocation(line: 82, column: 24, scope: !167) +!167 = distinct !DILexicalBlock(scope: !144, file: !2, line: 82, column: 17) +!168 = !DILocation(line: 82, column: 17, scope: !167) +!169 = !DILocation(line: 82, column: 54, scope: !167) !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) +!171 = distinct !DILexicalBlock(scope: !167, file: !2, line: 83, column: 13) +!172 = !DILocation(line: 86, column: 35, scope: !144) +!173 = !DILocation(line: 86, column: 28, scope: !144) +!174 = !DILocation(line: 86, column: 26, scope: !144) !175 = !DILocation(line: 87, column: 17, scope: !176) -!176 = distinct !DILexicalBlock(scope: !141, file: !2, line: 87, column: 17) +!176 = distinct !DILexicalBlock(scope: !144, 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) +!178 = !DILocation(line: 89, column: 17, scope: !179) +!179 = distinct !DILexicalBlock(scope: !176, file: !2, line: 88, column: 13) +!180 = !DILocation(line: 92, column: 31, scope: !144) +!181 = !DILocation(line: 92, column: 45, scope: !144) +!182 = !DILocation(line: 92, column: 26, scope: !144) +!183 = !DILocation(line: 92, column: 24, scope: !144) +!184 = !DILocation(line: 93, column: 17, scope: !185) +!185 = distinct !DILexicalBlock(scope: !144, file: !2, line: 93, column: 17) +!186 = !DILocation(line: 93, column: 28, scope: !185) +!187 = !DILocation(line: 93, column: 44, scope: !185) +!188 = !DILocation(line: 93, column: 47, scope: !185) +!189 = !DILocation(line: 93, column: 58, scope: !185) +!190 = !DILocation(line: 95, column: 17, scope: !191) +!191 = distinct !DILexicalBlock(scope: !185, file: !2, line: 94, column: 13) +!192 = !DILocation(line: 98, column: 25, scope: !144) +!193 = !DILocation(line: 98, column: 13, scope: !144) +!194 = !DILocation(line: 98, column: 37, scope: !144) +!195 = !DILocation(line: 100, column: 25, scope: !144) +!196 = !DILocation(line: 100, column: 20, scope: !144) +!197 = !DILocation(line: 100, column: 18, scope: !144) +!198 = !DILocation(line: 101, column: 9, scope: !144) +!199 = !DILocation(line: 103, column: 13, scope: !200) +!200 = distinct !DILexicalBlock(scope: !116, file: !2, line: 103, column: 13) +!201 = !DILocation(line: 103, column: 26, scope: !200) +!202 = !DILocation(line: 105, column: 26, scope: !203) +!203 = distinct !DILexicalBlock(scope: !200, file: !2, line: 104, column: 9) +!204 = !DILocation(line: 105, column: 13, scope: !203) +!205 = !DILocation(line: 106, column: 9, scope: !203) +!206 = !DILocation(line: 107, column: 13, scope: !207) +!207 = distinct !DILexicalBlock(scope: !116, file: !2, line: 107, column: 13) +!208 = !DILocation(line: 107, column: 26, scope: !207) +!209 = !DILocation(line: 109, column: 26, scope: !210) +!210 = distinct !DILexicalBlock(scope: !207, file: !2, line: 108, column: 9) +!211 = !DILocation(line: 109, column: 13, scope: !210) +!212 = !DILocation(line: 110, column: 9, scope: !210) +!213 = !DILocalVariable(name: "buffer", scope: !214, file: !2, line: 119, type: !215) +!214 = distinct !DILexicalBlock(scope: !107, file: !2, line: 118, column: 5) +!215 = !DICompositeType(tag: DW_TAG_array_type, baseType: !112, size: 320, elements: !216) +!216 = !{!217} +!217 = !DISubrange(count: 10) +!218 = !DILocation(line: 119, column: 13, scope: !214) +!219 = !DILocation(line: 122, column: 13, scope: !220) +!220 = distinct !DILexicalBlock(scope: !214, file: !2, line: 122, column: 13) +!221 = !DILocation(line: 122, column: 18, scope: !220) +!222 = !DILocation(line: 124, column: 33, scope: !223) +!223 = distinct !DILexicalBlock(scope: !220, file: !2, line: 123, column: 9) +!224 = !DILocation(line: 124, column: 26, scope: !223) +!225 = !DILocation(line: 124, column: 13, scope: !223) +!226 = !DILocation(line: 125, column: 30, scope: !223) +!227 = !DILocation(line: 125, column: 38, scope: !223) +!228 = !DILocation(line: 125, column: 42, scope: !223) +!229 = !DILocation(line: 125, column: 13, scope: !223) +!230 = !DILocation(line: 126, column: 9, scope: !223) +!231 = !DILocation(line: 129, column: 13, scope: !232) +!232 = distinct !DILexicalBlock(scope: !220, file: !2, line: 128, column: 9) +!233 = !DILocation(line: 132, column: 1, scope: !107) +!234 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_listen_socket_01_good", scope: !2, file: !2, line: 252, type: !108, scopeLine: 253, spFlags: DISPFlagDefinition, unit: !32) +!235 = !DILocation(line: 254, column: 5, scope: !234) +!236 = !DILocation(line: 255, column: 5, scope: !234) +!237 = !DILocation(line: 256, column: 1, scope: !234) +!238 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 267, type: !239, scopeLine: 268, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !110) +!239 = !DISubroutineType(types: !240) +!240 = !{!112, !112, !241} +!241 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !242, size: 64) +!242 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!243 = !DILocalVariable(name: "argc", arg: 1, scope: !238, file: !2, line: 267, type: !112) +!244 = !DILocation(line: 267, column: 14, scope: !238) +!245 = !DILocalVariable(name: "argv", arg: 2, scope: !238, file: !2, line: 267, type: !241) +!246 = !DILocation(line: 267, column: 27, scope: !238) +!247 = !DILocation(line: 270, column: 22, scope: !238) +!248 = !DILocation(line: 270, column: 12, scope: !238) +!249 = !DILocation(line: 270, column: 5, scope: !238) +!250 = !DILocation(line: 272, column: 5, scope: !238) +!251 = !DILocation(line: 273, column: 5, scope: !238) +!252 = !DILocation(line: 274, column: 5, scope: !238) +!253 = !DILocation(line: 277, column: 5, scope: !238) +!254 = !DILocation(line: 278, column: 5, scope: !238) +!255 = !DILocation(line: 279, column: 5, scope: !238) +!256 = !DILocation(line: 281, column: 5, scope: !238) +!257 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 139, type: !108, scopeLine: 140, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !110) +!258 = !DILocalVariable(name: "data", scope: !257, file: !2, line: 141, type: !112) +!259 = !DILocation(line: 141, column: 9, scope: !257) +!260 = !DILocation(line: 143, column: 10, scope: !257) +!261 = !DILocation(line: 146, column: 10, scope: !257) +!262 = !DILocalVariable(name: "buffer", scope: !263, file: !2, line: 148, type: !215) +!263 = distinct !DILexicalBlock(scope: !257, file: !2, line: 147, column: 5) +!264 = !DILocation(line: 148, column: 13, scope: !263) +!265 = !DILocation(line: 151, column: 13, scope: !266) +!266 = distinct !DILexicalBlock(scope: !263, file: !2, line: 151, column: 13) +!267 = !DILocation(line: 151, column: 18, scope: !266) +!268 = !DILocation(line: 153, column: 33, scope: !269) +!269 = distinct !DILexicalBlock(scope: !266, file: !2, line: 152, column: 9) +!270 = !DILocation(line: 153, column: 26, scope: !269) +!271 = !DILocation(line: 153, column: 13, scope: !269) +!272 = !DILocation(line: 154, column: 28, scope: !269) +!273 = !DILocation(line: 154, column: 36, scope: !269) +!274 = !DILocation(line: 154, column: 40, scope: !269) +!275 = !DILocation(line: 154, column: 13, scope: !269) +!276 = !DILocation(line: 155, column: 9, scope: !269) +!277 = !DILocation(line: 158, column: 13, scope: !278) +!278 = distinct !DILexicalBlock(scope: !266, file: !2, line: 157, column: 9) +!279 = !DILocation(line: 161, column: 1, scope: !257) +!280 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 164, type: !108, scopeLine: 165, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !110) +!281 = !DILocalVariable(name: "data", scope: !280, file: !2, line: 166, type: !112) +!282 = !DILocation(line: 166, column: 9, scope: !280) +!283 = !DILocation(line: 168, column: 10, scope: !280) +!284 = !DILocalVariable(name: "recvResult", scope: !285, file: !2, line: 174, type: !112) +!285 = distinct !DILexicalBlock(scope: !280, file: !2, line: 169, column: 5) +!286 = !DILocation(line: 174, column: 13, scope: !285) +!287 = !DILocalVariable(name: "service", scope: !285, file: !2, line: 175, type: !119) +!288 = !DILocation(line: 175, column: 28, scope: !285) +!289 = !DILocalVariable(name: "listenSocket", scope: !285, file: !2, line: 176, type: !112) +!290 = !DILocation(line: 176, column: 16, scope: !285) +!291 = !DILocalVariable(name: "acceptSocket", scope: !285, file: !2, line: 177, type: !112) +!292 = !DILocation(line: 177, column: 16, scope: !285) +!293 = !DILocalVariable(name: "inputBuffer", scope: !285, file: !2, line: 178, type: !95) +!294 = !DILocation(line: 178, column: 14, scope: !285) +!295 = !DILocation(line: 179, column: 9, scope: !285) +!296 = !DILocation(line: 189, column: 28, scope: !297) +!297 = distinct !DILexicalBlock(scope: !285, file: !2, line: 180, column: 9) +!298 = !DILocation(line: 189, column: 26, scope: !297) +!299 = !DILocation(line: 190, column: 17, scope: !300) +!300 = distinct !DILexicalBlock(scope: !297, file: !2, line: 190, column: 17) +!301 = !DILocation(line: 190, column: 30, scope: !300) +!302 = !DILocation(line: 192, column: 17, scope: !303) +!303 = distinct !DILexicalBlock(scope: !300, file: !2, line: 191, column: 13) +!304 = !DILocation(line: 194, column: 13, scope: !297) +!305 = !DILocation(line: 195, column: 21, scope: !297) +!306 = !DILocation(line: 195, column: 32, scope: !297) +!307 = !DILocation(line: 196, column: 21, scope: !297) +!308 = !DILocation(line: 196, column: 30, scope: !297) +!309 = !DILocation(line: 196, column: 37, scope: !297) +!310 = !DILocation(line: 197, column: 32, scope: !297) +!311 = !DILocation(line: 197, column: 21, scope: !297) +!312 = !DILocation(line: 197, column: 30, scope: !297) +!313 = !DILocation(line: 198, column: 22, scope: !314) +!314 = distinct !DILexicalBlock(scope: !297, file: !2, line: 198, column: 17) +!315 = !DILocation(line: 198, column: 17, scope: !314) +!316 = !DILocation(line: 198, column: 81, scope: !314) +!317 = !DILocation(line: 200, column: 17, scope: !318) +!318 = distinct !DILexicalBlock(scope: !314, file: !2, line: 199, column: 13) +!319 = !DILocation(line: 202, column: 24, scope: !320) +!320 = distinct !DILexicalBlock(scope: !297, file: !2, line: 202, column: 17) +!321 = !DILocation(line: 202, column: 17, scope: !320) +!322 = !DILocation(line: 202, column: 54, scope: !320) +!323 = !DILocation(line: 204, column: 17, scope: !324) +!324 = distinct !DILexicalBlock(scope: !320, file: !2, line: 203, column: 13) +!325 = !DILocation(line: 206, column: 35, scope: !297) +!326 = !DILocation(line: 206, column: 28, scope: !297) +!327 = !DILocation(line: 206, column: 26, scope: !297) +!328 = !DILocation(line: 207, column: 17, scope: !329) +!329 = distinct !DILexicalBlock(scope: !297, file: !2, line: 207, column: 17) +!330 = !DILocation(line: 207, column: 30, scope: !329) +!331 = !DILocation(line: 209, column: 17, scope: !332) +!332 = distinct !DILexicalBlock(scope: !329, file: !2, line: 208, column: 13) +!333 = !DILocation(line: 212, column: 31, scope: !297) +!334 = !DILocation(line: 212, column: 45, scope: !297) +!335 = !DILocation(line: 212, column: 26, scope: !297) +!336 = !DILocation(line: 212, column: 24, scope: !297) +!337 = !DILocation(line: 213, column: 17, scope: !338) +!338 = distinct !DILexicalBlock(scope: !297, file: !2, line: 213, column: 17) +!339 = !DILocation(line: 213, column: 28, scope: !338) +!340 = !DILocation(line: 213, column: 44, scope: !338) +!341 = !DILocation(line: 213, column: 47, scope: !338) +!342 = !DILocation(line: 213, column: 58, scope: !338) +!343 = !DILocation(line: 215, column: 17, scope: !344) +!344 = distinct !DILexicalBlock(scope: !338, file: !2, line: 214, column: 13) +!345 = !DILocation(line: 218, column: 25, scope: !297) +!346 = !DILocation(line: 218, column: 13, scope: !297) +!347 = !DILocation(line: 218, column: 37, scope: !297) +!348 = !DILocation(line: 220, column: 25, scope: !297) +!349 = !DILocation(line: 220, column: 20, scope: !297) +!350 = !DILocation(line: 220, column: 18, scope: !297) +!351 = !DILocation(line: 221, column: 9, scope: !297) +!352 = !DILocation(line: 223, column: 13, scope: !353) +!353 = distinct !DILexicalBlock(scope: !285, file: !2, line: 223, column: 13) +!354 = !DILocation(line: 223, column: 26, scope: !353) +!355 = !DILocation(line: 225, column: 26, scope: !356) +!356 = distinct !DILexicalBlock(scope: !353, file: !2, line: 224, column: 9) +!357 = !DILocation(line: 225, column: 13, scope: !356) +!358 = !DILocation(line: 226, column: 9, scope: !356) +!359 = !DILocation(line: 227, column: 13, scope: !360) +!360 = distinct !DILexicalBlock(scope: !285, file: !2, line: 227, column: 13) +!361 = !DILocation(line: 227, column: 26, scope: !360) +!362 = !DILocation(line: 229, column: 26, scope: !363) +!363 = distinct !DILexicalBlock(scope: !360, file: !2, line: 228, column: 9) +!364 = !DILocation(line: 229, column: 13, scope: !363) +!365 = !DILocation(line: 230, column: 9, scope: !363) +!366 = !DILocalVariable(name: "buffer", scope: !367, file: !2, line: 239, type: !215) +!367 = distinct !DILexicalBlock(scope: !280, file: !2, line: 238, column: 5) +!368 = !DILocation(line: 239, column: 13, scope: !367) +!369 = !DILocation(line: 241, column: 13, scope: !370) +!370 = distinct !DILexicalBlock(scope: !367, file: !2, line: 241, column: 13) +!371 = !DILocation(line: 241, column: 18, scope: !370) +!372 = !DILocation(line: 241, column: 23, scope: !370) +!373 = !DILocation(line: 241, column: 26, scope: !370) +!374 = !DILocation(line: 241, column: 31, scope: !370) +!375 = !DILocation(line: 243, column: 33, scope: !376) +!376 = distinct !DILexicalBlock(scope: !370, file: !2, line: 242, column: 9) +!377 = !DILocation(line: 243, column: 26, scope: !376) +!378 = !DILocation(line: 243, column: 13, scope: !376) +!379 = !DILocation(line: 244, column: 9, scope: !376) +!380 = !DILocation(line: 247, column: 13, scope: !381) +!381 = distinct !DILexicalBlock(scope: !370, file: !2, line: 246, column: 9) +!382 = !DILocation(line: 250, column: 1, scope: !280) 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 index 06b58a4aa..9cf29c375 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,11 +15,11 @@ entry: %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 + #dbg_declare(ptr %data, !40, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !45, !DIExpression(), !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 @@ -34,27 +34,27 @@ entry: 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 + #dbg_declare(ptr %dest, !58, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay4) #6, !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 + %call7 = call i64 @strlen(ptr noundef %arraydecay6) #6, !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 + %call13 = call i64 @strlen(ptr noundef %arraydecay12) #6, !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 @@ -64,23 +64,20 @@ entry: 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 void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #4 +declare i64 @strlen(ptr noundef) #3 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #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) #5 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE126_Buffer_Overread__char_alloca_memcpy_01_good() #0 !dbg !89 { @@ -97,12 +94,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !97, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !99, !DIExpression(), !100) + %call = call i64 @time(ptr noundef null) #7, !dbg !101 %conv = trunc i64 %call to i32, !dbg !102 - call void @srand(i32 noundef %conv) #8, !dbg !103 + call void @srand(i32 noundef %conv) #7, !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 @@ -113,10 +110,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #6 +declare void @srand(i32 noundef) #5 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #6 +declare i64 @time(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !111 { @@ -125,11 +122,11 @@ entry: %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 + #dbg_declare(ptr %data, !112, !DIExpression(), !113) + #dbg_declare(ptr %dataBadBuffer, !114, !DIExpression(), !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 + #dbg_declare(ptr %dataGoodBuffer, !117, !DIExpression(), !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 @@ -144,27 +141,27 @@ entry: 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 + #dbg_declare(ptr %dest, !130, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay4) #6, !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 + %call7 = call i64 @strlen(ptr noundef %arraydecay6) #6, !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 + %call13 = call i64 @strlen(ptr noundef %arraydecay12) #6, !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 @@ -174,15 +171,14 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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} @@ -190,7 +186,7 @@ attributes #8 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c", directory: "/root/testsss/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} @@ -210,8 +206,8 @@ attributes #8 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c", directory: "/root/testsss/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) @@ -223,7 +219,7 @@ attributes #8 = { nounwind } !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"} +!35 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -277,7 +273,7 @@ attributes #8 = { nounwind } !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) +!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) !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) 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 index 9a8a4be43..00d1881bb 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -17,9 +17,9 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !46) + #dbg_declare(ptr %dataGoodBuffer, !47, !DIExpression(), !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 @@ -30,15 +30,15 @@ entry: 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 + #dbg_declare(ptr %i, !60, !DIExpression(), !65) + #dbg_declare(ptr %destLen, !66, !DIExpression(), !67) + #dbg_declare(ptr %dest, !68, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay6) #5, !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 @@ -52,10 +52,10 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx7 = getelementptr inbounds nuw 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 + %arrayidx8 = getelementptr inbounds nuw [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 @@ -78,18 +78,15 @@ for.end: ; preds = %for.cond 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 +declare i64 @strlen(ptr noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE126_Buffer_Overread__char_declare_loop_01_good() #0 !dbg !106 { @@ -106,12 +103,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !114, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !116, !DIExpression(), !117) + %call = call i64 @time(ptr noundef null) #6, !dbg !118 %conv = trunc i64 %call to i32, !dbg !119 - call void @srand(i32 noundef %conv) #7, !dbg !120 + call void @srand(i32 noundef %conv) #6, !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 @@ -122,10 +119,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 +declare void @srand(i32 noundef) #4 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 +declare i64 @time(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !128 { @@ -136,9 +133,9 @@ entry: %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 + #dbg_declare(ptr %data, !129, !DIExpression(), !130) + #dbg_declare(ptr %dataBadBuffer, !131, !DIExpression(), !132) + #dbg_declare(ptr %dataGoodBuffer, !133, !DIExpression(), !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 @@ -149,15 +146,15 @@ entry: 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 + #dbg_declare(ptr %i, !143, !DIExpression(), !145) + #dbg_declare(ptr %destLen, !146, !DIExpression(), !147) + #dbg_declare(ptr %dest, !148, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay6) #5, !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 @@ -175,10 +172,10 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx8 = getelementptr inbounds nuw 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 + %arrayidx9 = getelementptr inbounds nuw [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 @@ -207,18 +204,17 @@ for.end: ; preds = %for.cond ret void, !dbg !194 } -declare i32 @BOF_CHECK_GEP(...) #4 +declare i32 @BOF_CHECK_GEP(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} @@ -226,7 +222,7 @@ attributes #7 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c", directory: "/root/testsss/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} @@ -246,8 +242,8 @@ attributes #7 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c", directory: "/root/testsss/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} @@ -258,7 +254,7 @@ attributes #7 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -286,8 +282,8 @@ attributes #7 = { nounwind } !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") +!62 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !63, line: 18, baseType: !64) +!63 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) @@ -330,7 +326,7 @@ attributes #7 = { nounwind } !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) +!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) !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) 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 index f50482cac..4bd071b24 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,9 +15,9 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !41) + #dbg_declare(ptr %dataBadBuffer, !42, !DIExpression(), !46) + #dbg_declare(ptr %dataGoodBuffer, !47, !DIExpression(), !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 @@ -28,27 +28,27 @@ entry: 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 + #dbg_declare(ptr %dest, !60, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay7) #6, !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 + %call10 = call i64 @strlen(ptr noundef %arraydecay9) #6, !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 + %call16 = call i64 @strlen(ptr noundef %arraydecay15) #6, !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 @@ -58,23 +58,20 @@ entry: 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 void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #4 +declare i64 @strlen(ptr noundef) #3 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #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) #5 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE126_Buffer_Overread__char_declare_memcpy_01_good() #0 !dbg !88 { @@ -91,12 +88,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !96, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !98, !DIExpression(), !99) + %call = call i64 @time(ptr noundef null) #7, !dbg !100 %conv = trunc i64 %call to i32, !dbg !101 - call void @srand(i32 noundef %conv) #8, !dbg !102 + call void @srand(i32 noundef %conv) #7, !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 @@ -107,10 +104,10 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #6 +declare void @srand(i32 noundef) #5 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #6 +declare i64 @time(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !110 { @@ -119,9 +116,9 @@ entry: %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 + #dbg_declare(ptr %data, !111, !DIExpression(), !112) + #dbg_declare(ptr %dataBadBuffer, !113, !DIExpression(), !114) + #dbg_declare(ptr %dataGoodBuffer, !115, !DIExpression(), !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 @@ -132,27 +129,27 @@ entry: 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 + #dbg_declare(ptr %dest, !125, !DIExpression(), !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 + %call = call i64 @strlen(ptr noundef %arraydecay7) #6, !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 + %call10 = call i64 @strlen(ptr noundef %arraydecay9) #6, !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 + %call16 = call i64 @strlen(ptr noundef %arraydecay15) #6, !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 @@ -162,15 +159,14 @@ entry: 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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} @@ -178,7 +174,7 @@ attributes #8 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c", directory: "/root/testsss/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} @@ -198,8 +194,8 @@ attributes #8 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c", directory: "/root/testsss/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} @@ -210,7 +206,7 @@ attributes #8 = { nounwind } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -264,7 +260,7 @@ attributes #8 = { nounwind } !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) +!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) !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) 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 index 8e65739f4..2df88b17d 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,237 +15,233 @@ entry: %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 + #dbg_declare(ptr %data, !41, !DIExpression(), !42) store ptr null, ptr %data, align 8, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef 50) #8, !dbg !44 + %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !48 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !50 - unreachable, !dbg !50 + call void @exit(i32 noundef -1) #8, !dbg !49 + unreachable, !dbg !49 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 + %1 = load ptr, ptr %data, align 8, !dbg !51 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 49, i1 false), !dbg !52 + %2 = load ptr, ptr %data, align 8, !dbg !53 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 49, !dbg !53 + store i8 0, ptr %arrayidx, align 1, !dbg !54 + #dbg_declare(ptr %i, !55, !DIExpression(), !60) + #dbg_declare(ptr %destLen, !61, !DIExpression(), !62) + #dbg_declare(ptr %dest, !63, !DIExpression(), !67) + %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !68 + call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !68 + %arrayidx1 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !69 + store i8 0, ptr %arrayidx1, align 1, !dbg !70 + %arraydecay2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !71 + %call3 = call i64 @strlen(ptr noundef %arraydecay2) #9, !dbg !72 + store i64 %call3, ptr %destLen, align 8, !dbg !73 + %3 = load ptr, ptr %data, align 8, !dbg !74 + %4 = load i64, ptr %destLen, align 8, !dbg !75 + %sub = sub i64 %4, 1, !dbg !76 + %call4 = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %3, i64 noundef %sub, i32 noundef 1), !dbg !77 + store i64 0, ptr %i, align 8, !dbg !78 + br label %for.cond, !dbg !80 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 + %5 = load i64, ptr %i, align 8, !dbg !81 + %6 = load i64, ptr %destLen, align 8, !dbg !83 + %cmp5 = icmp ult i64 %5, %6, !dbg !84 + br i1 %cmp5, label %for.body, label %for.end, !dbg !85 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 + %7 = load ptr, ptr %data, align 8, !dbg !86 + %8 = load i64, ptr %i, align 8, !dbg !88 + %arrayidx6 = getelementptr inbounds nuw i8, ptr %7, i64 %8, !dbg !86 + %9 = load i8, ptr %arrayidx6, align 1, !dbg !86 + %10 = load i64, ptr %i, align 8, !dbg !89 + %arrayidx7 = getelementptr inbounds nuw [100 x i8], ptr %dest, i64 0, i64 %10, !dbg !90 + store i8 %9, ptr %arrayidx7, align 1, !dbg !91 + br label %for.inc, !dbg !92 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 + %11 = load i64, ptr %i, align 8, !dbg !93 + %inc = add i64 %11, 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 - %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 + %12 = load ptr, ptr %data, align 8, !dbg !98 + %13 = load i64, ptr %destLen, align 8, !dbg !99 + %mul = mul i64 %13, 1, !dbg !100 + %sub8 = sub i64 %mul, 1, !dbg !101 + %call9 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %12, i64 noundef %sub8), !dbg !102 + %arrayidx10 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !103 + store i8 0, ptr %arrayidx10, align 1, !dbg !104 + %arraydecay11 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !105 + call void @printLine(ptr noundef %arraydecay11), !dbg !106 + %14 = load ptr, ptr %data, align 8, !dbg !107 + call void @free(ptr noundef %14) #10, !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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #5 +declare i64 @strlen(ptr noundef) #4 -declare i32 @BOF_CHECK_GEP(...) #6 +declare i32 @BOF_CHECK_GEP(...) #5 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #7 +declare void @free(ptr noundef) #6 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_char_loop_01_good() #0 !dbg !111 { +define dso_local void @CWE126_Buffer_Overread__malloc_char_loop_01_good() #0 !dbg !110 { entry: - call void @goodG2B(), !dbg !112 - ret void, !dbg !113 + 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 !114 { +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 !119, metadata !DIExpression()), !dbg !120 + #dbg_declare(ptr %argc.addr, !118, !DIExpression(), !119) 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 + #dbg_declare(ptr %argv.addr, !120, !DIExpression(), !121) + %call = call i64 @time(ptr noundef null) #10, !dbg !122 + %conv = trunc i64 %call to i32, !dbg !123 + call void @srand(i32 noundef %conv) #10, !dbg !124 + call void @printLine(ptr noundef @.str), !dbg !125 + call void @CWE126_Buffer_Overread__malloc_char_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_char_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) #7 +declare void @srand(i32 noundef) #6 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 +declare i64 @time(ptr noundef) #6 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !133 { +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 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 + #dbg_declare(ptr %data, !133, !DIExpression(), !134) + store ptr null, ptr %data, align 8, !dbg !135 + %call = call noalias ptr @malloc(i64 noundef 100) #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 !140 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !143 - unreachable, !dbg !143 + call void @exit(i32 noundef -1) #8, !dbg !141 + unreachable, !dbg !141 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 + %1 = load ptr, ptr %data, align 8, !dbg !143 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 99, i1 false), !dbg !144 + %2 = load ptr, ptr %data, align 8, !dbg !145 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 99, !dbg !145 + store i8 0, ptr %arrayidx, align 1, !dbg !146 + #dbg_declare(ptr %i, !147, !DIExpression(), !149) + #dbg_declare(ptr %destLen, !150, !DIExpression(), !151) + #dbg_declare(ptr %dest, !152, !DIExpression(), !153) + %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !154 + call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !154 + %arrayidx1 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !155 + store i8 0, ptr %arrayidx1, align 1, !dbg !156 + %arraydecay2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !157 + %call3 = call i64 @strlen(ptr noundef %arraydecay2) #9, !dbg !158 + store i64 %call3, ptr %destLen, align 8, !dbg !159 + %3 = load ptr, ptr %data, align 8, !dbg !160 + %4 = load i64, ptr %destLen, align 8, !dbg !161 + %sub = sub i64 %4, 1, !dbg !162 + %call4 = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %3, i64 noundef %sub, i32 noundef 0), !dbg !163 + store i64 0, ptr %i, align 8, !dbg !164 + br label %for.cond, !dbg !166 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 + %5 = load i64, ptr %i, align 8, !dbg !167 + %6 = load i64, ptr %destLen, align 8, !dbg !169 + %cmp5 = icmp ult i64 %5, %6, !dbg !170 + br i1 %cmp5, label %for.body, label %for.end, !dbg !171 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 + %7 = load ptr, ptr %data, align 8, !dbg !172 + %8 = load i64, ptr %i, align 8, !dbg !174 + %arrayidx6 = getelementptr inbounds nuw i8, ptr %7, i64 %8, !dbg !172 + %9 = load i8, ptr %arrayidx6, align 1, !dbg !172 + %10 = load i64, ptr %i, align 8, !dbg !175 + %arrayidx7 = getelementptr inbounds nuw [100 x i8], ptr %dest, i64 0, i64 %10, !dbg !176 + store i8 %9, ptr %arrayidx7, align 1, !dbg !177 + %11 = load ptr, ptr %data, align 8, !dbg !178 + %12 = load i64, ptr %i, align 8, !dbg !179 + %add = add i64 %12, 1, !dbg !180 + %mul = mul i64 %add, 1, !dbg !181 + %sub8 = sub i64 %mul, 1, !dbg !182 + %call9 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %11, i64 noundef %sub8), !dbg !183 + br label %for.inc, !dbg !184 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 + %13 = load i64, ptr %i, align 8, !dbg !185 + %inc = add i64 %13, 1, !dbg !185 + store i64 %inc, ptr %i, align 8, !dbg !185 + br label %for.cond, !dbg !186, !llvm.loop !187 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 + %14 = load ptr, ptr %data, align 8, !dbg !189 + %15 = load i64, ptr %destLen, align 8, !dbg !190 + %mul10 = mul i64 %15, 1, !dbg !191 + %sub11 = sub i64 %mul10, 1, !dbg !192 + %call12 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %14, i64 noundef %sub11), !dbg !193 + %arrayidx13 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !194 + store i8 0, ptr %arrayidx13, align 1, !dbg !195 + %arraydecay14 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !196 + call void @printLine(ptr noundef %arraydecay14), !dbg !197 + %16 = load ptr, ptr %data, align 8, !dbg !198 + call void @free(ptr noundef %16) #10, !dbg !199 + ret void, !dbg !200 } -declare i32 @SAFE_BUFACCESS(...) #6 +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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nounwind allocsize(0) } +attributes #8 = { noreturn nounwind } +attributes #9 = { nounwind willreturn memory(read) } +attributes #10 = { nounwind } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} @@ -253,7 +249,7 @@ attributes #11 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c", directory: "/root/testsss/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} @@ -273,8 +269,8 @@ attributes #11 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c", directory: "/root/testsss/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) @@ -287,7 +283,7 @@ attributes #11 = { nounwind } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -300,157 +296,155 @@ attributes #11 = { nounwind } !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) +!49 = !DILocation(line: 29, column: 24, scope: !50) +!50 = distinct !DILexicalBlock(scope: !47, file: !2, line: 29, column: 23) +!51 = !DILocation(line: 30, column: 12, scope: !37) +!52 = !DILocation(line: 30, column: 5, scope: !37) +!53 = !DILocation(line: 31, column: 5, scope: !37) +!54 = !DILocation(line: 31, column: 16, scope: !37) +!55 = !DILocalVariable(name: "i", scope: !56, file: !2, line: 33, type: !57) +!56 = distinct !DILexicalBlock(scope: !37, file: !2, line: 32, column: 5) +!57 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !58, line: 18, baseType: !59) +!58 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") +!59 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!60 = !DILocation(line: 33, column: 16, scope: !56) +!61 = !DILocalVariable(name: "destLen", scope: !56, file: !2, line: 33, type: !57) +!62 = !DILocation(line: 33, column: 19, scope: !56) +!63 = !DILocalVariable(name: "dest", scope: !56, file: !2, line: 34, type: !64) +!64 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !65) +!65 = !{!66} +!66 = !DISubrange(count: 100) +!67 = !DILocation(line: 34, column: 14, scope: !56) +!68 = !DILocation(line: 35, column: 9, scope: !56) +!69 = !DILocation(line: 36, column: 9, scope: !56) +!70 = !DILocation(line: 36, column: 21, scope: !56) +!71 = !DILocation(line: 37, column: 26, scope: !56) +!72 = !DILocation(line: 37, column: 19, scope: !56) +!73 = !DILocation(line: 37, column: 17, scope: !56) +!74 = !DILocation(line: 40, column: 23, scope: !56) +!75 = !DILocation(line: 40, column: 29, scope: !56) +!76 = !DILocation(line: 40, column: 37, scope: !56) +!77 = !DILocation(line: 40, column: 9, scope: !56) +!78 = !DILocation(line: 41, column: 16, scope: !79) +!79 = distinct !DILexicalBlock(scope: !56, file: !2, line: 41, column: 9) +!80 = !DILocation(line: 41, column: 14, scope: !79) +!81 = !DILocation(line: 41, column: 21, scope: !82) +!82 = distinct !DILexicalBlock(scope: !79, file: !2, line: 41, column: 9) +!83 = !DILocation(line: 41, column: 25, scope: !82) +!84 = !DILocation(line: 41, column: 23, scope: !82) +!85 = !DILocation(line: 41, column: 9, scope: !79) +!86 = !DILocation(line: 43, column: 23, scope: !87) +!87 = distinct !DILexicalBlock(scope: !82, file: !2, line: 42, column: 9) +!88 = !DILocation(line: 43, column: 28, scope: !87) +!89 = !DILocation(line: 43, column: 18, scope: !87) +!90 = !DILocation(line: 43, column: 13, scope: !87) +!91 = !DILocation(line: 43, column: 21, scope: !87) +!92 = !DILocation(line: 44, column: 9, scope: !87) +!93 = !DILocation(line: 41, column: 35, scope: !82) +!94 = !DILocation(line: 41, column: 9, scope: !82) +!95 = distinct !{!95, !85, !96, !97} +!96 = !DILocation(line: 44, column: 9, scope: !79) +!97 = !{!"llvm.loop.mustprogress"} +!98 = !DILocation(line: 45, column: 26, scope: !56) +!99 = !DILocation(line: 45, column: 32, scope: !56) +!100 = !DILocation(line: 45, column: 40, scope: !56) +!101 = !DILocation(line: 45, column: 55, scope: !56) +!102 = !DILocation(line: 45, column: 9, scope: !56) +!103 = !DILocation(line: 46, column: 9, scope: !56) +!104 = !DILocation(line: 46, column: 21, scope: !56) +!105 = !DILocation(line: 47, column: 19, scope: !56) +!106 = !DILocation(line: 47, column: 9, scope: !56) +!107 = !DILocation(line: 48, column: 14, scope: !56) +!108 = !DILocation(line: 48, column: 9, scope: !56) +!109 = !DILocation(line: 50, column: 1, scope: !37) +!110 = 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) +!111 = !DILocation(line: 89, column: 5, scope: !110) +!112 = !DILocation(line: 90, column: 1, scope: !110) +!113 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 102, type: !114, scopeLine: 103, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) +!114 = !DISubroutineType(types: !115) +!115 = !{!116, !116, !117} +!116 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!117 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) +!118 = !DILocalVariable(name: "argc", arg: 1, scope: !113, file: !2, line: 102, type: !116) +!119 = !DILocation(line: 102, column: 14, scope: !113) +!120 = !DILocalVariable(name: "argv", arg: 2, scope: !113, file: !2, line: 102, type: !117) +!121 = !DILocation(line: 102, column: 27, scope: !113) +!122 = !DILocation(line: 105, column: 22, scope: !113) +!123 = !DILocation(line: 105, column: 12, scope: !113) +!124 = !DILocation(line: 105, column: 5, scope: !113) +!125 = !DILocation(line: 107, column: 5, scope: !113) +!126 = !DILocation(line: 108, column: 5, scope: !113) +!127 = !DILocation(line: 109, column: 5, scope: !113) +!128 = !DILocation(line: 112, column: 5, scope: !113) +!129 = !DILocation(line: 113, column: 5, scope: !113) +!130 = !DILocation(line: 114, column: 5, scope: !113) +!131 = !DILocation(line: 116, column: 5, scope: !113) +!132 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 57, type: !38, scopeLine: 58, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) +!133 = !DILocalVariable(name: "data", scope: !132, file: !2, line: 59, type: !25) +!134 = !DILocation(line: 59, column: 12, scope: !132) +!135 = !DILocation(line: 60, column: 10, scope: !132) +!136 = !DILocation(line: 62, column: 20, scope: !132) +!137 = !DILocation(line: 62, column: 10, scope: !132) +!138 = !DILocation(line: 63, column: 9, scope: !139) +!139 = distinct !DILexicalBlock(scope: !132, file: !2, line: 63, column: 9) +!140 = !DILocation(line: 63, column: 14, scope: !139) +!141 = !DILocation(line: 63, column: 24, scope: !142) +!142 = distinct !DILexicalBlock(scope: !139, file: !2, line: 63, column: 23) +!143 = !DILocation(line: 64, column: 12, scope: !132) +!144 = !DILocation(line: 64, column: 5, scope: !132) +!145 = !DILocation(line: 65, column: 5, scope: !132) +!146 = !DILocation(line: 65, column: 17, scope: !132) +!147 = !DILocalVariable(name: "i", scope: !148, file: !2, line: 67, type: !57) +!148 = distinct !DILexicalBlock(scope: !132, file: !2, line: 66, column: 5) +!149 = !DILocation(line: 67, column: 16, scope: !148) +!150 = !DILocalVariable(name: "destLen", scope: !148, file: !2, line: 67, type: !57) +!151 = !DILocation(line: 67, column: 19, scope: !148) +!152 = !DILocalVariable(name: "dest", scope: !148, file: !2, line: 68, type: !64) +!153 = !DILocation(line: 68, column: 14, scope: !148) +!154 = !DILocation(line: 69, column: 9, scope: !148) +!155 = !DILocation(line: 70, column: 9, scope: !148) +!156 = !DILocation(line: 70, column: 21, scope: !148) +!157 = !DILocation(line: 71, column: 26, scope: !148) +!158 = !DILocation(line: 71, column: 19, scope: !148) +!159 = !DILocation(line: 71, column: 17, scope: !148) +!160 = !DILocation(line: 74, column: 23, scope: !148) +!161 = !DILocation(line: 74, column: 29, scope: !148) +!162 = !DILocation(line: 74, column: 37, scope: !148) +!163 = !DILocation(line: 74, column: 9, scope: !148) +!164 = !DILocation(line: 75, column: 16, scope: !165) +!165 = distinct !DILexicalBlock(scope: !148, file: !2, line: 75, column: 9) +!166 = !DILocation(line: 75, column: 14, scope: !165) +!167 = !DILocation(line: 75, column: 21, scope: !168) +!168 = distinct !DILexicalBlock(scope: !165, file: !2, line: 75, column: 9) +!169 = !DILocation(line: 75, column: 25, scope: !168) +!170 = !DILocation(line: 75, column: 23, scope: !168) +!171 = !DILocation(line: 75, column: 9, scope: !165) +!172 = !DILocation(line: 77, column: 23, scope: !173) +!173 = distinct !DILexicalBlock(scope: !168, file: !2, line: 76, column: 9) +!174 = !DILocation(line: 77, column: 28, scope: !173) +!175 = !DILocation(line: 77, column: 18, scope: !173) +!176 = !DILocation(line: 77, column: 13, scope: !173) +!177 = !DILocation(line: 77, column: 21, scope: !173) +!178 = !DILocation(line: 78, column: 28, scope: !173) +!179 = !DILocation(line: 78, column: 35, scope: !173) +!180 = !DILocation(line: 78, column: 37, scope: !173) +!181 = !DILocation(line: 78, column: 42, scope: !173) +!182 = !DILocation(line: 78, column: 57, scope: !173) +!183 = !DILocation(line: 78, column: 13, scope: !173) +!184 = !DILocation(line: 79, column: 9, scope: !173) +!185 = !DILocation(line: 75, column: 35, scope: !168) +!186 = !DILocation(line: 75, column: 9, scope: !168) +!187 = distinct !{!187, !171, !188, !97} +!188 = !DILocation(line: 79, column: 9, scope: !165) +!189 = !DILocation(line: 80, column: 24, scope: !148) +!190 = !DILocation(line: 80, column: 30, scope: !148) +!191 = !DILocation(line: 80, column: 38, scope: !148) +!192 = !DILocation(line: 80, column: 53, scope: !148) +!193 = !DILocation(line: 80, column: 9, scope: !148) +!194 = !DILocation(line: 81, column: 9, scope: !148) +!195 = !DILocation(line: 81, column: 21, scope: !148) +!196 = !DILocation(line: 82, column: 19, scope: !148) +!197 = !DILocation(line: 82, column: 9, scope: !148) +!198 = !DILocation(line: 83, column: 14, scope: !148) +!199 = !DILocation(line: 83, column: 9, scope: !148) +!200 = !DILocation(line: 85, column: 1, scope: !132) 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 index fa0dcdb8e..648131ce4 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,187 +13,183 @@ define dso_local void @CWE126_Buffer_Overread__malloc_char_memmove_01_bad() #0 ! 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 + #dbg_declare(ptr %data, !41, !DIExpression(), !42) store ptr null, ptr %data, align 8, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef 50) #9, !dbg !44 + %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !48 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !50 - unreachable, !dbg !50 + call void @exit(i32 noundef -1) #9, !dbg !49 + unreachable, !dbg !49 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 + %1 = load ptr, ptr %data, align 8, !dbg !51 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 49, i1 false), !dbg !52 + %2 = load ptr, ptr %data, align 8, !dbg !53 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 49, !dbg !53 + store i8 0, ptr %arrayidx, align 1, !dbg !54 + #dbg_declare(ptr %dest, !55, !DIExpression(), !60) + %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !61 + call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !61 + %arrayidx1 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !62 + store i8 0, ptr %arrayidx1, align 1, !dbg !63 + %arraydecay2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !64 + %arraydecay3 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !65 + %call4 = call i64 @strlen(ptr noundef %arraydecay3) #10, !dbg !66 + %mul = mul i64 %call4, 1, !dbg !67 + %sub = sub i64 %mul, 1, !dbg !68 + %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !69 + %3 = load ptr, ptr %data, align 8, !dbg !70 + %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !71 + %call7 = call i64 @strlen(ptr noundef %arraydecay6) #10, !dbg !72 + %mul8 = mul i64 %call7, 1, !dbg !73 + %sub9 = sub i64 %mul8, 1, !dbg !74 + %call10 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef %sub9), !dbg !75 + %arraydecay11 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !76 + %4 = load ptr, ptr %data, align 8, !dbg !77 + %arraydecay12 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !78 + %call13 = call i64 @strlen(ptr noundef %arraydecay12) #10, !dbg !79 + %mul14 = mul i64 %call13, 1, !dbg !80 + call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay11, ptr align 1 %4, i64 %mul14, i1 false), !dbg !76 + %arrayidx15 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !81 + store i8 0, ptr %arrayidx15, align 1, !dbg !82 + %arraydecay16 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !83 + call void @printLine(ptr noundef %arraydecay16), !dbg !84 + %5 = load ptr, ptr %data, align 8, !dbg !85 + call void @free(ptr noundef %5) #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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(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) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 -declare i32 @SAFE_BUFACCESS(...) #5 +declare i32 @SAFE_BUFACCESS(...) #4 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #6 +declare i64 @strlen(ptr noundef) #5 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #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) #7 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #6 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: nounwind -declare void @free(ptr noundef) #8 +declare void @free(ptr noundef) #7 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_char_memmove_01_good() #0 !dbg !89 { +define dso_local void @CWE126_Buffer_Overread__malloc_char_memmove_01_good() #0 !dbg !88 { entry: - call void @goodG2B(), !dbg !90 - ret void, !dbg !91 + 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 !92 { +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 !97, metadata !DIExpression()), !dbg !98 + #dbg_declare(ptr %argc.addr, !96, !DIExpression(), !97) 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 + #dbg_declare(ptr %argv.addr, !98, !DIExpression(), !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 @CWE126_Buffer_Overread__malloc_char_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 @CWE126_Buffer_Overread__malloc_char_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) #8 +declare void @srand(i32 noundef) #7 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #8 +declare i64 @time(ptr noundef) #7 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !111 { +define internal void @goodG2B() #0 !dbg !110 { 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 + #dbg_declare(ptr %data, !111, !DIExpression(), !112) + store ptr null, ptr %data, align 8, !dbg !113 + %call = call noalias ptr @malloc(i64 noundef 100) #8, !dbg !114 + store ptr %call, ptr %data, align 8, !dbg !115 + %0 = load ptr, ptr %data, align 8, !dbg !116 + %cmp = icmp eq ptr %0, null, !dbg !118 + br i1 %cmp, label %if.then, label %if.end, !dbg !118 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !121 - unreachable, !dbg !121 + call void @exit(i32 noundef -1) #9, !dbg !119 + unreachable, !dbg !119 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 + %1 = load ptr, ptr %data, align 8, !dbg !121 + call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 99, i1 false), !dbg !122 + %2 = load ptr, ptr %data, align 8, !dbg !123 + %arrayidx = getelementptr inbounds i8, ptr %2, i64 99, !dbg !123 + store i8 0, ptr %arrayidx, align 1, !dbg !124 + #dbg_declare(ptr %dest, !125, !DIExpression(), !127) + %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !128 + call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !128 + %arrayidx1 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !129 + store i8 0, ptr %arrayidx1, align 1, !dbg !130 + %arraydecay2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !131 + %arraydecay3 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !132 + %call4 = call i64 @strlen(ptr noundef %arraydecay3) #10, !dbg !133 + %mul = mul i64 %call4, 1, !dbg !134 + %sub = sub i64 %mul, 1, !dbg !135 + %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !136 + %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !137 + %arraydecay7 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !138 + %call8 = call i64 @strlen(ptr noundef %arraydecay7) #10, !dbg !139 + %mul9 = mul i64 %call8, 1, !dbg !140 + %sub10 = sub i64 %mul9, 1, !dbg !141 + %call11 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef %sub10), !dbg !142 + %arraydecay12 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !143 + %3 = load ptr, ptr %data, align 8, !dbg !144 + %arraydecay13 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !145 + %call14 = call i64 @strlen(ptr noundef %arraydecay13) #10, !dbg !146 + %mul15 = mul i64 %call14, 1, !dbg !147 + call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay12, ptr align 1 %3, i64 %mul15, i1 false), !dbg !143 + %arrayidx16 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !148 + store i8 0, ptr %arrayidx16, align 1, !dbg !149 + %arraydecay17 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !150 + call void @printLine(ptr noundef %arraydecay17), !dbg !151 + %4 = load ptr, ptr %data, align 8, !dbg !152 + call void @free(ptr noundef %4) #11, !dbg !153 + ret void, !dbg !154 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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} @@ -201,7 +197,7 @@ attributes #12 = { nounwind } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c", directory: "/root/testsss/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} @@ -221,8 +217,8 @@ attributes #12 = { nounwind } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c", directory: "/root/testsss/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) @@ -235,7 +231,7 @@ attributes #12 = { nounwind } !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"} +!36 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -248,111 +244,109 @@ attributes #12 = { nounwind } !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) +!49 = !DILocation(line: 29, column: 24, scope: !50) +!50 = distinct !DILexicalBlock(scope: !47, file: !2, line: 29, column: 23) +!51 = !DILocation(line: 30, column: 12, scope: !37) +!52 = !DILocation(line: 30, column: 5, scope: !37) +!53 = !DILocation(line: 31, column: 5, scope: !37) +!54 = !DILocation(line: 31, column: 16, scope: !37) +!55 = !DILocalVariable(name: "dest", scope: !56, file: !2, line: 33, type: !57) +!56 = distinct !DILexicalBlock(scope: !37, file: !2, line: 32, column: 5) +!57 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !58) +!58 = !{!59} +!59 = !DISubrange(count: 100) +!60 = !DILocation(line: 33, column: 14, scope: !56) +!61 = !DILocation(line: 34, column: 9, scope: !56) +!62 = !DILocation(line: 35, column: 9, scope: !56) +!63 = !DILocation(line: 35, column: 21, scope: !56) +!64 = !DILocation(line: 38, column: 24, scope: !56) +!65 = !DILocation(line: 38, column: 37, scope: !56) +!66 = !DILocation(line: 38, column: 30, scope: !56) +!67 = !DILocation(line: 38, column: 42, scope: !56) +!68 = !DILocation(line: 38, column: 56, scope: !56) +!69 = !DILocation(line: 38, column: 9, scope: !56) +!70 = !DILocation(line: 39, column: 26, scope: !56) +!71 = !DILocation(line: 39, column: 39, scope: !56) +!72 = !DILocation(line: 39, column: 32, scope: !56) +!73 = !DILocation(line: 39, column: 44, scope: !56) +!74 = !DILocation(line: 39, column: 58, scope: !56) +!75 = !DILocation(line: 39, column: 9, scope: !56) +!76 = !DILocation(line: 40, column: 9, scope: !56) +!77 = !DILocation(line: 40, column: 23, scope: !56) +!78 = !DILocation(line: 40, column: 36, scope: !56) +!79 = !DILocation(line: 40, column: 29, scope: !56) +!80 = !DILocation(line: 40, column: 41, scope: !56) +!81 = !DILocation(line: 41, column: 9, scope: !56) +!82 = !DILocation(line: 41, column: 21, scope: !56) +!83 = !DILocation(line: 42, column: 19, scope: !56) +!84 = !DILocation(line: 42, column: 9, scope: !56) +!85 = !DILocation(line: 43, column: 14, scope: !56) +!86 = !DILocation(line: 43, column: 9, scope: !56) +!87 = !DILocation(line: 45, column: 1, scope: !37) +!88 = 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) +!89 = !DILocation(line: 78, column: 5, scope: !88) +!90 = !DILocation(line: 79, column: 1, scope: !88) +!91 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 91, type: !92, scopeLine: 92, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) +!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: !25, size: 64) +!96 = !DILocalVariable(name: "argc", arg: 1, scope: !91, file: !2, line: 91, type: !94) +!97 = !DILocation(line: 91, column: 14, scope: !91) +!98 = !DILocalVariable(name: "argv", arg: 2, scope: !91, file: !2, line: 91, type: !95) +!99 = !DILocation(line: 91, column: 27, scope: !91) +!100 = !DILocation(line: 94, column: 22, scope: !91) +!101 = !DILocation(line: 94, column: 12, scope: !91) +!102 = !DILocation(line: 94, column: 5, scope: !91) +!103 = !DILocation(line: 96, column: 5, scope: !91) +!104 = !DILocation(line: 97, column: 5, scope: !91) +!105 = !DILocation(line: 98, column: 5, scope: !91) +!106 = !DILocation(line: 101, column: 5, scope: !91) +!107 = !DILocation(line: 102, column: 5, scope: !91) +!108 = !DILocation(line: 103, column: 5, scope: !91) +!109 = !DILocation(line: 105, column: 5, scope: !91) +!110 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 52, type: !38, scopeLine: 53, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) +!111 = !DILocalVariable(name: "data", scope: !110, file: !2, line: 54, type: !25) +!112 = !DILocation(line: 54, column: 12, scope: !110) +!113 = !DILocation(line: 55, column: 10, scope: !110) +!114 = !DILocation(line: 57, column: 20, scope: !110) +!115 = !DILocation(line: 57, column: 10, scope: !110) +!116 = !DILocation(line: 58, column: 9, scope: !117) +!117 = distinct !DILexicalBlock(scope: !110, file: !2, line: 58, column: 9) +!118 = !DILocation(line: 58, column: 14, scope: !117) +!119 = !DILocation(line: 58, column: 24, scope: !120) +!120 = distinct !DILexicalBlock(scope: !117, file: !2, line: 58, column: 23) +!121 = !DILocation(line: 59, column: 12, scope: !110) +!122 = !DILocation(line: 59, column: 5, scope: !110) +!123 = !DILocation(line: 60, column: 5, scope: !110) +!124 = !DILocation(line: 60, column: 17, scope: !110) +!125 = !DILocalVariable(name: "dest", scope: !126, file: !2, line: 62, type: !57) +!126 = distinct !DILexicalBlock(scope: !110, file: !2, line: 61, column: 5) +!127 = !DILocation(line: 62, column: 14, scope: !126) +!128 = !DILocation(line: 63, column: 9, scope: !126) +!129 = !DILocation(line: 64, column: 9, scope: !126) +!130 = !DILocation(line: 64, column: 21, scope: !126) +!131 = !DILocation(line: 67, column: 24, scope: !126) +!132 = !DILocation(line: 67, column: 37, scope: !126) +!133 = !DILocation(line: 67, column: 30, scope: !126) +!134 = !DILocation(line: 67, column: 42, scope: !126) +!135 = !DILocation(line: 67, column: 56, scope: !126) +!136 = !DILocation(line: 67, column: 9, scope: !126) +!137 = !DILocation(line: 68, column: 24, scope: !126) +!138 = !DILocation(line: 68, column: 37, scope: !126) +!139 = !DILocation(line: 68, column: 30, scope: !126) +!140 = !DILocation(line: 68, column: 42, scope: !126) +!141 = !DILocation(line: 68, column: 56, scope: !126) +!142 = !DILocation(line: 68, column: 9, scope: !126) +!143 = !DILocation(line: 69, column: 9, scope: !126) +!144 = !DILocation(line: 69, column: 23, scope: !126) +!145 = !DILocation(line: 69, column: 36, scope: !126) +!146 = !DILocation(line: 69, column: 29, scope: !126) +!147 = !DILocation(line: 69, column: 41, scope: !126) +!148 = !DILocation(line: 70, column: 9, scope: !126) +!149 = !DILocation(line: 70, column: 21, scope: !126) +!150 = !DILocation(line: 71, column: 19, scope: !126) +!151 = !DILocation(line: 71, column: 9, scope: !126) +!152 = !DILocation(line: 72, column: 14, scope: !126) +!153 = !DILocation(line: 72, column: 9, scope: !126) +!154 = !DILocation(line: 74, column: 1, scope: !110) 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 index 8a7a2276e..e4425b002 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,33 +15,33 @@ entry: %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 + #dbg_declare(ptr %data, !44, !DIExpression(), !45) store ptr null, ptr %data, align 8, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef 200) #7, !dbg !47 + %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !51 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !53 - unreachable, !dbg !53 + call void @exit(i32 noundef -1) #7, !dbg !52 + unreachable, !dbg !52 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 + %1 = load ptr, ptr %data, align 8, !dbg !54 + %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 49) #8, !dbg !55 + %2 = load ptr, ptr %data, align 8, !dbg !56 + %arrayidx = getelementptr inbounds i32, ptr %2, i64 49, !dbg !56 + store i32 0, ptr %arrayidx, align 4, !dbg !57 + #dbg_declare(ptr %i, !58, !DIExpression(), !63) + #dbg_declare(ptr %destLen, !64, !DIExpression(), !65) + #dbg_declare(ptr %dest, !66, !DIExpression(), !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 + %call2 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #8, !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 + %call5 = call i64 @wcslen(ptr noundef %arraydecay4) #9, !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 @@ -55,10 +55,10 @@ for.cond: ; preds = %for.inc, %if.end 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 + %arrayidx7 = getelementptr inbounds nuw 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 + %arrayidx8 = getelementptr inbounds nuw [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 @@ -79,31 +79,28 @@ for.end: ; preds = %for.cond %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 + call void @free(ptr noundef %12) #8, !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 +declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(i32 noundef) #2 ; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #3 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #5 +declare i64 @wcslen(ptr noundef) #4 -declare i32 @UNSAFE_BUFACCESS(...) #6 +declare i32 @UNSAFE_BUFACCESS(...) #5 -declare void @printWLine(ptr noundef) #6 +declare void @printWLine(ptr noundef) #5 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE126_Buffer_Overread__malloc_wchar_t_loop_01_good() #0 !dbg !110 { @@ -120,12 +117,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !118, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !120, !DIExpression(), !121) + %call = call i64 @time(ptr noundef null) #8, !dbg !122 %conv = trunc i64 %call to i32, !dbg !123 - call void @srand(i32 noundef %conv) #9, !dbg !124 + call void @srand(i32 noundef %conv) #8, !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 @@ -136,12 +133,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #6 +declare void @printLine(ptr noundef) #5 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !132 { @@ -150,93 +147,92 @@ entry: %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 + #dbg_declare(ptr %data, !133, !DIExpression(), !134) store ptr null, ptr %data, align 8, !dbg !135 - %call = call noalias ptr @malloc(i64 noundef 400) #7, !dbg !136 + %call = call noalias ptr @malloc(i64 noundef 400) #6, !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 + br i1 %cmp, label %if.then, label %if.end, !dbg !140 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !142 - unreachable, !dbg !142 + call void @exit(i32 noundef -1) #7, !dbg !141 + unreachable, !dbg !141 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 + %1 = load ptr, ptr %data, align 8, !dbg !143 + %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 99) #8, !dbg !144 + %2 = load ptr, ptr %data, align 8, !dbg !145 + %arrayidx = getelementptr inbounds i32, ptr %2, i64 99, !dbg !145 + store i32 0, ptr %arrayidx, align 4, !dbg !146 + #dbg_declare(ptr %i, !147, !DIExpression(), !149) + #dbg_declare(ptr %destLen, !150, !DIExpression(), !151) + #dbg_declare(ptr %dest, !152, !DIExpression(), !153) + %arraydecay = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !154 + %call2 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #8, !dbg !155 + %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !156 + store i32 0, ptr %arrayidx3, align 4, !dbg !157 + %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !158 + %call5 = call i64 @wcslen(ptr noundef %arraydecay4) #9, !dbg !159 + store i64 %call5, ptr %destLen, align 8, !dbg !160 + store i64 0, ptr %i, align 8, !dbg !161 + br label %for.cond, !dbg !163 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 + %3 = load i64, ptr %i, align 8, !dbg !164 + %4 = load i64, ptr %destLen, align 8, !dbg !166 + %cmp6 = icmp ult i64 %3, %4, !dbg !167 + br i1 %cmp6, label %for.body, label %for.end, !dbg !168 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 + %5 = load ptr, ptr %data, align 8, !dbg !169 + %6 = load i64, ptr %i, align 8, !dbg !171 + %arrayidx7 = getelementptr inbounds nuw i32, ptr %5, i64 %6, !dbg !169 + %7 = load i32, ptr %arrayidx7, align 4, !dbg !169 + %8 = load i64, ptr %i, align 8, !dbg !172 + %arrayidx8 = getelementptr inbounds nuw [100 x i32], ptr %dest, i64 0, i64 %8, !dbg !173 + store i32 %7, ptr %arrayidx8, align 4, !dbg !174 + %arraydecay9 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !175 + %9 = load i64, ptr %i, align 8, !dbg !176 + %add = add i64 %9, 1, !dbg !177 + %mul = mul i64 %add, 4, !dbg !178 + %sub = sub i64 %mul, 1, !dbg !179 + %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay9, i64 noundef %sub), !dbg !180 + br label %for.inc, !dbg !181 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 + %10 = load i64, ptr %i, align 8, !dbg !182 + %inc = add i64 %10, 1, !dbg !182 + store i64 %inc, ptr %i, align 8, !dbg !182 + br label %for.cond, !dbg !183, !llvm.loop !184 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 + %arraydecay11 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !186 + %11 = load i64, ptr %destLen, align 8, !dbg !187 + %mul12 = mul i64 %11, 4, !dbg !188 + %sub13 = sub i64 %mul12, 1, !dbg !189 + %call14 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay11, i64 noundef %sub13), !dbg !190 + %arrayidx15 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !191 + store i32 0, ptr %arrayidx15, align 4, !dbg !192 + %arraydecay16 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !193 + call void @printWLine(ptr noundef %arraydecay16), !dbg !194 + %12 = load ptr, ptr %data, align 8, !dbg !195 + call void @free(ptr noundef %12) #8, !dbg !196 + ret void, !dbg !197 } -declare i32 @SAFE_BUFACCESS(...) #6 +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 = { 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nounwind allocsize(0) } +attributes #7 = { noreturn nounwind } +attributes #8 = { nounwind } +attributes #9 = { nounwind willreturn memory(read) } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} @@ -244,7 +240,7 @@ attributes #10 = { nounwind willreturn memory(read) } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c", directory: "/root/testsss/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} @@ -264,12 +260,12 @@ attributes #10 = { nounwind willreturn memory(read) } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c", directory: "/root/testsss/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") +!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 24, baseType: !28) +!27 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -281,7 +277,7 @@ attributes #10 = { nounwind willreturn memory(read) } !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"} +!39 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -294,34 +290,34 @@ attributes #10 = { nounwind willreturn memory(read) } !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) +!52 = !DILocation(line: 29, column: 24, scope: !53) +!53 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 23) +!54 = !DILocation(line: 30, column: 13, scope: !40) +!55 = !DILocation(line: 30, column: 5, scope: !40) +!56 = !DILocation(line: 31, column: 5, scope: !40) +!57 = !DILocation(line: 31, column: 16, scope: !40) +!58 = !DILocalVariable(name: "i", scope: !59, file: !2, line: 33, type: !60) +!59 = distinct !DILexicalBlock(scope: !40, file: !2, line: 32, column: 5) +!60 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !61, line: 18, baseType: !62) +!61 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !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) +!63 = !DILocation(line: 33, column: 16, scope: !59) +!64 = !DILocalVariable(name: "destLen", scope: !59, file: !2, line: 33, type: !60) +!65 = !DILocation(line: 33, column: 19, scope: !59) +!66 = !DILocalVariable(name: "dest", scope: !59, 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) +!70 = !DILocation(line: 34, column: 17, scope: !59) +!71 = !DILocation(line: 35, column: 17, scope: !59) +!72 = !DILocation(line: 35, column: 9, scope: !59) +!73 = !DILocation(line: 36, column: 9, scope: !59) +!74 = !DILocation(line: 36, column: 21, scope: !59) +!75 = !DILocation(line: 37, column: 26, scope: !59) +!76 = !DILocation(line: 37, column: 19, scope: !59) +!77 = !DILocation(line: 37, column: 17, scope: !59) !78 = !DILocation(line: 40, column: 16, scope: !79) -!79 = distinct !DILexicalBlock(scope: !60, file: !2, line: 40, column: 9) +!79 = distinct !DILexicalBlock(scope: !59, 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) @@ -340,19 +336,19 @@ attributes #10 = { nounwind willreturn memory(read) } !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) +!98 = !DILocation(line: 44, column: 26, scope: !59) +!99 = !DILocation(line: 44, column: 32, scope: !59) +!100 = !DILocation(line: 44, column: 40, scope: !59) +!101 = !DILocation(line: 44, column: 58, scope: !59) +!102 = !DILocation(line: 44, column: 9, scope: !59) +!103 = !DILocation(line: 45, column: 9, scope: !59) +!104 = !DILocation(line: 45, column: 21, scope: !59) +!105 = !DILocation(line: 46, column: 20, scope: !59) +!106 = !DILocation(line: 46, column: 9, scope: !59) +!107 = !DILocation(line: 47, column: 14, scope: !59) +!108 = !DILocation(line: 47, column: 9, scope: !59) !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) +!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) !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) @@ -383,61 +379,60 @@ attributes #10 = { nounwind willreturn memory(read) } !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) +!141 = !DILocation(line: 62, column: 24, scope: !142) +!142 = distinct !DILexicalBlock(scope: !139, file: !2, line: 62, column: 23) +!143 = !DILocation(line: 63, column: 13, scope: !132) +!144 = !DILocation(line: 63, column: 5, scope: !132) +!145 = !DILocation(line: 64, column: 5, scope: !132) +!146 = !DILocation(line: 64, column: 17, scope: !132) +!147 = !DILocalVariable(name: "i", scope: !148, file: !2, line: 66, type: !60) +!148 = distinct !DILexicalBlock(scope: !132, file: !2, line: 65, column: 5) +!149 = !DILocation(line: 66, column: 16, scope: !148) +!150 = !DILocalVariable(name: "destLen", scope: !148, file: !2, line: 66, type: !60) +!151 = !DILocation(line: 66, column: 19, scope: !148) +!152 = !DILocalVariable(name: "dest", scope: !148, file: !2, line: 67, type: !67) +!153 = !DILocation(line: 67, column: 17, scope: !148) +!154 = !DILocation(line: 68, column: 17, scope: !148) +!155 = !DILocation(line: 68, column: 9, scope: !148) +!156 = !DILocation(line: 69, column: 9, scope: !148) +!157 = !DILocation(line: 69, column: 21, scope: !148) +!158 = !DILocation(line: 70, column: 26, scope: !148) +!159 = !DILocation(line: 70, column: 19, scope: !148) +!160 = !DILocation(line: 70, column: 17, scope: !148) +!161 = !DILocation(line: 73, column: 16, scope: !162) +!162 = distinct !DILexicalBlock(scope: !148, file: !2, line: 73, column: 9) +!163 = !DILocation(line: 73, column: 14, scope: !162) +!164 = !DILocation(line: 73, column: 21, scope: !165) +!165 = distinct !DILexicalBlock(scope: !162, file: !2, line: 73, column: 9) +!166 = !DILocation(line: 73, column: 25, scope: !165) +!167 = !DILocation(line: 73, column: 23, scope: !165) +!168 = !DILocation(line: 73, column: 9, scope: !162) +!169 = !DILocation(line: 75, column: 23, scope: !170) +!170 = distinct !DILexicalBlock(scope: !165, file: !2, line: 74, column: 9) +!171 = !DILocation(line: 75, column: 28, scope: !170) +!172 = !DILocation(line: 75, column: 18, scope: !170) +!173 = !DILocation(line: 75, column: 13, scope: !170) +!174 = !DILocation(line: 75, column: 21, scope: !170) +!175 = !DILocation(line: 76, column: 28, scope: !170) +!176 = !DILocation(line: 76, column: 35, scope: !170) +!177 = !DILocation(line: 76, column: 37, scope: !170) +!178 = !DILocation(line: 76, column: 42, scope: !170) +!179 = !DILocation(line: 76, column: 60, scope: !170) +!180 = !DILocation(line: 76, column: 13, scope: !170) +!181 = !DILocation(line: 77, column: 9, scope: !170) +!182 = !DILocation(line: 73, column: 35, scope: !165) +!183 = !DILocation(line: 73, column: 9, scope: !165) +!184 = distinct !{!184, !168, !185, !97} +!185 = !DILocation(line: 77, column: 9, scope: !162) +!186 = !DILocation(line: 78, column: 24, scope: !148) +!187 = !DILocation(line: 78, column: 30, scope: !148) +!188 = !DILocation(line: 78, column: 38, scope: !148) +!189 = !DILocation(line: 78, column: 56, scope: !148) +!190 = !DILocation(line: 78, column: 9, scope: !148) +!191 = !DILocation(line: 79, column: 9, scope: !148) +!192 = !DILocation(line: 79, column: 21, scope: !148) +!193 = !DILocation(line: 80, column: 20, scope: !148) +!194 = !DILocation(line: 80, column: 9, scope: !148) +!195 = !DILocation(line: 81, column: 14, scope: !148) +!196 = !DILocation(line: 81, column: 9, scope: !148) +!197 = !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 index ddac79a03..8225d0d53 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -13,188 +13,184 @@ define dso_local void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_bad() # 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 + #dbg_declare(ptr %data, !44, !DIExpression(), !45) store ptr null, ptr %data, align 8, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef 200) #8, !dbg !47 + %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 + br i1 %cmp, label %if.then, label %if.end, !dbg !51 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !53 - unreachable, !dbg !53 + call void @exit(i32 noundef -1) #8, !dbg !52 + unreachable, !dbg !52 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 + %1 = load ptr, ptr %data, align 8, !dbg !54 + %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 49) #9, !dbg !55 + %2 = load ptr, ptr %data, align 8, !dbg !56 + %arrayidx = getelementptr inbounds i32, ptr %2, i64 49, !dbg !56 + store i32 0, ptr %arrayidx, align 4, !dbg !57 + #dbg_declare(ptr %dest, !58, !DIExpression(), !63) + %arraydecay = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !64 + %call2 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #9, !dbg !65 + %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !66 + store i32 0, ptr %arrayidx3, align 4, !dbg !67 + %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !68 + %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !69 + %call6 = call i64 @wcslen(ptr noundef %arraydecay5) #10, !dbg !70 + %mul = mul i64 %call6, 4, !dbg !71 + %sub = sub i64 %mul, 1, !dbg !72 + %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef %sub), !dbg !73 + %3 = load ptr, ptr %data, align 8, !dbg !74 + %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !75 + %call9 = call i64 @wcslen(ptr noundef %arraydecay8) #10, !dbg !76 + %mul10 = mul i64 %call9, 4, !dbg !77 + %sub11 = sub i64 %mul10, 1, !dbg !78 + %call12 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef %sub11), !dbg !79 + %arraydecay13 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !80 + %4 = load ptr, ptr %data, align 8, !dbg !81 + %arraydecay14 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !82 + %call15 = call i64 @wcslen(ptr noundef %arraydecay14) #10, !dbg !83 + %mul16 = mul i64 %call15, 4, !dbg !84 + call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay13, ptr align 4 %4, i64 %mul16, i1 false), !dbg !80 + %arrayidx17 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !85 + store i32 0, ptr %arrayidx17, align 4, !dbg !86 + %arraydecay18 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !87 + call void @printWLine(ptr noundef %arraydecay18), !dbg !88 + %5 = load ptr, ptr %data, align 8, !dbg !89 + call void @free(ptr noundef %5) #9, !dbg !90 + ret void, !dbg !91 } -; 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 noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(i32 noundef) #2 ; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 +declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #3 -declare i32 @SAFE_BUFACCESS(...) #5 +declare i32 @SAFE_BUFACCESS(...) #4 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #6 +declare i64 @wcslen(ptr noundef) #5 -declare i32 @UNSAFE_BUFACCESS(...) #5 +declare i32 @UNSAFE_BUFACCESS(...) #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) #7 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #6 -declare void @printWLine(ptr noundef) #5 +declare void @printWLine(ptr noundef) #4 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_good() #0 !dbg !93 { +define dso_local void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_good() #0 !dbg !92 { entry: - call void @goodG2B(), !dbg !94 - ret void, !dbg !95 + call void @goodG2B(), !dbg !93 + ret void, !dbg !94 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !96 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !95 { 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 + #dbg_declare(ptr %argc.addr, !100, !DIExpression(), !101) 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 + #dbg_declare(ptr %argv.addr, !102, !DIExpression(), !103) + %call = call i64 @time(ptr noundef null) #9, !dbg !104 + %conv = trunc i64 %call to i32, !dbg !105 + call void @srand(i32 noundef %conv) #9, !dbg !106 + call void @printLine(ptr noundef @.str), !dbg !107 + call void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_good(), !dbg !108 + call void @printLine(ptr noundef @.str.1), !dbg !109 + call void @printLine(ptr noundef @.str.2), !dbg !110 + call void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_bad(), !dbg !111 + call void @printLine(ptr noundef @.str.3), !dbg !112 + ret i32 0, !dbg !113 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 +declare void @srand(i32 noundef) #3 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 +declare i64 @time(ptr noundef) #3 -declare void @printLine(ptr noundef) #5 +declare void @printLine(ptr noundef) #4 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !115 { +define internal void @goodG2B() #0 !dbg !114 { 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 + #dbg_declare(ptr %data, !115, !DIExpression(), !116) + store ptr null, ptr %data, align 8, !dbg !117 + %call = call noalias ptr @malloc(i64 noundef 400) #7, !dbg !118 + store ptr %call, ptr %data, align 8, !dbg !119 + %0 = load ptr, ptr %data, align 8, !dbg !120 + %cmp = icmp eq ptr %0, null, !dbg !122 + br i1 %cmp, label %if.then, label %if.end, !dbg !122 if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !125 - unreachable, !dbg !125 + call void @exit(i32 noundef -1) #8, !dbg !123 + unreachable, !dbg !123 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 + %1 = load ptr, ptr %data, align 8, !dbg !125 + %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 99) #9, !dbg !126 + %2 = load ptr, ptr %data, align 8, !dbg !127 + %arrayidx = getelementptr inbounds i32, ptr %2, i64 99, !dbg !127 + store i32 0, ptr %arrayidx, align 4, !dbg !128 + #dbg_declare(ptr %dest, !129, !DIExpression(), !131) + %arraydecay = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !132 + %call2 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #9, !dbg !133 + %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !134 + store i32 0, ptr %arrayidx3, align 4, !dbg !135 + %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !136 + %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !137 + %call6 = call i64 @wcslen(ptr noundef %arraydecay5) #10, !dbg !138 + %mul = mul i64 %call6, 4, !dbg !139 + %sub = sub i64 %mul, 1, !dbg !140 + %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef %sub), !dbg !141 + %3 = load ptr, ptr %data, align 8, !dbg !142 + %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !143 + %call9 = call i64 @wcslen(ptr noundef %arraydecay8) #10, !dbg !144 + %mul10 = mul i64 %call9, 4, !dbg !145 + %sub11 = sub i64 %mul10, 1, !dbg !146 + %call12 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef %sub11), !dbg !147 + %arraydecay13 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !148 + %4 = load ptr, ptr %data, align 8, !dbg !149 + %arraydecay14 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !150 + %call15 = call i64 @wcslen(ptr noundef %arraydecay14) #10, !dbg !151 + %mul16 = mul i64 %call15, 4, !dbg !152 + call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay13, ptr align 4 %4, i64 %mul16, i1 false), !dbg !148 + %arrayidx17 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !153 + store i32 0, ptr %arrayidx17, align 4, !dbg !154 + %arraydecay18 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !155 + call void @printWLine(ptr noundef %arraydecay18), !dbg !156 + %5 = load ptr, ptr %data, align 8, !dbg !157 + call void @free(ptr noundef %5) #9, !dbg !158 + ret void, !dbg !159 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +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} @@ -202,7 +198,7 @@ attributes #11 = { nounwind willreturn memory(read) } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c", directory: "/root/testsss/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} @@ -222,12 +218,12 @@ attributes #11 = { nounwind willreturn memory(read) } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c", directory: "/root/testsss/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") +!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 24, baseType: !28) +!27 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -239,7 +235,7 @@ attributes #11 = { nounwind willreturn memory(read) } !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"} +!39 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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} @@ -252,113 +248,111 @@ attributes #11 = { nounwind willreturn memory(read) } !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) +!52 = !DILocation(line: 29, column: 24, scope: !53) +!53 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 23) +!54 = !DILocation(line: 30, column: 13, scope: !40) +!55 = !DILocation(line: 30, column: 5, scope: !40) +!56 = !DILocation(line: 31, column: 5, scope: !40) +!57 = !DILocation(line: 31, column: 16, scope: !40) +!58 = !DILocalVariable(name: "dest", scope: !59, file: !2, line: 33, type: !60) +!59 = distinct !DILexicalBlock(scope: !40, file: !2, line: 32, column: 5) +!60 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !61) +!61 = !{!62} +!62 = !DISubrange(count: 100) +!63 = !DILocation(line: 33, column: 17, scope: !59) +!64 = !DILocation(line: 34, column: 17, scope: !59) +!65 = !DILocation(line: 34, column: 9, scope: !59) +!66 = !DILocation(line: 35, column: 9, scope: !59) +!67 = !DILocation(line: 35, column: 21, scope: !59) +!68 = !DILocation(line: 38, column: 24, scope: !59) +!69 = !DILocation(line: 38, column: 37, scope: !59) +!70 = !DILocation(line: 38, column: 30, scope: !59) +!71 = !DILocation(line: 38, column: 42, scope: !59) +!72 = !DILocation(line: 38, column: 59, scope: !59) +!73 = !DILocation(line: 38, column: 9, scope: !59) +!74 = !DILocation(line: 39, column: 26, scope: !59) +!75 = !DILocation(line: 39, column: 39, scope: !59) +!76 = !DILocation(line: 39, column: 32, scope: !59) +!77 = !DILocation(line: 39, column: 44, scope: !59) +!78 = !DILocation(line: 39, column: 61, scope: !59) +!79 = !DILocation(line: 39, column: 9, scope: !59) +!80 = !DILocation(line: 40, column: 9, scope: !59) +!81 = !DILocation(line: 40, column: 23, scope: !59) +!82 = !DILocation(line: 40, column: 36, scope: !59) +!83 = !DILocation(line: 40, column: 29, scope: !59) +!84 = !DILocation(line: 40, column: 41, scope: !59) +!85 = !DILocation(line: 41, column: 9, scope: !59) +!86 = !DILocation(line: 41, column: 21, scope: !59) +!87 = !DILocation(line: 42, column: 20, scope: !59) +!88 = !DILocation(line: 42, column: 9, scope: !59) +!89 = !DILocation(line: 43, column: 14, scope: !59) +!90 = !DILocation(line: 43, column: 9, scope: !59) +!91 = !DILocation(line: 45, column: 1, scope: !40) +!92 = 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) +!93 = !DILocation(line: 78, column: 5, scope: !92) +!94 = !DILocation(line: 79, column: 1, scope: !92) +!95 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 91, type: !96, scopeLine: 92, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) +!96 = !DISubroutineType(types: !97) +!97 = !{!28, !28, !98} +!98 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !99, size: 64) +!99 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!100 = !DILocalVariable(name: "argc", arg: 1, scope: !95, file: !2, line: 91, type: !28) +!101 = !DILocation(line: 91, column: 14, scope: !95) +!102 = !DILocalVariable(name: "argv", arg: 2, scope: !95, file: !2, line: 91, type: !98) +!103 = !DILocation(line: 91, column: 27, scope: !95) +!104 = !DILocation(line: 94, column: 22, scope: !95) +!105 = !DILocation(line: 94, column: 12, scope: !95) +!106 = !DILocation(line: 94, column: 5, scope: !95) +!107 = !DILocation(line: 96, column: 5, scope: !95) +!108 = !DILocation(line: 97, column: 5, scope: !95) +!109 = !DILocation(line: 98, column: 5, scope: !95) +!110 = !DILocation(line: 101, column: 5, scope: !95) +!111 = !DILocation(line: 102, column: 5, scope: !95) +!112 = !DILocation(line: 103, column: 5, scope: !95) +!113 = !DILocation(line: 105, column: 5, scope: !95) +!114 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 52, type: !41, scopeLine: 53, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) +!115 = !DILocalVariable(name: "data", scope: !114, file: !2, line: 54, type: !25) +!116 = !DILocation(line: 54, column: 15, scope: !114) +!117 = !DILocation(line: 55, column: 10, scope: !114) +!118 = !DILocation(line: 57, column: 23, scope: !114) +!119 = !DILocation(line: 57, column: 10, scope: !114) +!120 = !DILocation(line: 58, column: 9, scope: !121) +!121 = distinct !DILexicalBlock(scope: !114, file: !2, line: 58, column: 9) +!122 = !DILocation(line: 58, column: 14, scope: !121) +!123 = !DILocation(line: 58, column: 24, scope: !124) +!124 = distinct !DILexicalBlock(scope: !121, file: !2, line: 58, column: 23) +!125 = !DILocation(line: 59, column: 13, scope: !114) +!126 = !DILocation(line: 59, column: 5, scope: !114) +!127 = !DILocation(line: 60, column: 5, scope: !114) +!128 = !DILocation(line: 60, column: 17, scope: !114) +!129 = !DILocalVariable(name: "dest", scope: !130, file: !2, line: 62, type: !60) +!130 = distinct !DILexicalBlock(scope: !114, file: !2, line: 61, column: 5) +!131 = !DILocation(line: 62, column: 17, scope: !130) +!132 = !DILocation(line: 63, column: 17, scope: !130) +!133 = !DILocation(line: 63, column: 9, scope: !130) +!134 = !DILocation(line: 64, column: 9, scope: !130) +!135 = !DILocation(line: 64, column: 21, scope: !130) +!136 = !DILocation(line: 67, column: 24, scope: !130) +!137 = !DILocation(line: 67, column: 37, scope: !130) +!138 = !DILocation(line: 67, column: 30, scope: !130) +!139 = !DILocation(line: 67, column: 42, scope: !130) +!140 = !DILocation(line: 67, column: 59, scope: !130) +!141 = !DILocation(line: 67, column: 9, scope: !130) +!142 = !DILocation(line: 68, column: 24, scope: !130) +!143 = !DILocation(line: 68, column: 37, scope: !130) +!144 = !DILocation(line: 68, column: 30, scope: !130) +!145 = !DILocation(line: 68, column: 42, scope: !130) +!146 = !DILocation(line: 68, column: 59, scope: !130) +!147 = !DILocation(line: 68, column: 9, scope: !130) +!148 = !DILocation(line: 69, column: 9, scope: !130) +!149 = !DILocation(line: 69, column: 23, scope: !130) +!150 = !DILocation(line: 69, column: 36, scope: !130) +!151 = !DILocation(line: 69, column: 29, scope: !130) +!152 = !DILocation(line: 69, column: 41, scope: !130) +!153 = !DILocation(line: 70, column: 9, scope: !130) +!154 = !DILocation(line: 70, column: 21, scope: !130) +!155 = !DILocation(line: 71, column: 20, scope: !130) +!156 = !DILocation(line: 71, column: 9, scope: !130) +!157 = !DILocation(line: 72, column: 14, scope: !130) +!158 = !DILocation(line: 72, column: 9, scope: !130) +!159 = !DILocation(line: 74, column: 1, scope: !114) 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 index 564ad9858..661e7c38a 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -17,120 +17,117 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !44) + #dbg_declare(ptr %dataBadBuffer, !45, !DIExpression(), !49) + #dbg_declare(ptr %dataGoodBuffer, !50, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 65, i64 noundef 49) #4, !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 + %call2 = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 65, i64 noundef 99) #4, !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 + #dbg_declare(ptr %i, !65, !DIExpression(), !70) + #dbg_declare(ptr %destLen, !71, !DIExpression(), !72) + #dbg_declare(ptr %dest, !73, !DIExpression(), !74) + %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !75 + %call6 = call ptr @wmemset(ptr noundef %arraydecay5, i32 noundef 67, i64 noundef 99) #4, !dbg !76 + %arrayidx7 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !77 + store i32 0, ptr %arrayidx7, align 4, !dbg !78 + %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !79 + %call9 = call i64 @wcslen(ptr noundef %arraydecay8) #5, !dbg !80 + store i64 %call9, ptr %destLen, align 8, !dbg !81 + store i64 0, ptr %i, align 8, !dbg !82 + br label %for.cond, !dbg !84 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 + %0 = load i64, ptr %i, align 8, !dbg !85 + %1 = load i64, ptr %destLen, align 8, !dbg !87 + %cmp = icmp ult i64 %0, %1, !dbg !88 + br i1 %cmp, label %for.body, label %for.end, !dbg !89 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 + %2 = load ptr, ptr %data, align 8, !dbg !90 + %3 = load i64, ptr %i, align 8, !dbg !92 + %arrayidx10 = getelementptr inbounds nuw i32, ptr %2, i64 %3, !dbg !90 + %4 = load i32, ptr %arrayidx10, align 4, !dbg !90 + %5 = load i64, ptr %i, align 8, !dbg !93 + %arrayidx11 = getelementptr inbounds nuw [100 x i32], ptr %dest, i64 0, i64 %5, !dbg !94 + store i32 %4, ptr %arrayidx11, align 4, !dbg !95 + br label %for.inc, !dbg !96 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 + %6 = load i64, ptr %i, align 8, !dbg !97 + %inc = add i64 %6, 1, !dbg !97 + store i64 %inc, ptr %i, align 8, !dbg !97 + br label %for.cond, !dbg !98, !llvm.loop !99 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 + %7 = load ptr, ptr %data, align 8, !dbg !102 + %8 = load i64, ptr %destLen, align 8, !dbg !103 + %mul = mul i64 %8, 4, !dbg !104 + %sub = sub i64 %mul, 1, !dbg !105 + %call12 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %7, i64 noundef %sub), !dbg !106 + %arrayidx13 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !107 + store i32 0, ptr %arrayidx13, align 4, !dbg !108 + %arraydecay14 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !109 + call void @printWLine(ptr noundef %arraydecay14), !dbg !110 + ret void, !dbg !111 } -; 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 ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #1 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #3 +declare i64 @wcslen(ptr noundef) #2 -declare i32 @UNSAFE_BUFACCESS(...) #4 +declare i32 @UNSAFE_BUFACCESS(...) #3 -declare void @printWLine(ptr noundef) #4 +declare void @printWLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__wchar_t_declare_loop_01_good() #0 !dbg !111 { +define dso_local void @CWE126_Buffer_Overread__wchar_t_declare_loop_01_good() #0 !dbg !112 { entry: - call void @goodG2B(), !dbg !112 - ret void, !dbg !113 + call void @goodG2B(), !dbg !113 + ret void, !dbg !114 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !114 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !115 { 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 + #dbg_declare(ptr %argc.addr, !120, !DIExpression(), !121) 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 + #dbg_declare(ptr %argv.addr, !122, !DIExpression(), !123) + %call = call i64 @time(ptr noundef null) #4, !dbg !124 + %conv = trunc i64 %call to i32, !dbg !125 + call void @srand(i32 noundef %conv) #4, !dbg !126 + call void @printLine(ptr noundef @.str), !dbg !127 + call void @CWE126_Buffer_Overread__wchar_t_declare_loop_01_good(), !dbg !128 + call void @printLine(ptr noundef @.str.1), !dbg !129 + call void @printLine(ptr noundef @.str.2), !dbg !130 + call void @CWE126_Buffer_Overread__wchar_t_declare_loop_01_bad(), !dbg !131 + call void @printLine(ptr noundef @.str.3), !dbg !132 + ret i32 0, !dbg !133 } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #4 +declare void @printLine(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !133 { +define internal void @goodG2B() #0 !dbg !134 { entry: %data = alloca ptr, align 8 %dataBadBuffer = alloca [50 x i32], align 16 @@ -138,89 +135,88 @@ entry: %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 + #dbg_declare(ptr %data, !135, !DIExpression(), !136) + #dbg_declare(ptr %dataBadBuffer, !137, !DIExpression(), !138) + #dbg_declare(ptr %dataGoodBuffer, !139, !DIExpression(), !140) + %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !141 + %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 65, i64 noundef 49) #4, !dbg !142 + %arrayidx = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 49, !dbg !143 + store i32 0, ptr %arrayidx, align 4, !dbg !144 + %arraydecay1 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !145 + %call2 = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 65, i64 noundef 99) #4, !dbg !146 + %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !147 + store i32 0, ptr %arrayidx3, align 4, !dbg !148 + %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !149 + store ptr %arraydecay4, ptr %data, align 8, !dbg !150 + #dbg_declare(ptr %i, !151, !DIExpression(), !153) + #dbg_declare(ptr %destLen, !154, !DIExpression(), !155) + #dbg_declare(ptr %dest, !156, !DIExpression(), !157) + %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !158 + %call6 = call ptr @wmemset(ptr noundef %arraydecay5, i32 noundef 67, i64 noundef 99) #4, !dbg !159 + %arrayidx7 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !160 + store i32 0, ptr %arrayidx7, align 4, !dbg !161 + %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !162 + %call9 = call i64 @wcslen(ptr noundef %arraydecay8) #5, !dbg !163 + store i64 %call9, ptr %destLen, align 8, !dbg !164 + %0 = load ptr, ptr %data, align 8, !dbg !165 + %1 = load i64, ptr %destLen, align 8, !dbg !166 + %sub = sub i64 %1, 1, !dbg !167 + %mul = mul i64 %sub, 4, !dbg !168 + %call10 = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %0, i64 noundef %mul, i32 noundef 0), !dbg !169 + store i64 0, ptr %i, align 8, !dbg !170 + br label %for.cond, !dbg !172 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 + %2 = load i64, ptr %i, align 8, !dbg !173 + %3 = load i64, ptr %destLen, align 8, !dbg !175 + %cmp = icmp ult i64 %2, %3, !dbg !176 + br i1 %cmp, label %for.body, label %for.end, !dbg !177 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 + %4 = load ptr, ptr %data, align 8, !dbg !178 + %5 = load i64, ptr %i, align 8, !dbg !180 + %arrayidx11 = getelementptr inbounds nuw i32, ptr %4, i64 %5, !dbg !178 + %6 = load i32, ptr %arrayidx11, align 4, !dbg !178 + %7 = load i64, ptr %i, align 8, !dbg !181 + %arrayidx12 = getelementptr inbounds nuw [100 x i32], ptr %dest, i64 0, i64 %7, !dbg !182 + store i32 %6, ptr %arrayidx12, align 4, !dbg !183 + %8 = load ptr, ptr %data, align 8, !dbg !184 + %9 = load i64, ptr %i, align 8, !dbg !185 + %add = add i64 %9, 1, !dbg !186 + %mul13 = mul i64 %add, 4, !dbg !187 + %sub14 = sub i64 %mul13, 1, !dbg !188 + %call15 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %8, i64 noundef %sub14), !dbg !189 + br label %for.inc, !dbg !190 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 + %10 = load i64, ptr %i, align 8, !dbg !191 + %inc = add i64 %10, 1, !dbg !191 + store i64 %inc, ptr %i, align 8, !dbg !191 + br label %for.cond, !dbg !192, !llvm.loop !193 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 + %11 = load ptr, ptr %data, align 8, !dbg !195 + %12 = load i64, ptr %destLen, align 8, !dbg !196 + %mul16 = mul i64 %12, 4, !dbg !197 + %sub17 = sub i64 %mul16, 1, !dbg !198 + %call18 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %11, i64 noundef %sub17), !dbg !199 + %arrayidx19 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !200 + store i32 0, ptr %arrayidx19, align 4, !dbg !201 + %arraydecay20 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !202 + call void @printWLine(ptr noundef %arraydecay20), !dbg !203 + ret void, !dbg !204 } -declare i32 @BOF_CHECK_GEP(...) #4 +declare i32 @BOF_CHECK_GEP(...) #3 -declare i32 @SAFE_BUFACCESS(...) #4 +declare i32 @SAFE_BUFACCESS(...) #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 = { 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } +attributes #5 = { nounwind willreturn memory(read) } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} @@ -228,7 +224,7 @@ attributes #6 = { nounwind willreturn memory(read) } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c", directory: "/root/testsss/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} @@ -248,8 +244,8 @@ attributes #6 = { nounwind willreturn memory(read) } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c", directory: "/root/testsss/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} @@ -260,15 +256,15 @@ attributes #6 = { nounwind willreturn memory(read) } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 24, baseType: !43) +!42 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -293,140 +289,141 @@ attributes #6 = { nounwind willreturn memory(read) } !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) +!67 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !68, line: 18, baseType: !69) +!68 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") +!69 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) +!70 = !DILocation(line: 35, column: 16, scope: !66) +!71 = !DILocalVariable(name: "destLen", scope: !66, file: !2, line: 35, type: !67) +!72 = !DILocation(line: 35, column: 19, scope: !66) +!73 = !DILocalVariable(name: "dest", scope: !66, file: !2, line: 36, type: !51) +!74 = !DILocation(line: 36, column: 17, scope: !66) +!75 = !DILocation(line: 37, column: 17, scope: !66) +!76 = !DILocation(line: 37, column: 9, scope: !66) +!77 = !DILocation(line: 38, column: 9, scope: !66) +!78 = !DILocation(line: 38, column: 21, scope: !66) +!79 = !DILocation(line: 39, column: 26, scope: !66) +!80 = !DILocation(line: 39, column: 19, scope: !66) +!81 = !DILocation(line: 39, column: 17, scope: !66) +!82 = !DILocation(line: 42, column: 16, scope: !83) +!83 = distinct !DILexicalBlock(scope: !66, file: !2, line: 42, column: 9) +!84 = !DILocation(line: 42, column: 14, scope: !83) +!85 = !DILocation(line: 42, column: 21, scope: !86) +!86 = distinct !DILexicalBlock(scope: !83, file: !2, line: 42, column: 9) +!87 = !DILocation(line: 42, column: 25, scope: !86) +!88 = !DILocation(line: 42, column: 23, scope: !86) +!89 = !DILocation(line: 42, column: 9, scope: !83) +!90 = !DILocation(line: 44, column: 23, scope: !91) +!91 = distinct !DILexicalBlock(scope: !86, file: !2, line: 43, column: 9) +!92 = !DILocation(line: 44, column: 28, scope: !91) +!93 = !DILocation(line: 44, column: 18, scope: !91) +!94 = !DILocation(line: 44, column: 13, scope: !91) +!95 = !DILocation(line: 44, column: 21, scope: !91) +!96 = !DILocation(line: 45, column: 9, scope: !91) +!97 = !DILocation(line: 42, column: 35, scope: !86) +!98 = !DILocation(line: 42, column: 9, scope: !86) +!99 = distinct !{!99, !89, !100, !101} +!100 = !DILocation(line: 45, column: 9, scope: !83) +!101 = !{!"llvm.loop.mustprogress"} +!102 = !DILocation(line: 46, column: 26, scope: !66) +!103 = !DILocation(line: 46, column: 32, scope: !66) +!104 = !DILocation(line: 46, column: 40, scope: !66) +!105 = !DILocation(line: 46, column: 58, scope: !66) +!106 = !DILocation(line: 46, column: 9, scope: !66) +!107 = !DILocation(line: 47, column: 9, scope: !66) +!108 = !DILocation(line: 47, column: 21, scope: !66) +!109 = !DILocation(line: 48, column: 20, scope: !66) +!110 = !DILocation(line: 48, column: 9, scope: !66) +!111 = !DILocation(line: 50, column: 1, scope: !35) +!112 = 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) +!113 = !DILocation(line: 90, column: 5, scope: !112) +!114 = !DILocation(line: 91, column: 1, scope: !112) +!115 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 103, type: !116, scopeLine: 104, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) +!116 = !DISubroutineType(types: !117) +!117 = !{!43, !43, !118} +!118 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !119, size: 64) +!119 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!120 = !DILocalVariable(name: "argc", arg: 1, scope: !115, file: !2, line: 103, type: !43) +!121 = !DILocation(line: 103, column: 14, scope: !115) +!122 = !DILocalVariable(name: "argv", arg: 2, scope: !115, file: !2, line: 103, type: !118) +!123 = !DILocation(line: 103, column: 27, scope: !115) +!124 = !DILocation(line: 106, column: 22, scope: !115) +!125 = !DILocation(line: 106, column: 12, scope: !115) +!126 = !DILocation(line: 106, column: 5, scope: !115) +!127 = !DILocation(line: 108, column: 5, scope: !115) +!128 = !DILocation(line: 109, column: 5, scope: !115) +!129 = !DILocation(line: 110, column: 5, scope: !115) +!130 = !DILocation(line: 113, column: 5, scope: !115) +!131 = !DILocation(line: 114, column: 5, scope: !115) +!132 = !DILocation(line: 115, column: 5, scope: !115) +!133 = !DILocation(line: 117, column: 5, scope: !115) +!134 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 57, type: !36, scopeLine: 58, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) +!135 = !DILocalVariable(name: "data", scope: !134, file: !2, line: 59, type: !40) +!136 = !DILocation(line: 59, column: 15, scope: !134) +!137 = !DILocalVariable(name: "dataBadBuffer", scope: !134, file: !2, line: 60, type: !46) +!138 = !DILocation(line: 60, column: 13, scope: !134) +!139 = !DILocalVariable(name: "dataGoodBuffer", scope: !134, file: !2, line: 61, type: !51) +!140 = !DILocation(line: 61, column: 13, scope: !134) +!141 = !DILocation(line: 62, column: 13, scope: !134) +!142 = !DILocation(line: 62, column: 5, scope: !134) +!143 = !DILocation(line: 63, column: 5, scope: !134) +!144 = !DILocation(line: 63, column: 25, scope: !134) +!145 = !DILocation(line: 64, column: 13, scope: !134) +!146 = !DILocation(line: 64, column: 5, scope: !134) +!147 = !DILocation(line: 65, column: 5, scope: !134) +!148 = !DILocation(line: 65, column: 27, scope: !134) +!149 = !DILocation(line: 67, column: 12, scope: !134) +!150 = !DILocation(line: 67, column: 10, scope: !134) +!151 = !DILocalVariable(name: "i", scope: !152, file: !2, line: 69, type: !67) +!152 = distinct !DILexicalBlock(scope: !134, file: !2, line: 68, column: 5) +!153 = !DILocation(line: 69, column: 16, scope: !152) +!154 = !DILocalVariable(name: "destLen", scope: !152, file: !2, line: 69, type: !67) +!155 = !DILocation(line: 69, column: 19, scope: !152) +!156 = !DILocalVariable(name: "dest", scope: !152, file: !2, line: 70, type: !51) +!157 = !DILocation(line: 70, column: 17, scope: !152) +!158 = !DILocation(line: 71, column: 17, scope: !152) +!159 = !DILocation(line: 71, column: 9, scope: !152) +!160 = !DILocation(line: 72, column: 9, scope: !152) +!161 = !DILocation(line: 72, column: 21, scope: !152) +!162 = !DILocation(line: 73, column: 26, scope: !152) +!163 = !DILocation(line: 73, column: 19, scope: !152) +!164 = !DILocation(line: 73, column: 17, scope: !152) +!165 = !DILocation(line: 76, column: 23, scope: !152) +!166 = !DILocation(line: 76, column: 30, scope: !152) +!167 = !DILocation(line: 76, column: 38, scope: !152) +!168 = !DILocation(line: 76, column: 42, scope: !152) +!169 = !DILocation(line: 76, column: 9, scope: !152) +!170 = !DILocation(line: 77, column: 16, scope: !171) +!171 = distinct !DILexicalBlock(scope: !152, file: !2, line: 77, column: 9) +!172 = !DILocation(line: 77, column: 14, scope: !171) +!173 = !DILocation(line: 77, column: 21, scope: !174) +!174 = distinct !DILexicalBlock(scope: !171, file: !2, line: 77, column: 9) +!175 = !DILocation(line: 77, column: 25, scope: !174) +!176 = !DILocation(line: 77, column: 23, scope: !174) +!177 = !DILocation(line: 77, column: 9, scope: !171) +!178 = !DILocation(line: 79, column: 23, scope: !179) +!179 = distinct !DILexicalBlock(scope: !174, file: !2, line: 78, column: 9) +!180 = !DILocation(line: 79, column: 28, scope: !179) +!181 = !DILocation(line: 79, column: 18, scope: !179) +!182 = !DILocation(line: 79, column: 13, scope: !179) +!183 = !DILocation(line: 79, column: 21, scope: !179) +!184 = !DILocation(line: 80, column: 28, scope: !179) +!185 = !DILocation(line: 80, column: 35, scope: !179) +!186 = !DILocation(line: 80, column: 37, scope: !179) +!187 = !DILocation(line: 80, column: 42, scope: !179) +!188 = !DILocation(line: 80, column: 60, scope: !179) +!189 = !DILocation(line: 80, column: 13, scope: !179) +!190 = !DILocation(line: 81, column: 9, scope: !179) +!191 = !DILocation(line: 77, column: 35, scope: !174) +!192 = !DILocation(line: 77, column: 9, scope: !174) +!193 = distinct !{!193, !177, !194, !101} +!194 = !DILocation(line: 81, column: 9, scope: !171) +!195 = !DILocation(line: 82, column: 24, scope: !152) +!196 = !DILocation(line: 82, column: 30, scope: !152) +!197 = !DILocation(line: 82, column: 38, scope: !152) +!198 = !DILocation(line: 82, column: 56, scope: !152) +!199 = !DILocation(line: 82, column: 9, scope: !152) +!200 = !DILocation(line: 83, column: 9, scope: !152) +!201 = !DILocation(line: 83, column: 21, scope: !152) +!202 = !DILocation(line: 84, column: 20, scope: !152) +!203 = !DILocation(line: 84, column: 9, scope: !152) +!204 = !DILocation(line: 86, column: 1, scope: !134) 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 index ba6aa96f9..61e6b933f 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -15,40 +15,40 @@ entry: %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 + #dbg_declare(ptr %data, !39, !DIExpression(), !44) + #dbg_declare(ptr %dataBadBuffer, !45, !DIExpression(), !49) + #dbg_declare(ptr %dataGoodBuffer, !50, !DIExpression(), !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 + %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) #6, !dbg !60 + %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 %dest, metadata !65, metadata !DIExpression()), !dbg !67 + #dbg_declare(ptr %dest, !65, !DIExpression(), !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 + %call6 = call ptr @wmemset(ptr noundef %arraydecay5, i32 noundef 67, i64 noundef 99) #5, !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 + %call10 = call i64 @wcslen(ptr noundef %arraydecay9) #6, !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 + %call13 = call i64 @wcslen(ptr noundef %arraydecay12) #6, !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 + %call19 = call i64 @wcslen(ptr noundef %arraydecay18) #6, !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 @@ -58,23 +58,20 @@ entry: 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 ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #1 -declare i32 @SAFE_BUFACCESS(...) #3 +declare i32 @SAFE_BUFACCESS(...) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #4 +declare i64 @wcslen(ptr noundef) #3 -declare i32 @UNSAFE_BUFACCESS(...) #3 +declare i32 @UNSAFE_BUFACCESS(...) #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) #5 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #4 -declare void @printWLine(ptr noundef) #3 +declare void @printWLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @CWE126_Buffer_Overread__wchar_t_declare_memmove_01_good() #0 !dbg !94 { @@ -91,12 +88,12 @@ entry: %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 + #dbg_declare(ptr %argc.addr, !102, !DIExpression(), !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 + #dbg_declare(ptr %argv.addr, !104, !DIExpression(), !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) #6, !dbg !108 + call void @srand(i32 noundef %conv) #5, !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 @@ -107,12 +104,12 @@ entry: } ; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 +declare void @srand(i32 noundef) #1 ; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 +declare i64 @time(ptr noundef) #1 -declare void @printLine(ptr noundef) #3 +declare void @printLine(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define internal void @goodG2B() #0 !dbg !116 { @@ -121,40 +118,40 @@ entry: %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 + #dbg_declare(ptr %data, !117, !DIExpression(), !118) + #dbg_declare(ptr %dataBadBuffer, !119, !DIExpression(), !120) + #dbg_declare(ptr %dataGoodBuffer, !121, !DIExpression(), !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 + %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 65, i64 noundef 49) #5, !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 + %call2 = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 65, i64 noundef 99) #5, !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 + #dbg_declare(ptr %dest, !133, !DIExpression(), !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 + %call6 = call ptr @wmemset(ptr noundef %arraydecay5, i32 noundef 67, i64 noundef 99) #5, !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 + %call10 = call i64 @wcslen(ptr noundef %arraydecay9) #6, !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 + %call13 = call i64 @wcslen(ptr noundef %arraydecay12) #6, !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 + %call19 = call i64 @wcslen(ptr noundef %arraydecay18) #6, !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 @@ -164,14 +161,13 @@ entry: 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { nounwind } +attributes #6 = { nounwind willreturn memory(read) } !llvm.dbg.cu = !{!22} !llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} @@ -179,7 +175,7 @@ attributes #7 = { nounwind willreturn memory(read) } !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") +!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c", directory: "/root/testsss/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} @@ -199,8 +195,8 @@ attributes #7 = { nounwind willreturn memory(read) } !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") +!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c", directory: "/root/testsss/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} @@ -211,15 +207,15 @@ attributes #7 = { nounwind willreturn memory(read) } !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"} +!34 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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") +!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 24, baseType: !43) +!42 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_wchar_t.h", directory: "", checksumkind: CSK_MD5, checksum: "1bf0c51e90dd5eb05cdcc01afdea587a") !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) @@ -271,7 +267,7 @@ attributes #7 = { nounwind willreturn memory(read) } !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) +!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) !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) diff --git a/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_01.c.bc b/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_01.c.bc index a97516bde..d2e1bec81 100644 --- a/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_01.c.bc +++ b/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_01.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_01.c.bc' +source_filename = "/root/testsss/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_01.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [11 x i8] c"worldworld\00", align 1, !dbg !0 @.str.1 = private unnamed_addr constant [6 x i8] c"Hello\00", align 1, !dbg !7 @@ -13,35 +13,31 @@ entry: %buffer = alloca [10 x i8], align 1 %largeString = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !28, metadata !DIExpression()), !dbg !32 - call void @llvm.dbg.declare(metadata ptr %largeString, metadata !33, metadata !DIExpression()), !dbg !35 + #dbg_declare(ptr %buffer, !28, !DIExpression(), !32) + #dbg_declare(ptr %largeString, !33, !DIExpression(), !35) store ptr @.str, ptr %largeString, align 8, !dbg !35 %arraydecay = getelementptr inbounds [10 x i8], ptr %buffer, i64 0, i64 0, !dbg !36 - %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef @.str.1) #4, !dbg !37 + %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef @.str.1) #3, !dbg !37 %arraydecay1 = getelementptr inbounds [10 x i8], ptr %buffer, i64 0, i64 0, !dbg !38 %0 = load ptr, ptr %largeString, align 8, !dbg !39 - %call2 = call ptr @strcat(ptr noundef %arraydecay1, ptr noundef %0) #4, !dbg !40 + %call2 = call ptr @strcat(ptr noundef %arraydecay1, ptr noundef %0) #3, !dbg !40 %arraydecay3 = getelementptr inbounds [10 x i8], ptr %buffer, i64 0, i64 0, !dbg !41 call void @UNSAFE_BUFACCESS(ptr noundef %arraydecay3, i32 noundef 16), !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 - ; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #2 +declare ptr @strcpy(ptr noundef, ptr noundef) #1 ; Function Attrs: nounwind -declare ptr @strcat(ptr noundef, ptr noundef) #2 +declare ptr @strcat(ptr noundef, ptr noundef) #1 -declare void @UNSAFE_BUFACCESS(ptr noundef, i32 noundef) #3 +declare void @UNSAFE_BUFACCESS(ptr noundef, 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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nounwind } !llvm.dbg.cu = !{!12} !llvm.module.flags = !{!15, !16, !17, !18, !19, !20, !21} @@ -49,7 +45,7 @@ attributes #4 = { nounwind } !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_overflow_tests/ExtAPI_strcat_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "37510f61bc67ba1273d991d36467520a") +!2 = !DIFile(filename: "src/ae_overflow_tests/ExtAPI_strcat_01.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "37510f61bc67ba1273d991d36467520a") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 88, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} @@ -59,8 +55,8 @@ attributes #4 = { nounwind } !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 48, elements: !10) !10 = !{!11} !11 = !DISubrange(count: 6) -!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_overflow_tests/ExtAPI_strcat_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "37510f61bc67ba1273d991d36467520a") +!12 = distinct !DICompileUnit(language: DW_LANG_C11, file: !13, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !14, splitDebugInlining: false, nameTableKind: None) +!13 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_01.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "37510f61bc67ba1273d991d36467520a") !14 = !{!0, !7} !15 = !{i32 7, !"Dwarf Version", i32 5} !16 = !{i32 2, !"Debug Info Version", i32 3} @@ -69,7 +65,7 @@ attributes #4 = { nounwind } !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"} +!22 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !23 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 5, type: !24, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !27) !24 = !DISubroutineType(types: !25) !25 = !{!26} diff --git a/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_02.c.bc b/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_02.c.bc index 20945d689..609aa9dcf 100644 --- a/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_02.c.bc +++ b/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_02.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_02.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_02.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_02.c.bc' +source_filename = "/root/testsss/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_02.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @.str = private unnamed_addr constant [6 x i8] c"Hello\00", align 1, !dbg !0 @.str.1 = private unnamed_addr constant [6 x i8] c"World\00", align 1, !dbg !7 @@ -20,11 +20,11 @@ entry: %strings = alloca [6 x ptr], align 16 %i = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !47, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %buffer, !47, !DIExpression(), !51) call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 20, i1 false), !dbg !51 - call void @llvm.dbg.declare(metadata ptr %strings, metadata !52, metadata !DIExpression()), !dbg !55 + #dbg_declare(ptr %strings, !52, !DIExpression(), !55) call void @llvm.memcpy.p0.p0.i64(ptr align 16 %strings, ptr align 16 @__const.main.strings, i64 48, i1 false), !dbg !55 - call void @llvm.dbg.declare(metadata ptr %i, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %i, !56, !DIExpression(), !57) store i32 0, ptr %i, align 4, !dbg !58 br label %for.cond, !dbg !60 @@ -39,7 +39,7 @@ for.body: ; preds = %for.cond %idxprom = sext i32 %1 to i64, !dbg !68 %arrayidx = getelementptr inbounds [6 x ptr], ptr %strings, i64 0, i64 %idxprom, !dbg !68 %2 = load ptr, ptr %arrayidx, align 8, !dbg !68 - %call = call ptr @strcat(ptr noundef %arraydecay, ptr noundef %2) #6, !dbg !69 + %call = call ptr @strcat(ptr noundef %arraydecay, ptr noundef %2) #5, !dbg !69 br label %for.inc, !dbg !70 for.inc: ; preds = %for.body @@ -56,29 +56,25 @@ for.end: ; preds = %for.cond ret i32 0, !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: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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) #3 +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) #4 +declare ptr @strcat(ptr noundef, ptr noundef) #3 -declare void @UNSAFE_BUFACCESS(ptr noundef, i32 noundef) #5 +declare void @UNSAFE_BUFACCESS(ptr noundef, i32 noundef) #4 -declare i32 @printf(ptr noundef, ...) #5 +declare i32 @printf(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 = { 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 = { 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 } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) } +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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!31} !llvm.module.flags = !{!34, !35, !36, !37, !38, !39, !40} @@ -86,7 +82,7 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 6, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/ExtAPI_strcat_02.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "129a4513e6200aec4a4fee5116412a13") +!2 = !DIFile(filename: "src/ae_overflow_tests/ExtAPI_strcat_02.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "129a4513e6200aec4a4fee5116412a13") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 48, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} @@ -115,8 +111,8 @@ attributes #6 = { nounwind } !28 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 96, elements: !29) !29 = !{!30} !30 = !DISubrange(count: 12) -!31 = distinct !DICompileUnit(language: DW_LANG_C11, file: !32, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !33, splitDebugInlining: false, nameTableKind: None) -!32 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_02.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "129a4513e6200aec4a4fee5116412a13") +!31 = distinct !DICompileUnit(language: DW_LANG_C11, file: !32, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !33, splitDebugInlining: false, nameTableKind: None) +!32 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_02.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "129a4513e6200aec4a4fee5116412a13") !33 = !{!0, !7, !9, !14, !19, !24, !26} !34 = !{i32 7, !"Dwarf Version", i32 5} !35 = !{i32 2, !"Debug Info Version", i32 3} @@ -125,7 +121,7 @@ attributes #6 = { nounwind } !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"} +!41 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !42 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 4, type: !43, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !31, retainedNodes: !46) !43 = !DISubroutineType(types: !44) !44 = !{!45} diff --git a/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_03.c.bc b/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_03.c.bc index def973891..cda90a8b8 100644 --- a/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_03.c.bc +++ b/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_03.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_03.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_03.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_03.c.bc' +source_filename = "/root/testsss/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_03.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @__const.main.buffer = private unnamed_addr constant [10 x i8] c"Hi\00\00\00\00\00\00\00\00", align 1 @.str = private unnamed_addr constant [17 x i8] c"Enter a string: \00", align 1, !dbg !0 @@ -15,18 +15,18 @@ entry: %buffer = alloca [10 x i8], align 1 %input = alloca [20 x i8], align 16 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !33, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %buffer, !33, !DIExpression(), !37) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %buffer, ptr align 1 @__const.main.buffer, i64 10, i1 false), !dbg !37 - call void @llvm.dbg.declare(metadata ptr %input, metadata !38, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %input, !38, !DIExpression(), !42) %call = call i32 (ptr, ...) @printf(ptr noundef @.str), !dbg !43 %arraydecay = getelementptr inbounds [20 x i8], ptr %input, i64 0, i64 0, !dbg !44 %call1 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef %arraydecay), !dbg !45 %arraydecay2 = getelementptr inbounds [10 x i8], ptr %buffer, i64 0, i64 0, !dbg !46 %arraydecay3 = getelementptr inbounds [20 x i8], ptr %input, i64 0, i64 0, !dbg !47 - %call4 = call ptr @strcat(ptr noundef %arraydecay2, ptr noundef %arraydecay3) #6, !dbg !48 + %call4 = call ptr @strcat(ptr noundef %arraydecay2, ptr noundef %arraydecay3) #5, !dbg !48 %arraydecay5 = getelementptr inbounds [10 x i8], ptr %buffer, i64 0, i64 0, !dbg !49 %arraydecay6 = getelementptr inbounds [10 x i8], ptr %buffer, i64 0, i64 0, !dbg !50 - %call7 = call i64 @strlen(ptr noundef %arraydecay6) #7, !dbg !51 + %call7 = call i64 @strlen(ptr noundef %arraydecay6) #6, !dbg !51 %conv = trunc i64 %call7 to i32, !dbg !51 call void @UNSAFE_BUFACCESS(ptr noundef %arraydecay5, i32 noundef %conv), !dbg !52 %arraydecay8 = getelementptr inbounds [10 x i8], ptr %buffer, i64 0, i64 0, !dbg !53 @@ -34,32 +34,28 @@ entry: ret i32 0, !dbg !55 } -; 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 @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 -declare i32 @__isoc99_scanf(ptr noundef, ...) #3 +declare i32 @__isoc99_scanf(ptr noundef, ...) #2 ; Function Attrs: nounwind -declare ptr @strcat(ptr noundef, ptr noundef) #4 +declare ptr @strcat(ptr noundef, ptr noundef) #3 -declare void @UNSAFE_BUFACCESS(ptr noundef, i32 noundef) #3 +declare void @UNSAFE_BUFACCESS(ptr noundef, i32 noundef) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #5 +declare i64 @strlen(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 = { 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 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind } +attributes #6 = { nounwind willreturn memory(read) } !llvm.dbg.cu = !{!17} !llvm.module.flags = !{!20, !21, !22, !23, !24, !25, !26} @@ -67,7 +63,7 @@ attributes #7 = { nounwind willreturn memory(read) } !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_overflow_tests/ExtAPI_strcat_03.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7fb3e83750fbaa054f3b14665d795541") +!2 = !DIFile(filename: "src/ae_overflow_tests/ExtAPI_strcat_03.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "7fb3e83750fbaa054f3b14665d795541") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} @@ -82,8 +78,8 @@ attributes #7 = { nounwind willreturn memory(read) } !14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 96, elements: !15) !15 = !{!16} !16 = !DISubrange(count: 12) -!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_overflow_tests/ExtAPI_strcat_03.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7fb3e83750fbaa054f3b14665d795541") +!17 = distinct !DICompileUnit(language: DW_LANG_C11, file: !18, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) +!18 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_03.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "7fb3e83750fbaa054f3b14665d795541") !19 = !{!0, !7, !12} !20 = !{i32 7, !"Dwarf Version", i32 5} !21 = !{i32 2, !"Debug Info Version", i32 3} @@ -92,7 +88,7 @@ attributes #7 = { nounwind willreturn memory(read) } !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"} +!27 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !28 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 5, type: !29, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !17, retainedNodes: !32) !29 = !DISubroutineType(types: !30) !30 = !{!31} diff --git a/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_04.c.bc b/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_04.c.bc index 109d11e2b..c4ddc55e5 100644 --- a/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_04.c.bc +++ b/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_04.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_04.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_04.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_04.c.bc' +source_filename = "/root/testsss/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_04.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @__const.main.buffer = private unnamed_addr constant [15 x i8] c"Start\00\00\00\00\00\00\00\00\00\00", align 1 @.str = private unnamed_addr constant [6 x i8] c"12345\00", align 1, !dbg !0 @@ -16,24 +16,24 @@ entry: %string1 = alloca ptr, align 8 %string2 = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !30, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %buffer, !30, !DIExpression(), !34) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %buffer, ptr align 1 @__const.main.buffer, i64 15, i1 false), !dbg !34 - call void @llvm.dbg.declare(metadata ptr %string1, metadata !35, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %string1, !35, !DIExpression(), !37) store ptr @.str, ptr %string1, align 8, !dbg !37 - call void @llvm.dbg.declare(metadata ptr %string2, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %string2, !38, !DIExpression(), !39) store ptr @.str.1, ptr %string2, align 8, !dbg !39 %arraydecay = getelementptr inbounds [15 x i8], ptr %buffer, i64 0, i64 0, !dbg !40 %0 = load ptr, ptr %string1, align 8, !dbg !41 - %call = call ptr @strcat(ptr noundef %arraydecay, ptr noundef %0) #6, !dbg !42 + %call = call ptr @strcat(ptr noundef %arraydecay, ptr noundef %0) #5, !dbg !42 %arraydecay1 = getelementptr inbounds [15 x i8], ptr %buffer, i64 0, i64 0, !dbg !43 %1 = load ptr, ptr %string2, align 8, !dbg !44 - %call2 = call ptr @strcat(ptr noundef %arraydecay1, ptr noundef %1) #6, !dbg !45 + %call2 = call ptr @strcat(ptr noundef %arraydecay1, ptr noundef %1) #5, !dbg !45 %arraydecay3 = getelementptr inbounds [15 x i8], ptr %buffer, i64 0, i64 0, !dbg !46 %2 = load ptr, ptr %string1, align 8, !dbg !47 - %call4 = call i64 @strlen(ptr noundef %2) #7, !dbg !48 + %call4 = call i64 @strlen(ptr noundef %2) #6, !dbg !48 %add = add i64 5, %call4, !dbg !49 %3 = load ptr, ptr %string2, align 8, !dbg !50 - %call5 = call i64 @strlen(ptr noundef %3) #7, !dbg !51 + %call5 = call i64 @strlen(ptr noundef %3) #6, !dbg !51 %add6 = add i64 %add, %call5, !dbg !52 %conv = trunc i64 %add6 to i32, !dbg !53 call void @UNSAFE_BUFACCESS(ptr noundef %arraydecay3, i32 noundef %conv), !dbg !54 @@ -42,30 +42,26 @@ entry: ret i32 0, !dbg !57 } -; 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 @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1 ; Function Attrs: nounwind -declare ptr @strcat(ptr noundef, ptr noundef) #3 +declare ptr @strcat(ptr noundef, ptr noundef) #2 -declare void @UNSAFE_BUFACCESS(ptr noundef, i32 noundef) #4 +declare void @UNSAFE_BUFACCESS(ptr noundef, i32 noundef) #3 ; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #5 +declare i64 @strlen(ptr noundef) #4 -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(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 = { 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) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind } +attributes #6 = { nounwind willreturn memory(read) } !llvm.dbg.cu = !{!14} !llvm.module.flags = !{!17, !18, !19, !20, !21, !22, !23} @@ -73,7 +69,7 @@ attributes #7 = { nounwind willreturn memory(read) } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 6, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/ExtAPI_strcat_04.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fd5da5948da61c478b63a4564f9e5cd6") +!2 = !DIFile(filename: "src/ae_overflow_tests/ExtAPI_strcat_04.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fd5da5948da61c478b63a4564f9e5cd6") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 48, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} @@ -85,8 +81,8 @@ attributes #7 = { nounwind willreturn memory(read) } !11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 96, elements: !12) !12 = !{!13} !13 = !DISubrange(count: 12) -!14 = distinct !DICompileUnit(language: DW_LANG_C11, file: !15, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !16, splitDebugInlining: false, nameTableKind: None) -!15 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_04.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fd5da5948da61c478b63a4564f9e5cd6") +!14 = distinct !DICompileUnit(language: DW_LANG_C11, file: !15, producer: "Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !16, splitDebugInlining: false, nameTableKind: None) +!15 = !DIFile(filename: "/root/testsss/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_04.c", directory: "/root/testsss/Test-Suite", checksumkind: CSK_MD5, checksum: "fd5da5948da61c478b63a4564f9e5cd6") !16 = !{!0, !7, !9} !17 = !{i32 7, !"Dwarf Version", i32 5} !18 = !{i32 2, !"Debug Info Version", i32 3} @@ -95,7 +91,7 @@ attributes #7 = { nounwind willreturn memory(read) } !21 = !{i32 7, !"PIE Level", i32 2} !22 = !{i32 7, !"uwtable", i32 2} !23 = !{i32 7, !"frame-pointer", i32 2} -!24 = !{!"clang version 16.0.0"} +!24 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !25 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 4, type: !26, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !14, retainedNodes: !29) !26 = !DISubroutineType(types: !27) !27 = !{!28} diff --git a/test_cases_bc/basic_c_tests/CI-funptr.c.bc b/test_cases_bc/basic_c_tests/CI-funptr.c.bc index fd5b6f0fc..aaec2de56 100644 --- a/test_cases_bc/basic_c_tests/CI-funptr.c.bc +++ b/test_cases_bc/basic_c_tests/CI-funptr.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/CI-funptr.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -179,8 +179,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -190,4 +190,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/CI-global.c.bc b/test_cases_bc/basic_c_tests/CI-global.c.bc index c7df73bb2..d7c06a23c 100644 --- a/test_cases_bc/basic_c_tests/CI-global.c.bc +++ b/test_cases_bc/basic_c_tests/CI-global.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/CI-global.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -163,8 +163,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -174,4 +174,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/CI-local.c.bc b/test_cases_bc/basic_c_tests/CI-local.c.bc index ad01f9fc4..ac696b700 100644 --- a/test_cases_bc/basic_c_tests/CI-local.c.bc +++ b/test_cases_bc/basic_c_tests/CI-local.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/CI-local.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -186,8 +186,8 @@ 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -197,4 +197,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/array-constIdx.c.bc b/test_cases_bc/basic_c_tests/array-constIdx.c.bc index 52ec1b83a..19e3b90b7 100644 --- a/test_cases_bc/basic_c_tests/array-constIdx.c.bc +++ b/test_cases_bc/basic_c_tests/array-constIdx.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/array-constIdx.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { ptr, ptr } @@ -151,30 +151,30 @@ entry: %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 + %f1 = getelementptr inbounds nuw %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 + %f12 = getelementptr inbounds nuw %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 + %f14 = getelementptr inbounds nuw %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 + %f2 = getelementptr inbounds nuw %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 + %f17 = getelementptr inbounds nuw %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 + %f19 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -184,4 +184,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/array-varIdx.c.bc b/test_cases_bc/basic_c_tests/array-varIdx.c.bc index c1cb56c10..ac919872c 100644 --- a/test_cases_bc/basic_c_tests/array-varIdx.c.bc +++ b/test_cases_bc/basic_c_tests/array-varIdx.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/array-varIdx.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { ptr, ptr } @@ -151,27 +151,27 @@ entry: %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 + %f1 = getelementptr inbounds nuw %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 + %f12 = getelementptr inbounds nuw %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 + %f14 = getelementptr inbounds nuw %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 + %f2 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -181,4 +181,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/array-varIdx2.c.bc b/test_cases_bc/basic_c_tests/array-varIdx2.c.bc index cb7ef16f8..a472417fa 100644 --- a/test_cases_bc/basic_c_tests/array-varIdx2.c.bc +++ b/test_cases_bc/basic_c_tests/array-varIdx2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/array-varIdx2.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { ptr, ptr } @@ -151,38 +151,38 @@ entry: %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 + %f1 = getelementptr inbounds nuw %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 + %f12 = getelementptr inbounds nuw %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 + %f14 = getelementptr inbounds nuw %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 + %f2 = getelementptr inbounds nuw %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 + %f19 = getelementptr inbounds nuw %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 + %f112 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -192,4 +192,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/arraycopy1.c.bc b/test_cases_bc/basic_c_tests/arraycopy1.c.bc index ef51da0ea..25e4d3a1f 100644 --- a/test_cases_bc/basic_c_tests/arraycopy1.c.bc +++ b/test_cases_bc/basic_c_tests/arraycopy1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/arraycopy1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_c_tests/arraycopy1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { @@ -12,9 +12,8 @@ entry: %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 %a, ptr %source, align 8 + %arrayinit.element = getelementptr inbounds ptr, ptr %source, 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 @@ -26,8 +25,8 @@ entry: 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -37,4 +36,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/branch-call.c.bc b/test_cases_bc/basic_c_tests/branch-call.c.bc index c49c5d57a..4d624eac3 100644 --- a/test_cases_bc/basic_c_tests/branch-call.c.bc +++ b/test_cases_bc/basic_c_tests/branch-call.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/branch-call.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -201,8 +201,8 @@ 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -212,4 +212,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/branch-intra.c.bc b/test_cases_bc/basic_c_tests/branch-intra.c.bc index a761beb0f..77fa4d2fa 100644 --- a/test_cases_bc/basic_c_tests/branch-intra.c.bc +++ b/test_cases_bc/basic_c_tests/branch-intra.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/branch-intra.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -171,8 +171,8 @@ 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -182,4 +182,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/byteoffset1.c.bc b/test_cases_bc/basic_c_tests/byteoffset1.c.bc index a9fda41e5..b7992a75c 100644 --- a/test_cases_bc/basic_c_tests/byteoffset1.c.bc +++ b/test_cases_bc/basic_c_tests/byteoffset1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/byteoffset1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_c_tests/byteoffset1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.StructA = type { i32, ptr } @@ -35,12 +35,12 @@ entry: %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 + %f = getelementptr inbounds nuw %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 + %f1 = getelementptr inbounds nuw %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 @@ -57,7 +57,7 @@ entry: %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 + %f = getelementptr inbounds nuw %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) @@ -69,9 +69,9 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -82,4 +82,4 @@ attributes #3 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index d8c2c88be..615797c1a 100644 --- a/test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc +++ b/test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -193,8 +193,8 @@ if.end: ; preds = %if.then, %entry 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -204,4 +204,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index c720d6724..2039d3ea9 100644 --- a/test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc +++ b/test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { ptr, ptr } @@ -163,16 +163,16 @@ while.cond: ; preds = %while.body, %entry 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 + %next = getelementptr inbounds nuw %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 + %next3 = getelementptr inbounds nuw %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 + %f1 = getelementptr inbounds nuw %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 + %next4 = getelementptr inbounds nuw %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 @@ -181,21 +181,21 @@ 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 + %next5 = getelementptr inbounds nuw %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 + %next6 = getelementptr inbounds nuw %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 + %next7 = getelementptr inbounds nuw %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 + %f18 = getelementptr inbounds nuw %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 + %next9 = getelementptr inbounds nuw %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 + %f110 = getelementptr inbounds nuw %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 @@ -204,9 +204,9 @@ while.end: ; preds = %while.cond ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -217,6 +217,6 @@ attributes #3 = { nounwind allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 96331ee13..285a449a4 100644 --- a/test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc +++ b/test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.network = type { ptr, ptr, ptr, ptr } %struct.arc = type { ptr, ptr, i64 } @@ -18,11 +18,11 @@ entry: %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 + %stop_arcs = getelementptr inbounds nuw %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 + %arcs = getelementptr inbounds nuw %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 @@ -35,7 +35,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %6 = load ptr, ptr %arc, align 8 - %ident = getelementptr inbounds %struct.arc, ptr %6, i32 0, i32 2 + %ident = getelementptr inbounds nuw %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 @@ -57,7 +57,7 @@ if.end3: ; preds = %if.end, %for.body for.inc: ; preds = %if.end3 %9 = load ptr, ptr %arc, align 8 - %incdec.ptr = getelementptr inbounds %struct.arc, ptr %9, i32 1 + %incdec.ptr = getelementptr inbounds nuw %struct.arc, ptr %9, i32 1 store ptr %incdec.ptr, ptr %arc, align 8 br label %for.cond, !llvm.loop !6 @@ -67,8 +67,8 @@ for.end: ; preds = %for.cond 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -78,6 +78,6 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index ababcb4cc..6608d704e 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/field-ptr-arith-constIdx.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.s = type { ptr, ptr } @@ -152,11 +152,11 @@ entry: %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 + %f1 = getelementptr inbounds nuw %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 + %f2 = getelementptr inbounds nuw %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 + %f11 = getelementptr inbounds nuw %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 @@ -167,8 +167,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -178,4 +178,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index a6c00cfba..e7baa3f7a 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/field-ptr-arith-varIdx.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.s = type { ptr, ptr } @@ -152,11 +152,11 @@ entry: %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 + %f1 = getelementptr inbounds nuw %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 + %f2 = getelementptr inbounds nuw %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 + %f11 = getelementptr inbounds nuw %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 @@ -169,8 +169,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -180,4 +180,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/funptr-global.c.bc b/test_cases_bc/basic_c_tests/funptr-global.c.bc index 22dd2b0e7..17d320512 100644 --- a/test_cases_bc/basic_c_tests/funptr-global.c.bc +++ b/test_cases_bc/basic_c_tests/funptr-global.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/funptr-global.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.PLHashAllocOps = type { ptr } @@ -171,13 +171,13 @@ entry: 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 + %allocTable = getelementptr inbounds nuw %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 + %allocTable1 = getelementptr inbounds nuw %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) @@ -199,9 +199,9 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -212,4 +212,4 @@ attributes #3 = { nounwind allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index dd56a3e88..ceb12ace2 100644 --- a/test_cases_bc/basic_c_tests/funptr-nested-call.c.bc +++ b/test_cases_bc/basic_c_tests/funptr-nested-call.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-call.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -76,8 +76,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -87,4 +87,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/funptr-nested-struct-simple.c.bc b/test_cases_bc/basic_c_tests/funptr-nested-struct-simple.c.bc index 3e46f7802..65bbb5a81 100644 --- a/test_cases_bc/basic_c_tests/funptr-nested-struct-simple.c.bc +++ b/test_cases_bc/basic_c_tests/funptr-nested-struct-simple.c.bc @@ -1,14 +1,14 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-struct-simple.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/funptr-nested-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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-struct-simple.c.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_c_tests/funptr-nested-struct-simple.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.interesting = type { i32, ptr, ptr } %struct.nested_ptr = type { i32, ptr } @g = dso_local global i32 0, align 4 -@i1 = dso_local global %struct.interesting { i32 0, ptr @f1, ptr @f2 }, align 8 -@n1 = dso_local global %struct.nested_ptr { i32 0, ptr @i1 }, align 8 +@i1 = dso_local global { i32, [4 x i8], ptr, ptr } { i32 0, [4 x i8] zeroinitializer, ptr @f1, ptr @f2 }, align 8 +@n1 = dso_local global { i32, [4 x i8], ptr } { i32 0, [4 x i8] zeroinitializer, ptr @i1 }, align 8 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @f1(ptr noundef %a) #0 { @@ -36,12 +36,12 @@ entry: define dso_local void @test_ptr() #0 { entry: %interesting_stub = alloca %struct.interesting, align 8 - %0 = load ptr, ptr getelementptr inbounds (%struct.nested_ptr, ptr @n1, i32 0, i32 1), align 8 + %0 = load ptr, ptr getelementptr inbounds nuw (%struct.nested_ptr, ptr @n1, i32 0, i32 1), align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %interesting_stub, ptr align 8 %0, i64 24, i1 false) - %f1 = getelementptr inbounds %struct.interesting, ptr %interesting_stub, i32 0, i32 1 + %f1 = getelementptr inbounds nuw %struct.interesting, ptr %interesting_stub, i32 0, i32 1 %1 = load ptr, ptr %f1, align 8 call void %1(ptr noundef @g) - %f2 = getelementptr inbounds %struct.interesting, ptr %interesting_stub, i32 0, i32 2 + %f2 = getelementptr inbounds nuw %struct.interesting, ptr %interesting_stub, i32 0, i32 2 %2 = load ptr, ptr %f2, align 8 call void %2(ptr noundef @g) ret void @@ -50,8 +50,8 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -62,4 +62,4 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/funptr-nested-struct.c.bc b/test_cases_bc/basic_c_tests/funptr-nested-struct.c.bc index 849467e66..75cbc5665 100644 --- a/test_cases_bc/basic_c_tests/funptr-nested-struct.c.bc +++ b/test_cases_bc/basic_c_tests/funptr-nested-struct.c.bc @@ -1,14 +1,14 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-struct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/funptr-nested-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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-struct.c.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_c_tests/funptr-nested-struct.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" -%struct.interesting = type { i32, ptr, ptr } %struct.nested_ptr = type { i32, ptr } +%struct.interesting = type { i32, ptr, ptr } @g = dso_local global i32 0, align 4 -@i1 = dso_local global %struct.interesting { i32 0, ptr @f1, ptr @f2 }, align 8 -@n1 = dso_local global %struct.nested_ptr { i32 0, ptr @i1 }, align 8 +@i1 = dso_local global { i32, [4 x i8], ptr, ptr } { i32 0, [4 x i8] zeroinitializer, ptr @f1, ptr @f2 }, align 8 +@n1 = dso_local global { i32, [4 x i8], ptr } { i32 0, [4 x i8] zeroinitializer, ptr @i1 }, align 8 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @f1(ptr noundef %a) #0 { @@ -38,13 +38,13 @@ entry: %tmp = alloca %struct.nested_ptr, align 8 %interesting_stub = alloca %struct.interesting, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %tmp, ptr align 8 @n1, i64 16, i1 false) - %ptr = getelementptr inbounds %struct.nested_ptr, ptr %tmp, i32 0, i32 1 + %ptr = getelementptr inbounds nuw %struct.nested_ptr, ptr %tmp, i32 0, i32 1 %0 = load ptr, ptr %ptr, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %interesting_stub, ptr align 8 %0, i64 24, i1 false) - %f1 = getelementptr inbounds %struct.interesting, ptr %interesting_stub, i32 0, i32 1 + %f1 = getelementptr inbounds nuw %struct.interesting, ptr %interesting_stub, i32 0, i32 1 %1 = load ptr, ptr %f1, align 8 call void %1(ptr noundef @g) - %f2 = getelementptr inbounds %struct.interesting, ptr %interesting_stub, i32 0, i32 2 + %f2 = getelementptr inbounds nuw %struct.interesting, ptr %interesting_stub, i32 0, i32 2 %2 = load ptr, ptr %f2, align 8 call void %2(ptr noundef @g) ret void @@ -53,8 +53,8 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -65,4 +65,4 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/funptr-simple.c.bc b/test_cases_bc/basic_c_tests/funptr-simple.c.bc index 223b09b1d..eb0a2bd85 100644 --- a/test_cases_bc/basic_c_tests/funptr-simple.c.bc +++ b/test_cases_bc/basic_c_tests/funptr-simple.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/funptr-simple.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -189,8 +189,8 @@ 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -200,4 +200,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/funptr-struct.c.bc b/test_cases_bc/basic_c_tests/funptr-struct.c.bc index 420d509dc..11f6b6914 100644 --- a/test_cases_bc/basic_c_tests/funptr-struct.c.bc +++ b/test_cases_bc/basic_c_tests/funptr-struct.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/funptr-struct.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MYFILE = type { ptr } @@ -155,7 +155,7 @@ entry: %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 + %pt = getelementptr inbounds nuw %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) @@ -194,8 +194,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -206,4 +206,4 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/global-array.c.bc b/test_cases_bc/basic_c_tests/global-array.c.bc index e60ea36ec..5713f2820 100644 --- a/test_cases_bc/basic_c_tests/global-array.c.bc +++ b/test_cases_bc/basic_c_tests/global-array.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-array.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { ptr, [64 x i8] } @@ -155,7 +155,7 @@ entry: 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 + %f2 = getelementptr inbounds nuw %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 @@ -187,11 +187,11 @@ for.cond: ; preds = %for.inc, %entry 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 + %arrayidx = getelementptr inbounds nuw 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 + %arrayidx1 = getelementptr inbounds nuw i8, ptr %5, i64 %6 store i8 %4, ptr %arrayidx1, align 1 br label %for.inc @@ -217,8 +217,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -228,6 +228,6 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 2939e5de6..0fbd1159b 100644 --- a/test_cases_bc/basic_c_tests/global-call-noparam.c.bc +++ b/test_cases_bc/basic_c_tests/global-call-noparam.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-call-noparam.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -171,8 +171,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -182,4 +182,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 6ba7dd7d0..a23aef9f6 100644 --- a/test_cases_bc/basic_c_tests/global-call-struct.c.bc +++ b/test_cases_bc/basic_c_tests/global-call-struct.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-call-struct.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { [20 x i8], i32, ptr } @@ -188,15 +188,15 @@ entry: %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 + %4 = load ptr, ptr getelementptr inbounds nuw (%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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -206,4 +206,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 223b40afe..b782eee9c 100644 --- a/test_cases_bc/basic_c_tests/global-call-twoparms.c.bc +++ b/test_cases_bc/basic_c_tests/global-call-twoparms.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-call-twoparms.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { i32, ptr } @@ -176,14 +176,14 @@ entry: ; 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 + store ptr @foo, ptr getelementptr inbounds nuw (%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 + store ptr @bar, ptr getelementptr inbounds nuw (%struct.MyStruct, ptr @global, i32 0, i32 1), align 8 ret void } @@ -194,7 +194,7 @@ entry: %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 + %0 = load ptr, ptr getelementptr inbounds nuw (%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) @@ -222,8 +222,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -233,4 +233,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 418eeb1c7..79d7d851a 100644 --- a/test_cases_bc/basic_c_tests/global-const-struct.c.bc +++ b/test_cases_bc/basic_c_tests/global-const-struct.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-const-struct.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MYFILE = type { ptr } %struct.MyStruct = type { ptr } @@ -168,9 +168,9 @@ entry: %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 + %myfile = getelementptr inbounds nuw %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 + %pt = getelementptr inbounds nuw %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) @@ -186,8 +186,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -197,4 +197,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/global-funptr.c.bc b/test_cases_bc/basic_c_tests/global-funptr.c.bc index 07b2b7bb7..178d9b5ca 100644 --- a/test_cases_bc/basic_c_tests/global-funptr.c.bc +++ b/test_cases_bc/basic_c_tests/global-funptr.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-funptr.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { ptr, ptr } @@ -168,8 +168,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -179,4 +179,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/global-initializer.c.bc b/test_cases_bc/basic_c_tests/global-initializer.c.bc index 34b0bfcda..1594adb03 100644 --- a/test_cases_bc/basic_c_tests/global-initializer.c.bc +++ b/test_cases_bc/basic_c_tests/global-initializer.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-initializer.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -174,8 +174,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -185,4 +185,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 6d47c3769..2c04f5dbe 100644 --- a/test_cases_bc/basic_c_tests/global-nested-calls.c.bc +++ b/test_cases_bc/basic_c_tests/global-nested-calls.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-nested-calls.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -176,8 +176,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -187,4 +187,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/global-simple.c.bc b/test_cases_bc/basic_c_tests/global-simple.c.bc index fdbe44307..2ab47359b 100644 --- a/test_cases_bc/basic_c_tests/global-simple.c.bc +++ b/test_cases_bc/basic_c_tests/global-simple.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/global-simple.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -166,8 +166,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -177,4 +177,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/heap-indirect.c.bc b/test_cases_bc/basic_c_tests/heap-indirect.c.bc index 645b8ef9e..310bb3647 100644 --- a/test_cases_bc/basic_c_tests/heap-indirect.c.bc +++ b/test_cases_bc/basic_c_tests/heap-indirect.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/heap-indirect.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -181,9 +181,9 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -194,4 +194,4 @@ attributes #3 = { nounwind allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc b/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc index 7ee25ec75..ff46b95c1 100644 --- a/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc +++ b/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.Node = type { ptr, ptr } @@ -156,7 +156,7 @@ entry: 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 + %data = getelementptr inbounds nuw %struct.Node, ptr %0, i32 0, i32 0 store ptr null, ptr %data, align 8 br label %while.cond @@ -168,20 +168,20 @@ while.cond: ; preds = %while.body, %entry 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 + %data1 = getelementptr inbounds nuw %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 + %data2 = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 + %data4 = getelementptr inbounds nuw %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 @@ -216,22 +216,22 @@ entry: %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 + %next = getelementptr inbounds nuw %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 + %data = getelementptr inbounds nuw %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 + %next1 = getelementptr inbounds nuw %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 + %next2 = getelementptr inbounds nuw %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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -242,6 +242,6 @@ attributes #3 = { nounwind allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 1f1f49622..0c982a6c4 100644 --- a/test_cases_bc/basic_c_tests/heap-wrapper.c.bc +++ b/test_cases_bc/basic_c_tests/heap-wrapper.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/heap-wrapper.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -170,9 +170,9 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -183,4 +183,4 @@ attributes #3 = { nounwind allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/int2pointer.c.bc b/test_cases_bc/basic_c_tests/int2pointer.c.bc index 47ab9e4cb..827abfcf0 100644 --- a/test_cases_bc/basic_c_tests/int2pointer.c.bc +++ b/test_cases_bc/basic_c_tests/int2pointer.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/int2pointer.c.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_c_tests/int2pointer.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { i32, i32 } @@ -151,7 +151,7 @@ entry: %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 + %f1 = getelementptr inbounds nuw %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 @@ -167,8 +167,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -178,4 +178,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/mesa.c.bc b/test_cases_bc/basic_c_tests/mesa.c.bc index ac2e517e4..3f23d7385 100644 --- a/test_cases_bc/basic_c_tests/mesa.c.bc +++ b/test_cases_bc/basic_c_tests/mesa.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/mesa.c.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_c_tests/mesa.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.gl_api_table = type { ptr } @@ -74,7 +74,7 @@ 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 + %Accum = getelementptr inbounds nuw %struct.gl_api_table, ptr %0, i32 0, i32 0 store ptr @gl_Accum, ptr %Accum, align 8 ret void } @@ -97,9 +97,9 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind allocsize(0,1) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -110,6 +110,6 @@ attributes #3 = { nounwind allocsize(0,1) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index d11f98ea7..8be04d599 100644 --- a/test_cases_bc/basic_c_tests/ptr-dereference1.c.bc +++ b/test_cases_bc/basic_c_tests/ptr-dereference1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference1.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -163,8 +163,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -174,4 +174,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc b/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc index 6cd8fe15a..85df2b3cd 100644 --- a/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc +++ b/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -167,8 +167,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -178,4 +178,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc b/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc index 36445b8b6..5691b4d58 100644 --- a/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc +++ b/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -183,8 +183,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -194,4 +194,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/spec-equake.c.bc b/test_cases_bc/basic_c_tests/spec-equake.c.bc index 16dea3e95..1a944126c 100644 --- a/test_cases_bc/basic_c_tests/spec-equake.c.bc +++ b/test_cases_bc/basic_c_tests/spec-equake.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/spec-equake.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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 @@ -1088,11 +1088,11 @@ 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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 #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { nounwind allocsize(0) } attributes #6 = { nounwind } @@ -1104,7 +1104,7 @@ attributes #6 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !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 index 1c5441572..3f0707fec 100644 --- a/test_cases_bc/basic_c_tests/spec-gap.c.bc +++ b/test_cases_bc/basic_c_tests/spec-gap.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/spec-gap.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.TypHeader = type { ptr } @@ -160,15 +160,15 @@ entry: %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 + %ptr = getelementptr inbounds nuw %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.ptr = getelementptr inbounds nuw 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 + %ptr2 = getelementptr inbounds nuw %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 @@ -213,22 +213,22 @@ 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 + %ptr9 = getelementptr inbounds nuw %struct.TypHeader, ptr %17, i32 0, i32 0 %18 = load ptr, ptr %ptr9, align 8 - %add.ptr10 = getelementptr inbounds ptr, ptr %18, i64 %div8 + %add.ptr10 = getelementptr inbounds nuw 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 + %incdec.ptr11 = getelementptr inbounds nuw %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 + %ptr12 = getelementptr inbounds nuw %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 @@ -246,7 +246,7 @@ entry: 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 + %ptr = getelementptr inbounds nuw %struct.TypHeader, ptr %1, i32 0, i32 0 %2 = load ptr, ptr %ptr, align 8 store ptr %0, ptr %2, align 8 ret void @@ -260,7 +260,7 @@ entry: %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 + %ptr = getelementptr inbounds nuw %struct.TypHeader, ptr %1, i32 0, i32 0 %2 = load ptr, ptr %ptr, align 8 store ptr %2, ptr @FreeHandle, align 8 ret void @@ -278,8 +278,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -289,7 +289,7 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 976a840ff..76fff77ae 100644 --- a/test_cases_bc/basic_c_tests/spec-mesa.c.bc +++ b/test_cases_bc/basic_c_tests/spec-mesa.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/spec-mesa.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.api_table = type { ptr, ptr, ptr } %struct.context = type { %struct.api_table, %struct.api_table } @@ -190,13 +190,13 @@ 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 + %Begin = getelementptr inbounds nuw %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 + %End = getelementptr inbounds nuw %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 + %Render = getelementptr inbounds nuw %struct.api_table, ptr %2, i32 0, i32 2 store ptr @render, ptr %Render, align 8 ret void } @@ -207,7 +207,7 @@ 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 + %Exec = getelementptr inbounds nuw %struct.context, ptr %0, i32 0, i32 1 call void @init_exec_pointers(ptr noundef %Exec) ret void } @@ -221,9 +221,9 @@ entry: %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 + %API = getelementptr inbounds nuw %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 + %Exec = getelementptr inbounds nuw %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 @@ -251,7 +251,7 @@ 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 + %ctx1 = getelementptr inbounds nuw %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 @@ -267,8 +267,8 @@ entry: 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 + %API = getelementptr inbounds nuw %struct.context, ptr %0, i32 0, i32 0 + %Begin = getelementptr inbounds nuw %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 @@ -284,23 +284,23 @@ if.then: ; preds = %entry 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 + %API1 = getelementptr inbounds nuw %struct.context, ptr %6, i32 0, i32 0 + %Render = getelementptr inbounds nuw %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 + %API4 = getelementptr inbounds nuw %struct.context, ptr %8, i32 0, i32 0 + %Render5 = getelementptr inbounds nuw %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 + %API6 = getelementptr inbounds nuw %struct.context, ptr %12, i32 0, i32 0 + %End = getelementptr inbounds nuw %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 @@ -309,8 +309,8 @@ if.then3: ; preds = %if.end 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 + %API7 = getelementptr inbounds nuw %struct.context, ptr %16, i32 0, i32 0 + %End8 = getelementptr inbounds nuw %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 @@ -347,13 +347,13 @@ entry: 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 + %ctx = getelementptr inbounds nuw %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 + %ctx2 = getelementptr inbounds nuw %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 @@ -361,11 +361,11 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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 #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { nounwind allocsize(0) } attributes #6 = { nounwind } @@ -377,4 +377,4 @@ attributes #6 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/spec-parser.c.bc b/test_cases_bc/basic_c_tests/spec-parser.c.bc index cf546afe0..07b70f7da 100644 --- a/test_cases_bc/basic_c_tests/spec-parser.c.bc +++ b/test_cases_bc/basic_c_tests/spec-parser.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/spec-parser.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.Word_struct = type { ptr, ptr } %struct.clause_struct = type { ptr } @@ -175,12 +175,12 @@ while.cond: ; preds = %while.body, %entry while.body: ; preds = %while.cond %1 = load ptr, ptr %c1, align 8 - %next = getelementptr inbounds %struct.clause_struct, ptr %1, i32 0, i32 0 + %next = getelementptr inbounds nuw %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 + %next1 = getelementptr inbounds nuw %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 @@ -205,12 +205,12 @@ entry: %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 + %x = getelementptr inbounds nuw %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 + %x3 = getelementptr inbounds nuw %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 @@ -224,16 +224,16 @@ 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 + %string = getelementptr inbounds nuw %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 + %string6 = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 @@ -252,9 +252,9 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -265,7 +265,7 @@ attributes #3 = { nounwind allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 36ca42894..99e4141ff 100644 --- a/test_cases_bc/basic_c_tests/spec-vortex.c.bc +++ b/test_cases_bc/basic_c_tests/spec-vortex.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/spec-vortex.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.Ory = type { ptr } %struct.Rectangle = type { ptr } @@ -189,14 +189,14 @@ entry: 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 + %ChunkAddr = getelementptr inbounds nuw %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 + %ChunkAddr1 = getelementptr inbounds nuw %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 @@ -221,15 +221,15 @@ entry: 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 + %ChunkAddr = getelementptr inbounds nuw %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 + %arrayidx = getelementptr inbounds nuw 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 + %add.ptr = getelementptr inbounds nuw 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 @@ -257,7 +257,7 @@ entry: 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 + %draw = getelementptr inbounds nuw %struct.Rectangle, ptr %0, i32 0, i32 0 store ptr @Rectangle_draw, ptr %draw, align 8 ret void } @@ -283,9 +283,9 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind allocsize(0,1) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -296,4 +296,4 @@ attributes #3 = { nounwind allocsize(0,1) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/struct-array.c.bc b/test_cases_bc/basic_c_tests/struct-array.c.bc index ebbdf0b10..ed2f1c69c 100644 --- a/test_cases_bc/basic_c_tests/struct-array.c.bc +++ b/test_cases_bc/basic_c_tests/struct-array.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-array.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.ArrayStruct = type { i32, i8, [100 x i32], i32 } @@ -151,36 +151,36 @@ entry: %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 + %f3 = getelementptr inbounds nuw %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 + %f31 = getelementptr inbounds nuw %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 + %f33 = getelementptr inbounds nuw %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 + %f35 = getelementptr inbounds nuw %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 + %f37 = getelementptr inbounds nuw %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 + %f39 = getelementptr inbounds nuw %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 + %f311 = getelementptr inbounds nuw %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 + %f4 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -190,4 +190,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 9c6906a15..4e2d270bd 100644 --- a/test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc +++ b/test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.s = type { ptr, i32 } @@ -152,15 +152,15 @@ entry: %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 + %a = getelementptr inbounds nuw %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 + %b = getelementptr inbounds nuw %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 + %a1 = getelementptr inbounds nuw %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 + %a2 = getelementptr inbounds nuw %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 @@ -169,8 +169,8 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -181,4 +181,4 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index a59d92b11..580ac27e1 100644 --- a/test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc +++ b/test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.s = type { ptr, ptr } @@ -152,22 +152,22 @@ entry: %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 + %a = getelementptr inbounds nuw %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 + %b = getelementptr inbounds nuw %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 + %a1 = getelementptr inbounds nuw %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 + %a2 = getelementptr inbounds nuw %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 + %b3 = getelementptr inbounds nuw %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 + %b4 = getelementptr inbounds nuw %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 @@ -176,8 +176,8 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -188,4 +188,4 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 994e09dfb..d624554cf 100644 --- a/test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc +++ b/test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.ArrayStruct = type { i8, %struct.MidArrayStruct, ptr } %struct.MidArrayStruct = type { [10 x i8], [5 x %struct.InnerArrayStruct] } @@ -154,31 +154,31 @@ entry: %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 + %out4 = getelementptr inbounds nuw %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 + %out3 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %0, i32 0, i32 1 + %mid2 = getelementptr inbounds nuw %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 + %in1 = getelementptr inbounds nuw %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 + %out42 = getelementptr inbounds nuw %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 + %out33 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s2, i32 0, i32 1 + %mid24 = getelementptr inbounds nuw %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 + %in16 = getelementptr inbounds nuw %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 + %out38 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s2, i32 0, i32 1 + %mid29 = getelementptr inbounds nuw %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 + %in111 = getelementptr inbounds nuw %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) @@ -188,8 +188,8 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -200,4 +200,4 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index ab241ef06..6e386d6fe 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-field-multi-dereference.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { ptr, ptr } @@ -154,24 +154,24 @@ entry: 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 + %f2 = getelementptr inbounds nuw %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 + %f21 = getelementptr inbounds nuw %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 + %f1 = getelementptr inbounds nuw %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 + %f22 = getelementptr inbounds nuw %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 + %f13 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -181,4 +181,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 1f0aa5c52..73318a39a 100644 --- a/test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc +++ b/test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.S = type { i32, i32, i32 } @@ -17,13 +17,13 @@ entry: 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 + %f1 = getelementptr inbounds nuw %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 + %f11 = getelementptr inbounds nuw %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 + %f12 = getelementptr inbounds nuw %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 @@ -33,8 +33,8 @@ entry: 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -44,4 +44,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 41c8f4646..4c5e4c552 100644 --- a/test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc +++ b/test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.S = type { i32, i32, i32 } @@ -17,13 +17,13 @@ entry: 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 + %f2 = getelementptr inbounds nuw %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 + %f21 = getelementptr inbounds nuw %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 + %f1 = getelementptr inbounds nuw %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 @@ -33,8 +33,8 @@ entry: 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -44,4 +44,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index b7dba022e..1fdc90ce4 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-incompab-typecast-nested.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.SrcStruct = type { [10 x ptr], [10 x i8], [5 x %struct.InnerStruct], i8 } %struct.InnerStruct = type { i8, ptr } @@ -157,48 +157,48 @@ entry: 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 + %f1 = getelementptr inbounds nuw %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 + %f3 = getelementptr inbounds nuw %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 + %in2 = getelementptr inbounds nuw %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 + %f12 = getelementptr inbounds nuw %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 + %f34 = getelementptr inbounds nuw %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 + %in26 = getelementptr inbounds nuw %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 + %f17 = getelementptr inbounds nuw %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 + %f39 = getelementptr inbounds nuw %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 + %in211 = getelementptr inbounds nuw %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 + %f312 = getelementptr inbounds nuw %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 + %in214 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -208,4 +208,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 218a49b33..0b8fd2bff 100644 --- a/test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc +++ b/test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.SrcStruct = type { ptr, ptr, i8 } %struct.DstStruct = type { i8, ptr, ptr } @@ -156,33 +156,33 @@ entry: 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 + %f1 = getelementptr inbounds nuw %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 + %f2 = getelementptr inbounds nuw %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 + %f21 = getelementptr inbounds nuw %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 + %f22 = getelementptr inbounds nuw %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 + %f3 = getelementptr inbounds nuw %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 + %f23 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -192,4 +192,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 59b6e9c1c..21506d31d 100644 --- a/test_cases_bc/basic_c_tests/struct-instance-return.c.bc +++ b/test_cases_bc/basic_c_tests/struct-instance-return.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-instance-return.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct = type { ptr, i8 } @@ -148,7 +148,7 @@ declare i32 @getchar() #1 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 + %f1 = getelementptr inbounds nuw %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 @@ -162,17 +162,17 @@ entry: %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 + %0 = getelementptr inbounds nuw { 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 + %2 = getelementptr inbounds nuw { 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 + %f1 = getelementptr inbounds nuw %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 + %f11 = getelementptr inbounds nuw %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 @@ -181,8 +181,8 @@ entry: ; 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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} @@ -193,4 +193,4 @@ attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 79df45b93..90b59469a 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-1-layer.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.MyStruct1 = type { ptr, %struct.MyStruct2 } %struct.MyStruct2 = type { ptr, ptr } @@ -154,38 +154,38 @@ entry: %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 + %f1 = getelementptr inbounds nuw %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 + %f2 = getelementptr inbounds nuw %struct.MyStruct1, ptr %ms, i32 0, i32 1 + %f3 = getelementptr inbounds nuw %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 + %f21 = getelementptr inbounds nuw %struct.MyStruct1, ptr %ms, i32 0, i32 1 + %f4 = getelementptr inbounds nuw %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 + %f22 = getelementptr inbounds nuw %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 + %f43 = getelementptr inbounds nuw %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 + %f24 = getelementptr inbounds nuw %struct.MyStruct1, ptr %2, i32 0, i32 1 + %f35 = getelementptr inbounds nuw %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 + %f36 = getelementptr inbounds nuw %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 + %f27 = getelementptr inbounds nuw %struct.MyStruct1, ptr %6, i32 0, i32 1 + %f38 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -195,4 +195,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 665a29d71..9854e2e40 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-2-layers.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.OuterStruct = type { %struct.MidStruct, i8, %struct.InnerStruct, i32 } %struct.MidStruct = type { i32, %struct.InnerStruct, i8 } @@ -156,57 +156,57 @@ entry: %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 + %out1 = getelementptr inbounds nuw %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 + %out11 = getelementptr inbounds nuw %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 + %mid2 = getelementptr inbounds nuw %struct.MidStruct, ptr %3, i32 0, i32 1 + %in1 = getelementptr inbounds nuw %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 + %mid22 = getelementptr inbounds nuw %struct.MidStruct, ptr %4, i32 0, i32 1 + %in13 = getelementptr inbounds nuw %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 + %mid24 = getelementptr inbounds nuw %struct.MidStruct, ptr %5, i32 0, i32 1 + %in2 = getelementptr inbounds nuw %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 + %mid25 = getelementptr inbounds nuw %struct.MidStruct, ptr %6, i32 0, i32 1 + %in26 = getelementptr inbounds nuw %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 + %out17 = getelementptr inbounds nuw %struct.OuterStruct, ptr %s, i32 0, i32 0 + %mid28 = getelementptr inbounds nuw %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 + %out19 = getelementptr inbounds nuw %struct.OuterStruct, ptr %7, i32 0, i32 0 + %mid210 = getelementptr inbounds nuw %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 + %in111 = getelementptr inbounds nuw %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 + %in112 = getelementptr inbounds nuw %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 + %in213 = getelementptr inbounds nuw %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 + %in214 = getelementptr inbounds nuw %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 + %out3 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -216,4 +216,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index fa4ef3804..ff08205ba 100644 --- a/test_cases_bc/basic_c_tests/struct-nested-array1.c.bc +++ b/test_cases_bc/basic_c_tests/struct-nested-array1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array1.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.ArrayStruct = type { i32, i8, %struct.InnerArrayStruct, i32 } %struct.InnerArrayStruct = type { [100 x i32] } @@ -152,36 +152,36 @@ entry: %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 + %f3 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s, i32 0, i32 2 + %f1 = getelementptr inbounds nuw %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 + %f31 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %0, i32 0, i32 2 + %f12 = getelementptr inbounds nuw %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 + %f34 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %2, i32 0, i32 2 + %f15 = getelementptr inbounds nuw %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 + %f37 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %3, i32 0, i32 2 + %f18 = getelementptr inbounds nuw %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 + %f310 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %4, i32 0, i32 2 + %f111 = getelementptr inbounds nuw %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 + %f4 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -191,4 +191,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 789615f2a..88d8f501d 100644 --- a/test_cases_bc/basic_c_tests/struct-nested-array2.c.bc +++ b/test_cases_bc/basic_c_tests/struct-nested-array2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array2.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.ArrayStruct = type { i32, i8, %struct.MidArrayStruct, ptr } %struct.MidArrayStruct = type { i8, [5 x %struct.InnerArrayStruct], [20 x double] } @@ -153,45 +153,45 @@ entry: %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 + %out4 = getelementptr inbounds nuw %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 + %out41 = getelementptr inbounds nuw %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 + %out3 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %1, i32 0, i32 2 + %mid2 = getelementptr inbounds nuw %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 + %in1 = getelementptr inbounds nuw %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 + %out33 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %2, i32 0, i32 2 + %mid24 = getelementptr inbounds nuw %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 + %in16 = getelementptr inbounds nuw %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 + %out38 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %3, i32 0, i32 2 + %mid29 = getelementptr inbounds nuw %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 + %in111 = getelementptr inbounds nuw %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 + %out313 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s, i32 0, i32 2 + %mid214 = getelementptr inbounds nuw %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 + %in116 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -201,4 +201,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 0ebc552d4..ea28a1f2d 100644 --- a/test_cases_bc/basic_c_tests/struct-nested-array3.c.bc +++ b/test_cases_bc/basic_c_tests/struct-nested-array3.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array3.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.ArrayStruct = type { i32, i8, %struct.MidArrayStruct, i32 } %struct.MidArrayStruct = type { i8, [5 x %struct.InnerArrayStruct], [20 x double] } @@ -153,48 +153,48 @@ entry: 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 + %out4 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %0, i32 0, i32 3 + %out41 = getelementptr inbounds nuw %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 + %out3 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %1, i32 0, i32 2 + %mid2 = getelementptr inbounds nuw %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 + %in1 = getelementptr inbounds nuw %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 + %out33 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s, i32 0, i32 2 + %mid24 = getelementptr inbounds nuw %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 + %out36 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %2, i32 0, i32 2 + %mid27 = getelementptr inbounds nuw %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 + %out39 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %3, i32 0, i32 2 + %mid210 = getelementptr inbounds nuw %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 + %out312 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %4, i32 0, i32 2 + %mid213 = getelementptr inbounds nuw %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 + %in3 = getelementptr inbounds nuw %struct.InnerArrayStruct, ptr %arrayidx14, i32 0, i32 2 + %out315 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s, i32 0, i32 2 + %mid3 = getelementptr inbounds nuw %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 + %out317 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %5, i32 0, i32 2 + %mid218 = getelementptr inbounds nuw %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 + %out420 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -204,4 +204,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/struct-onefld.c.bc b/test_cases_bc/basic_c_tests/struct-onefld.c.bc index 4ca35bccd..02d756d3e 100644 --- a/test_cases_bc/basic_c_tests/struct-onefld.c.bc +++ b/test_cases_bc/basic_c_tests/struct-onefld.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-onefld.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.IntStruct = type { i32 } %struct.CharStruct = type { i8 } @@ -157,30 +157,30 @@ entry: 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 + %f1 = getelementptr inbounds nuw %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 + %f11 = getelementptr inbounds nuw %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 + %f12 = getelementptr inbounds nuw %struct.IntStruct, ptr %2, i32 0, i32 0 + %f13 = getelementptr inbounds nuw %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 + %f14 = getelementptr inbounds nuw %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 + %f15 = getelementptr inbounds nuw %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 + %f16 = getelementptr inbounds nuw %struct.CharStruct, ptr %5, i32 0, i32 0 + %f17 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -190,4 +190,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/struct-simple.c.bc b/test_cases_bc/basic_c_tests/struct-simple.c.bc index 06c7eb09a..52535a715 100644 --- a/test_cases_bc/basic_c_tests/struct-simple.c.bc +++ b/test_cases_bc/basic_c_tests/struct-simple.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-simple.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.s = type { ptr, i32 } @@ -151,20 +151,20 @@ entry: %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 + %a = getelementptr inbounds nuw %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 + %a1 = getelementptr inbounds nuw %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 + %a2 = getelementptr inbounds nuw %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 + %a3 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -174,4 +174,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/struct-twoflds.c.bc b/test_cases_bc/basic_c_tests/struct-twoflds.c.bc index 38c1a6ee7..900e2265f 100644 --- a/test_cases_bc/basic_c_tests/struct-twoflds.c.bc +++ b/test_cases_bc/basic_c_tests/struct-twoflds.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/struct-twoflds.c.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.IntChar = type { i32, i8 } %struct.CharInt = type { i8, i32 } @@ -157,42 +157,42 @@ entry: 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 + %f1 = getelementptr inbounds nuw %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 + %f11 = getelementptr inbounds nuw %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 + %f2 = getelementptr inbounds nuw %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 + %f22 = getelementptr inbounds nuw %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 + %f13 = getelementptr inbounds nuw %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 + %f24 = getelementptr inbounds nuw %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 + %f15 = getelementptr inbounds nuw %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 + %f16 = getelementptr inbounds nuw %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 + %f27 = getelementptr inbounds nuw %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 + %f28 = getelementptr inbounds nuw %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 + %f19 = getelementptr inbounds nuw %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 + %f210 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -202,4 +202,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_c_tests/structcopy1.c.bc b/test_cases_bc/basic_c_tests/structcopy1.c.bc index e530c8881..94c8939bf 100644 --- a/test_cases_bc/basic_c_tests/structcopy1.c.bc +++ b/test_cases_bc/basic_c_tests/structcopy1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_c_tests/structcopy1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_c_tests/structcopy1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.myStruct = type { float, %struct.innerStruct } %struct.innerStruct = type { i32, ptr } @@ -12,15 +12,15 @@ 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 + %b = getelementptr inbounds nuw %struct.myStruct, ptr %x, i32 0, i32 1 + %n = getelementptr inbounds nuw %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 + %b1 = getelementptr inbounds nuw %struct.myStruct, ptr %x, i32 0, i32 1 + %n2 = getelementptr inbounds nuw %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 + %b3 = getelementptr inbounds nuw %struct.myStruct, ptr %y, i32 0, i32 1 + %n4 = getelementptr inbounds nuw %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 @@ -34,10 +34,10 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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 #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -48,4 +48,4 @@ attributes #4 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/abstract.cpp.bc b/test_cases_bc/basic_cpp_tests/abstract.cpp.bc index 70a110b00..65da1e69e 100644 --- a/test_cases_bc/basic_cpp_tests/abstract.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/abstract.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/abstract.cpp.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_cpp_tests/abstract.cpp" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1BC2Ev = comdat any @@ -15,13 +15,13 @@ $_ZN1A1gEPi = comdat any $_ZTV1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -33,12 +33,12 @@ $_ZTV1A = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -184,8 +184,8 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 store ptr %call, ptr %a, align 8 %0 = load ptr, ptr %a, align 8 %1 = load ptr, ptr %ptr_f, align 8 @@ -205,24 +205,24 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #6 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV1B, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -279,14 +279,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -296,4 +295,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/array-1.cpp.bc b/test_cases_bc/basic_cpp_tests/array-1.cpp.bc index 06b3a1af2..903016f67 100644 --- a/test_cases_bc/basic_cpp_tests/array-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/array-1.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/array-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %"struct.std::array" = type { [2 x ptr] } @@ -11,23 +11,21 @@ $_ZNSt5arrayIPK1ALm2EEixEm = comdat any $_ZNK1A1fEPi = comdat any -$_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m = comdat any - $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -177,19 +175,19 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 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 + %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #6 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 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 0) #6 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 + %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 1) #6 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 + %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 0) #6 %2 = load ptr, ptr %call4, align 8 store ptr %2, ptr %aptr, align 8 %3 = load ptr, ptr %aptr, align 8 @@ -204,13 +202,13 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -222,10 +220,10 @@ entry: 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 + %_M_elems = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw [2 x ptr], ptr %_M_elems, i64 0, i64 %0 + ret ptr %arrayidx } ; Function Attrs: mustprogress noinline optnone uwtable @@ -242,27 +240,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -272,4 +256,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/array-2.cpp.bc b/test_cases_bc/basic_cpp_tests/array-2.cpp.bc index 93ee80a0e..30d93705b 100644 --- a/test_cases_bc/basic_cpp_tests/array-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/array-2.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/array-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %"struct.std::array" = type { [2 x ptr] } @@ -13,29 +13,21 @@ $_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 +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -185,19 +177,19 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 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 + %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #6 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 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 0) #6 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 + %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 1) #6 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 + %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %aarray) #6 %2 = load ptr, ptr %call4, align 8 store ptr %2, ptr %aptr, align 8 %3 = load ptr, ptr %aptr, align 8 @@ -212,13 +204,13 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -230,10 +222,10 @@ entry: 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 + %_M_elems = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw [2 x ptr], ptr %_M_elems, i64 0, i64 %0 + ret ptr %arrayidx } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -242,8 +234,9 @@ 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 + %_M_elems = getelementptr inbounds nuw %"struct.std::array", ptr %this1, i32 0, i32 0 + %arrayidx = getelementptr inbounds nuw [2 x ptr], ptr %_M_elems, i64 0, i64 0 + ret ptr %arrayidx } ; Function Attrs: mustprogress noinline optnone uwtable @@ -260,58 +253,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -321,4 +269,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/array-3.cpp.bc b/test_cases_bc/basic_cpp_tests/array-3.cpp.bc index fa75857e4..8d9b5b433 100644 --- a/test_cases_bc/basic_cpp_tests/array-3.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/array-3.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/array-3.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %"struct.std::array" = type { [2 x ptr] } @@ -13,29 +13,21 @@ $_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 +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -185,19 +177,19 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 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 + %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #6 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 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 0) #6 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 + %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 1) #6 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 + %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %aarray) #6 %2 = load ptr, ptr %call4, align 8 store ptr %2, ptr %aptr, align 8 %3 = load ptr, ptr %aptr, align 8 @@ -212,13 +204,13 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -230,10 +222,10 @@ entry: 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 + %_M_elems = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw [2 x ptr], ptr %_M_elems, i64 0, i64 %0 + ret ptr %arrayidx } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -242,9 +234,9 @@ 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 + %_M_elems = getelementptr inbounds nuw %"struct.std::array", ptr %this1, i32 0, i32 0 + %arrayidx = getelementptr inbounds nuw [2 x ptr], ptr %_M_elems, i64 0, i64 1 + ret ptr %arrayidx } ; Function Attrs: mustprogress noinline optnone uwtable @@ -261,59 +253,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -323,4 +269,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc b/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc index 6653d5663..044d2ca79 100644 --- a/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.B = type { %class.A } %class.A = type { ptr } @@ -16,13 +16,13 @@ $_ZN1A1fEPi = comdat any $_ZTV1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -32,12 +32,12 @@ $_ZTV1A = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -186,8 +186,8 @@ entry: 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2EPi(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 @@ -196,7 +196,7 @@ entry: %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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, 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 @@ -205,15 +205,15 @@ entry: 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2EPi(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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 @@ -250,11 +250,10 @@ entry: 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" } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -264,4 +263,4 @@ attributes #4 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc b/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc index da1e67253..58134c942 100644 --- a/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.B = type { %class.A } %class.A = type { ptr } @@ -16,13 +16,13 @@ $_ZN1A1fEPi = comdat any $_ZTV1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -32,12 +32,12 @@ $_ZTV1A = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -206,8 +206,8 @@ entry: 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2EPi(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 @@ -216,21 +216,21 @@ entry: %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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2EPi(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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 @@ -264,11 +264,10 @@ entry: 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" } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -278,4 +277,4 @@ attributes #4 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc b/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc index 9c6df6fe5..b64942efb 100644 --- a/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %"class.std::deque" = type { %"class.std::_Deque_base" } %"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } @@ -29,12 +29,8 @@ $_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 @@ -53,47 +49,27 @@ $_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 +$_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv = 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 +$_ZNSt15__new_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 +$_ZNSt15__new_allocatorIPK1AE8allocateEmPKv = comdat any $_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_ = comdat any -$_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m = comdat any +$_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m = comdat any -$_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m = comdat any +$_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m = comdat any $_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv = comdat any -$_ZNSaIPK1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev = comdat any +$_ZNSt15__new_allocatorIPK1AED2Ev = comdat any $_ZNK1A1fEPi = comdat any @@ -111,14 +87,10 @@ $_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 @@ -129,12 +101,8 @@ $_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 @@ -153,7 +121,9 @@ $_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 +$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_SA_S8_ = comdat any + +$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_ = comdat any $_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any @@ -161,7 +131,7 @@ $_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 +$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_SA_S8_ = comdat any $_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv = comdat any @@ -169,19 +139,19 @@ $_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 @@ -335,13 +305,13 @@ entry: 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 %0 = load ptr, ptr %call, align 8 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 @@ -354,7 +324,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -365,7 +335,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -376,8 +346,8 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -386,13 +356,13 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -418,47 +388,47 @@ entry: %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 + call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 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 + call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %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) #9 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 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 + call void @__clang_call_terminate(ptr %1) #10 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 @@ -472,7 +442,7 @@ lpad: ; preds = %entry 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -483,14 +453,19 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 ret void } @@ -520,30 +495,30 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size6 = getelementptr inbounds nuw %"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 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map10 = getelementptr inbounds nuw %"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 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size12 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %add.ptr14 = getelementptr inbounds nuw 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 @@ -564,21 +539,21 @@ lpad: ; preds = %entry 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 + %14 = call ptr @__cxa_begin_catch(ptr %exn) #9 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map16 = getelementptr inbounds nuw %"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 + %_M_impl17 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size18 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #9 + %_M_impl19 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map20 = getelementptr inbounds nuw %"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 + %_M_impl21 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size22 = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -595,34 +570,34 @@ 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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #9 + %_M_impl26 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #9 + %_M_impl28 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start29 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl30 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start31 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish33 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 + %_M_first34 = getelementptr inbounds nuw %"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 + %add.ptr36 = getelementptr inbounds nuw ptr, ptr %23, i64 %rem + %_M_impl37 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish38 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 + %_M_cur39 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 store ptr %add.ptr36, ptr %_M_cur39, align 8 ret void @@ -637,72 +612,56 @@ 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 + call void @__clang_call_terminate(ptr %26) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_map = getelementptr inbounds nuw %"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 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_start = getelementptr inbounds nuw %"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) #9 + %_M_finish = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 store ptr null, ptr %_M_node, align 8 ret void } @@ -762,6 +721,10 @@ return: ; preds = %if.end, %if.then ; 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.i4 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %__map_alloc = alloca %"class.std::allocator.0", align 1 @@ -770,23 +733,34 @@ entry: 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 + call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i3 = invoke noundef ptr @_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 + ret ptr %call.i3 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %3 = 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 + %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 + store ptr %__map_alloc, ptr %this.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i4, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i5) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -831,7 +805,7 @@ invoke.cont: ; preds = %for.body for.inc: ; preds = %invoke.cont %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %4, i32 1 store ptr %incdec.ptr, ptr %__cur, align 8 br label %for.cond, !llvm.loop !6 @@ -846,11 +820,11 @@ lpad: ; preds = %for.body catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %8 = call ptr @__cxa_begin_catch(ptr %exn) #9 %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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #9 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad2 for.end: ; preds = %for.cond @@ -883,7 +857,7 @@ 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 + call void @__clang_call_terminate(ptr %15) #10 unreachable unreachable: ; preds = %catch @@ -895,6 +869,10 @@ 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -903,21 +881,29 @@ entry: 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 + call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #10 unreachable } @@ -925,10 +911,10 @@ 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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -943,54 +929,38 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first2 = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #9 %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind noalias writable sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %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) #9 + store ptr %agg.result, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -1000,34 +970,14 @@ 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_impl = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1036,38 +986,42 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #7 +declare void @_ZSt28__throw_bad_array_new_lengthv() #5 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #5 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 +declare noundef nonnull ptr @_Znwm(i64 noundef) #6 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1078,13 +1032,19 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1111,12 +1071,12 @@ for.cond: ; preds = %for.inc, %entry 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #9 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 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %5, i32 1 store ptr %incdec.ptr, ptr %__n, align 8 br label %for.cond, !llvm.loop !8 @@ -1125,21 +1085,9 @@ for.end: ; preds = %for.cond } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1148,117 +1096,99 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #10 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #11 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 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 -} +declare void @_ZdlPvm(ptr noundef, i64 noundef) #7 ; 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #11 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } @@ -1269,18 +1199,8 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1306,38 +1226,42 @@ entry: 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 + %__first.indirect_addr = alloca ptr, align 8 + %__last.indirect_addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_addr, align 8 + store ptr %__last, ptr %__last.indirect_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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #9 ret void } @@ -1347,74 +1271,74 @@ 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_impl = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 + %_M_node4 = getelementptr inbounds nuw %"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 + 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) #9 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map6 = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #9 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 + %_M_impl8 = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first3 = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_last4 = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node5 = getelementptr inbounds nuw %"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 @@ -1423,114 +1347,136 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i11 = alloca ptr, align 8 + %__args.addr.i12 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur7 = getelementptr inbounds nuw %"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 %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i11, align 8 + store ptr %6, ptr %__args.addr.i12, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i11, align 8 + %8 = load ptr, ptr %__args.addr.i12, align 8 + %9 = load ptr, ptr %8, align 8 + store ptr %9, ptr %7, align 8 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 + %_M_cur10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 + %10 = load ptr, ptr %_M_cur10, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, 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) + %11 = 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) %11) 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 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.i = alloca ptr, align 8 + %__p.addr.i18 = alloca ptr, align 8 + %__args.addr.i19 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %call = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #11 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + store ptr %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i18, align 8 + store ptr %5, ptr %__args.addr.i19, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i18, align 8 + %7 = load ptr, ptr %__args.addr.i19, align 8 + %8 = load ptr, ptr %7, align 8 + store ptr %8, ptr %6, align 8 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_node11 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 + %9 = load ptr, ptr %_M_node11, align 8 + %add.ptr12 = getelementptr inbounds ptr, ptr %9, 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) #9 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish14 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 + %10 = load ptr, ptr %_M_first, align 8 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 + %_M_cur17 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 + store ptr %10, ptr %_M_cur17, align 8 ret void } @@ -1541,40 +1487,23 @@ entry: %__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 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %__tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %call = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #9 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #9 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 ret i64 %call } @@ -1584,13 +1513,13 @@ 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 + %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) #9 + %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #9 ret i64 %call2 } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #5 ; 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 { @@ -1602,15 +1531,15 @@ entry: %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 @@ -1636,80 +1565,83 @@ entry: %__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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #9 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 3 + %5 = load ptr, ptr %_M_node2, align 8 + %tobool = icmp ne ptr %5, null + %conv = zext i1 %tobool to i64 + %sub = sub nsw i64 %sub.ptr.div, %conv + %mul = mul nsw i64 %call, %sub %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 0 + %7 = load ptr, ptr %_M_cur, align 8 + %8 = load ptr, ptr %__x.addr, align 8 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %sub.ptr.lhs.cast3 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast4 = ptrtoint ptr %9 to i64 + %sub.ptr.sub5 = sub i64 %sub.ptr.lhs.cast3, %sub.ptr.rhs.cast4 + %sub.ptr.div6 = sdiv exact i64 %sub.ptr.sub5, 8 + %add = add nsw i64 %mul, %sub.ptr.div6 %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 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 2 + %11 = load ptr, ptr %_M_last, align 8 + %12 = load ptr, ptr %__y.addr, align 8 + %_M_cur7 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %_M_cur7, align 8 + %sub.ptr.lhs.cast8 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast9 = ptrtoint ptr %13 to i64 + %sub.ptr.sub10 = sub i64 %sub.ptr.lhs.cast8, %sub.ptr.rhs.cast9 + %sub.ptr.div11 = sdiv exact i64 %sub.ptr.sub10, 8 + %add12 = add nsw i64 %add, %sub.ptr.div11 + ret i64 %add12 } ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #10 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: @@ -1740,16 +1672,6 @@ return: ; preds = %if.end, %if.then 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: @@ -1763,16 +1685,16 @@ entry: %__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 + %storedv = zext i1 %__add_at_front to i8 + store i8 %storedv, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -1784,8 +1706,8 @@ entry: %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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 @@ -1793,19 +1715,19 @@ entry: 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 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size8 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %loadedv = trunc i8 %9 to i1 + br i1 %loadedv, label %cond.true, label %cond.false cond.true: ; preds = %if.then %10 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1816,24 +1738,24 @@ cond.false: ; preds = %if.then 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 + %add.ptr9 = getelementptr inbounds nuw 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 + %_M_impl10 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start11 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 + %_M_node12 = getelementptr inbounds nuw %"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 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 + %_M_node17 = getelementptr inbounds nuw %"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 + %_M_impl18 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish19 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 + %_M_node20 = getelementptr inbounds nuw %"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 @@ -1841,18 +1763,18 @@ if.then14: ; preds = %cond.end 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 + %_M_impl22 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start23 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 + %_M_node24 = getelementptr inbounds nuw %"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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish26 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 + %_M_node27 = getelementptr inbounds nuw %"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 + %add.ptr29 = getelementptr inbounds nuw 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 @@ -1860,11 +1782,11 @@ 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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size33 = getelementptr inbounds nuw %"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 + %_M_impl34 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size35 = getelementptr inbounds nuw %"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 @@ -1878,10 +1800,10 @@ if.else31: ; preds = %entry %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 + %add.ptr42 = getelementptr inbounds nuw 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 + %loadedv43 = trunc i8 %26 to i1 + br i1 %loadedv43, label %cond.true44, label %cond.false45 cond.true44: ; preds = %if.else31 %27 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1892,48 +1814,48 @@ cond.false45: ; preds = %if.else31 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 + %add.ptr48 = getelementptr inbounds nuw 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 + %_M_impl49 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start50 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 + %_M_node51 = getelementptr inbounds nuw %"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 + %_M_impl52 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish53 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 + %_M_node54 = getelementptr inbounds nuw %"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 + %_M_impl57 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map58 = getelementptr inbounds nuw %"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 + %_M_impl59 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size60 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #9 %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 + %_M_impl61 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map62 = getelementptr inbounds nuw %"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 + %_M_impl63 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size64 = getelementptr inbounds nuw %"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 + %_M_impl66 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start67 = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #9 + %_M_impl68 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish69 = getelementptr inbounds nuw %"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.ptr70 = getelementptr inbounds nuw 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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #9 ret void } @@ -1983,11 +1905,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #11 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #11 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #9 %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 @@ -2050,12 +1972,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat align 2 { entry: %__first.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -2072,8 +1994,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2081,17 +2003,45 @@ if.then: ; preds = %entry %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.end3 + +if.else: ; preds = %entry + %6 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %6, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %7 = load ptr, ptr %__result.addr, align 8 + %8 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %7, ptr noundef %8) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end3 + +if.end3: ; preds = %if.end, %if.then + %9 = load ptr, ptr %__result.addr, align 8 + %10 = load i64, ptr %_Num, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %9, i64 %10 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #8 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %__to, ptr noundef %__from) #2 comdat align 2 { +entry: + %__to.addr = alloca ptr, align 8 + %__from.addr = alloca ptr, align 8 + store ptr %__to, ptr %__to.addr, align 8 + store ptr %__from, ptr %__from.addr, align 8 + %0 = load ptr, ptr %__from.addr, align 8 + %1 = load ptr, ptr %0, align 8 + %2 = load ptr, ptr %__to.addr, align 8 + store ptr %1, ptr %2, align 8 + ret void +} ; 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 { @@ -2103,11 +2053,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #11 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #11 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #9 %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 @@ -2141,12 +2091,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_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 { +define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_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 @@ -2163,8 +2113,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2175,14 +2125,29 @@ if.then: ; preds = %entry %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.end4 + +if.else: ; preds = %entry + %7 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %7, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %8 = load ptr, ptr %__result.addr, align 8 + %add.ptr3 = getelementptr inbounds ptr, ptr %8, i64 -1 + %9 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %add.ptr3, ptr noundef %9) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end4 + +if.end4: ; preds = %if.end, %if.then + %10 = load ptr, ptr %__result.addr, align 8 + %11 = load i64, ptr %_Num, align 8 + %idx.neg5 = sub i64 0, %11 + %add.ptr6 = getelementptr inbounds ptr, ptr %10, i64 %idx.neg5 + ret ptr %add.ptr6 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -2191,26 +2156,26 @@ 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #9 + %_M_last = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_cur3 = getelementptr inbounds nuw %"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 @@ -2223,26 +2188,25 @@ 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 + %_M_cur = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { noreturn } +attributes #12 = { builtin allocsize(0) } +attributes #13 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2252,7 +2216,7 @@ attributes #14 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 3cb0ecaa5..4224d1b02 100644 --- a/test_cases_bc/basic_cpp_tests/deque-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/deque-2.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/deque-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %"class.std::deque" = type { %"class.std::_Deque_base" } %"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } @@ -31,12 +31,8 @@ $_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 @@ -55,47 +51,27 @@ $_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 +$_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv = 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 +$_ZNSt15__new_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 +$_ZNSt15__new_allocatorIPK1AE8allocateEmPKv = comdat any $_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_ = comdat any -$_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m = comdat any +$_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m = comdat any -$_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m = comdat any +$_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m = comdat any $_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv = comdat any -$_ZNSaIPK1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev = comdat any +$_ZNSt15__new_allocatorIPK1AED2Ev = comdat any $_ZNK1A1fEPi = comdat any @@ -111,14 +87,10 @@ $_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 @@ -129,12 +101,8 @@ $_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 @@ -153,7 +121,9 @@ $_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 +$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_SA_S8_ = comdat any + +$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_ = comdat any $_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any @@ -161,25 +131,25 @@ $_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 +$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_SA_S8_ = comdat any $_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 @@ -334,14 +304,14 @@ entry: 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 + call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %it, ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %it) #9 %0 = load ptr, ptr %call, align 8 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 @@ -354,7 +324,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -365,7 +335,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -376,8 +346,8 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -386,13 +356,13 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -412,16 +382,16 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 ret void } @@ -431,47 +401,47 @@ 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 + %_M_cur = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 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 + call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %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) #9 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 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 + call void @__clang_call_terminate(ptr %1) #10 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 @@ -485,7 +455,7 @@ lpad: ; preds = %entry 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -496,14 +466,19 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 ret void } @@ -533,30 +508,30 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size6 = getelementptr inbounds nuw %"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 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map10 = getelementptr inbounds nuw %"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 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size12 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %add.ptr14 = getelementptr inbounds nuw 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 @@ -577,21 +552,21 @@ lpad: ; preds = %entry 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 + %14 = call ptr @__cxa_begin_catch(ptr %exn) #9 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map16 = getelementptr inbounds nuw %"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 + %_M_impl17 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size18 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #9 + %_M_impl19 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map20 = getelementptr inbounds nuw %"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 + %_M_impl21 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size22 = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -608,34 +583,34 @@ 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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #9 + %_M_impl26 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #9 + %_M_impl28 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start29 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl30 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start31 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish33 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 + %_M_first34 = getelementptr inbounds nuw %"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 + %add.ptr36 = getelementptr inbounds nuw ptr, ptr %23, i64 %rem + %_M_impl37 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish38 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 + %_M_cur39 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 store ptr %add.ptr36, ptr %_M_cur39, align 8 ret void @@ -650,72 +625,56 @@ 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 + call void @__clang_call_terminate(ptr %26) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_map = getelementptr inbounds nuw %"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 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_start = getelementptr inbounds nuw %"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) #9 + %_M_finish = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 store ptr null, ptr %_M_node, align 8 ret void } @@ -775,6 +734,10 @@ return: ; preds = %if.end, %if.then ; 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.i4 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %__map_alloc = alloca %"class.std::allocator.0", align 1 @@ -783,23 +746,34 @@ entry: 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 + call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i3 = invoke noundef ptr @_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 + ret ptr %call.i3 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %3 = 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 + %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 + store ptr %__map_alloc, ptr %this.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i4, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i5) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -844,7 +818,7 @@ invoke.cont: ; preds = %for.body for.inc: ; preds = %invoke.cont %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %4, i32 1 store ptr %incdec.ptr, ptr %__cur, align 8 br label %for.cond, !llvm.loop !6 @@ -859,11 +833,11 @@ lpad: ; preds = %for.body catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %8 = call ptr @__cxa_begin_catch(ptr %exn) #9 %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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #9 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad2 for.end: ; preds = %for.cond @@ -896,7 +870,7 @@ 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 + call void @__clang_call_terminate(ptr %15) #10 unreachable unreachable: ; preds = %catch @@ -908,6 +882,10 @@ 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -916,21 +894,29 @@ entry: 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 + call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #10 unreachable } @@ -938,10 +924,10 @@ 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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -956,54 +942,38 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first2 = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #9 %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind noalias writable sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %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) #9 + store ptr %agg.result, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -1013,34 +983,14 @@ 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_impl = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1049,38 +999,42 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #7 +declare void @_ZSt28__throw_bad_array_new_lengthv() #5 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #5 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 +declare noundef nonnull ptr @_Znwm(i64 noundef) #6 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1091,13 +1045,19 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1124,12 +1084,12 @@ for.cond: ; preds = %for.inc, %entry 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #9 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 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %5, i32 1 store ptr %incdec.ptr, ptr %__n, align 8 br label %for.cond, !llvm.loop !8 @@ -1138,21 +1098,9 @@ for.end: ; preds = %for.cond } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1161,117 +1109,99 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #10 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #11 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 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 -} +declare void @_ZdlPvm(ptr noundef, i64 noundef) #7 ; 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #11 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } @@ -1282,18 +1212,8 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1319,24 +1239,28 @@ entry: 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 + %__first.indirect_addr = alloca ptr, align 8 + %__last.indirect_addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_addr, align 8 + store ptr %__last, ptr %__last.indirect_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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #9 ret void } @@ -1346,74 +1270,74 @@ 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_impl = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 + %_M_node4 = getelementptr inbounds nuw %"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 + 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) #9 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map6 = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #9 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 + %_M_impl8 = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first3 = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_last4 = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node5 = getelementptr inbounds nuw %"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 @@ -1422,114 +1346,136 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i11 = alloca ptr, align 8 + %__args.addr.i12 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur7 = getelementptr inbounds nuw %"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 %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i11, align 8 + store ptr %6, ptr %__args.addr.i12, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i11, align 8 + %8 = load ptr, ptr %__args.addr.i12, align 8 + %9 = load ptr, ptr %8, align 8 + store ptr %9, ptr %7, align 8 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 + %_M_cur10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 + %10 = load ptr, ptr %_M_cur10, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, 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) + %11 = 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) %11) 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 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.i = alloca ptr, align 8 + %__p.addr.i18 = alloca ptr, align 8 + %__args.addr.i19 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %call = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #11 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + store ptr %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i18, align 8 + store ptr %5, ptr %__args.addr.i19, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i18, align 8 + %7 = load ptr, ptr %__args.addr.i19, align 8 + %8 = load ptr, ptr %7, align 8 + store ptr %8, ptr %6, align 8 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_node11 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 + %9 = load ptr, ptr %_M_node11, align 8 + %add.ptr12 = getelementptr inbounds ptr, ptr %9, 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) #9 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish14 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 + %10 = load ptr, ptr %_M_first, align 8 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 + %_M_cur17 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 + store ptr %10, ptr %_M_cur17, align 8 ret void } @@ -1540,40 +1486,23 @@ entry: %__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 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %__tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %call = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #9 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #9 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 ret i64 %call } @@ -1583,13 +1512,13 @@ 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 + %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) #9 + %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #9 ret i64 %call2 } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #5 ; 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 { @@ -1601,15 +1530,15 @@ entry: %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 @@ -1635,80 +1564,83 @@ entry: %__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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #9 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 3 + %5 = load ptr, ptr %_M_node2, align 8 + %tobool = icmp ne ptr %5, null + %conv = zext i1 %tobool to i64 + %sub = sub nsw i64 %sub.ptr.div, %conv + %mul = mul nsw i64 %call, %sub %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 0 + %7 = load ptr, ptr %_M_cur, align 8 + %8 = load ptr, ptr %__x.addr, align 8 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %sub.ptr.lhs.cast3 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast4 = ptrtoint ptr %9 to i64 + %sub.ptr.sub5 = sub i64 %sub.ptr.lhs.cast3, %sub.ptr.rhs.cast4 + %sub.ptr.div6 = sdiv exact i64 %sub.ptr.sub5, 8 + %add = add nsw i64 %mul, %sub.ptr.div6 %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 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 2 + %11 = load ptr, ptr %_M_last, align 8 + %12 = load ptr, ptr %__y.addr, align 8 + %_M_cur7 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %_M_cur7, align 8 + %sub.ptr.lhs.cast8 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast9 = ptrtoint ptr %13 to i64 + %sub.ptr.sub10 = sub i64 %sub.ptr.lhs.cast8, %sub.ptr.rhs.cast9 + %sub.ptr.div11 = sdiv exact i64 %sub.ptr.sub10, 8 + %add12 = add nsw i64 %add, %sub.ptr.div11 + ret i64 %add12 } ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #10 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: @@ -1739,16 +1671,6 @@ return: ; preds = %if.end, %if.then 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: @@ -1762,16 +1684,16 @@ entry: %__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 + %storedv = zext i1 %__add_at_front to i8 + store i8 %storedv, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -1783,8 +1705,8 @@ entry: %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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 @@ -1792,19 +1714,19 @@ entry: 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 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size8 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %loadedv = trunc i8 %9 to i1 + br i1 %loadedv, label %cond.true, label %cond.false cond.true: ; preds = %if.then %10 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1815,24 +1737,24 @@ cond.false: ; preds = %if.then 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 + %add.ptr9 = getelementptr inbounds nuw 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 + %_M_impl10 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start11 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 + %_M_node12 = getelementptr inbounds nuw %"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 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 + %_M_node17 = getelementptr inbounds nuw %"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 + %_M_impl18 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish19 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 + %_M_node20 = getelementptr inbounds nuw %"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 @@ -1840,18 +1762,18 @@ if.then14: ; preds = %cond.end 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 + %_M_impl22 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start23 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 + %_M_node24 = getelementptr inbounds nuw %"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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish26 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 + %_M_node27 = getelementptr inbounds nuw %"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 + %add.ptr29 = getelementptr inbounds nuw 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 @@ -1859,11 +1781,11 @@ 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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size33 = getelementptr inbounds nuw %"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 + %_M_impl34 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size35 = getelementptr inbounds nuw %"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 @@ -1877,10 +1799,10 @@ if.else31: ; preds = %entry %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 + %add.ptr42 = getelementptr inbounds nuw 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 + %loadedv43 = trunc i8 %26 to i1 + br i1 %loadedv43, label %cond.true44, label %cond.false45 cond.true44: ; preds = %if.else31 %27 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1891,48 +1813,48 @@ cond.false45: ; preds = %if.else31 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 + %add.ptr48 = getelementptr inbounds nuw 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 + %_M_impl49 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start50 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 + %_M_node51 = getelementptr inbounds nuw %"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 + %_M_impl52 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish53 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 + %_M_node54 = getelementptr inbounds nuw %"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 + %_M_impl57 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map58 = getelementptr inbounds nuw %"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 + %_M_impl59 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size60 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #9 %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 + %_M_impl61 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map62 = getelementptr inbounds nuw %"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 + %_M_impl63 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size64 = getelementptr inbounds nuw %"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 + %_M_impl66 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start67 = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #9 + %_M_impl68 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish69 = getelementptr inbounds nuw %"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.ptr70 = getelementptr inbounds nuw 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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #9 ret void } @@ -1982,11 +1904,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #11 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #11 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #9 %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 @@ -2049,12 +1971,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat align 2 { entry: %__first.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -2071,8 +1993,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2080,17 +2002,45 @@ if.then: ; preds = %entry %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.end3 + +if.else: ; preds = %entry + %6 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %6, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %7 = load ptr, ptr %__result.addr, align 8 + %8 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %7, ptr noundef %8) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end3 + +if.end3: ; preds = %if.end, %if.then + %9 = load ptr, ptr %__result.addr, align 8 + %10 = load i64, ptr %_Num, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %9, i64 %10 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #8 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %__to, ptr noundef %__from) #2 comdat align 2 { +entry: + %__to.addr = alloca ptr, align 8 + %__from.addr = alloca ptr, align 8 + store ptr %__to, ptr %__to.addr, align 8 + store ptr %__from, ptr %__from.addr, align 8 + %0 = load ptr, ptr %__from.addr, align 8 + %1 = load ptr, ptr %0, align 8 + %2 = load ptr, ptr %__to.addr, align 8 + store ptr %1, ptr %2, align 8 + ret void +} ; 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 { @@ -2102,11 +2052,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #11 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #11 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #9 %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 @@ -2140,12 +2090,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_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 { +define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_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 @@ -2162,8 +2112,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2174,14 +2124,29 @@ if.then: ; preds = %entry %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.end4 + +if.else: ; preds = %entry + %7 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %7, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %8 = load ptr, ptr %__result.addr, align 8 + %add.ptr3 = getelementptr inbounds ptr, ptr %8, i64 -1 + %9 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %add.ptr3, ptr noundef %9) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end4 + +if.end4: ; preds = %if.end, %if.then + %10 = load ptr, ptr %__result.addr, align 8 + %11 = load i64, ptr %_Num, align 8 + %idx.neg5 = sub i64 0, %11 + %add.ptr6 = getelementptr inbounds ptr, ptr %10, i64 %idx.neg5 + ret ptr %add.ptr6 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -2190,47 +2155,46 @@ 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #9 + %_M_last = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_cur3 = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { noreturn } +attributes #12 = { builtin allocsize(0) } +attributes #13 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2240,7 +2204,7 @@ attributes #14 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 56547ba87..724cb7d81 100644 --- a/test_cases_bc/basic_cpp_tests/deque-3.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/deque-3.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/deque-3.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %"class.std::deque" = type { %"class.std::_Deque_base" } %"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } @@ -29,12 +29,8 @@ $_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 @@ -53,47 +49,27 @@ $_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 +$_ZNSt15__new_allocatorIP1AE8allocateEmPKv = 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 +$_ZNSt15__new_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 +$_ZNSt15__new_allocatorI1AE8allocateEmPKv = comdat any $_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_ = comdat any -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m = comdat any +$_ZNSt15__new_allocatorI1AE10deallocateEPS0_m = comdat any -$_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any +$_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m = comdat any $_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv = comdat any -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any +$_ZNSt15__new_allocatorI1AED2Ev = comdat any $_ZNK1A1fEPi = comdat any @@ -109,12 +85,8 @@ $_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 @@ -127,12 +99,8 @@ $_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 @@ -151,7 +119,9 @@ $_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 +$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_S8_S6_ = comdat any + +$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_ = comdat any $_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any @@ -159,25 +129,25 @@ $_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 +$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_S8_S6_ = comdat any $_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 @@ -330,12 +300,12 @@ entry: 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 store ptr %call, ptr %aptr, align 8 %0 = load ptr, ptr %aptr, align 8 %1 = load ptr, ptr %ptr, align 8 @@ -347,7 +317,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -358,7 +328,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -369,8 +339,8 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -379,55 +349,73 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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.i = alloca ptr, align 8 + %__p.addr.i11 = alloca ptr, align 8 + %__args.addr.i12 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, 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_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur7 = getelementptr inbounds nuw %"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 %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i11, align 8 + store ptr %6, ptr %__args.addr.i12, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i11, align 8 + %8 = load ptr, ptr %__args.addr.i12, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #9 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 + %_M_cur10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 + %9 = load ptr, ptr %_M_cur10, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, 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) + %10 = 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) %10) br label %if.end if.end: ; preds = %if.else, %if.then @@ -443,47 +431,47 @@ entry: %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 + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 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 + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %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) #9 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 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 + call void @__clang_call_terminate(ptr %1) #10 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 @@ -497,7 +485,7 @@ lpad: ; preds = %entry 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -508,14 +496,19 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 ret void } @@ -545,30 +538,30 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size6 = getelementptr inbounds nuw %"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 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map10 = getelementptr inbounds nuw %"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 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size12 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %add.ptr14 = getelementptr inbounds nuw 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 @@ -589,21 +582,21 @@ lpad: ; preds = %entry 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 + %14 = call ptr @__cxa_begin_catch(ptr %exn) #9 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map16 = getelementptr inbounds nuw %"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 + %_M_impl17 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size18 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #9 + %_M_impl19 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map20 = getelementptr inbounds nuw %"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 + %_M_impl21 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size22 = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -620,34 +613,34 @@ 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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #9 + %_M_impl26 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #9 + %_M_impl28 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start29 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl30 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start31 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish33 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 + %_M_first34 = getelementptr inbounds nuw %"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 + %add.ptr36 = getelementptr inbounds nuw %class.A, ptr %23, i64 %rem + %_M_impl37 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish38 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 + %_M_cur39 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 store ptr %add.ptr36, ptr %_M_cur39, align 8 ret void @@ -662,72 +655,56 @@ 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 + call void @__clang_call_terminate(ptr %26) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_map = getelementptr inbounds nuw %"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 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_start = getelementptr inbounds nuw %"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) #9 + %_M_finish = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 store ptr null, ptr %_M_node, align 8 ret void } @@ -787,6 +764,10 @@ return: ; preds = %if.end, %if.then ; 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.i4 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %__map_alloc = alloca %"class.std::allocator.0", align 1 @@ -795,23 +776,34 @@ entry: 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 + call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i3 = invoke noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 + ret ptr %call.i3 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %3 = 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 + %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 + store ptr %__map_alloc, ptr %this.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i4, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i5) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -856,7 +848,7 @@ invoke.cont: ; preds = %for.body for.inc: ; preds = %invoke.cont %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %4, i32 1 store ptr %incdec.ptr, ptr %__cur, align 8 br label %for.cond, !llvm.loop !6 @@ -871,11 +863,11 @@ lpad: ; preds = %for.body catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %8 = call ptr @__cxa_begin_catch(ptr %exn) #9 %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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #9 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad2 for.end: ; preds = %for.cond @@ -908,7 +900,7 @@ 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 + call void @__clang_call_terminate(ptr %15) #10 unreachable unreachable: ; preds = %catch @@ -920,6 +912,10 @@ 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -928,21 +924,29 @@ entry: 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 + call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #10 unreachable } @@ -950,10 +954,10 @@ 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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -968,54 +972,38 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first2 = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #9 %add.ptr = getelementptr inbounds %class.A, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind noalias writable sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %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) #9 + store ptr %agg.result, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -1025,34 +1013,14 @@ 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_impl = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1061,38 +1029,42 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #7 +declare void @_ZSt28__throw_bad_array_new_lengthv() #5 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #5 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 +declare noundef nonnull ptr @_Znwm(i64 noundef) #6 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1103,13 +1075,19 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1136,12 +1114,12 @@ for.cond: ; preds = %for.inc, %entry 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #9 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 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %5, i32 1 store ptr %incdec.ptr, ptr %__n, align 8 br label %for.cond, !llvm.loop !8 @@ -1150,21 +1128,9 @@ for.end: ; preds = %for.cond } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1173,117 +1139,99 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #10 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #11 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 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 -} +declare void @_ZdlPvm(ptr noundef, i64 noundef) #7 ; 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #11 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } @@ -1294,18 +1242,8 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1331,38 +1269,42 @@ entry: 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 + %__first.indirect_addr = alloca ptr, align 8 + %__last.indirect_addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_addr, align 8 + store ptr %__last, ptr %__last.indirect_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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #9 ret void } @@ -1372,172 +1314,158 @@ 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_impl = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 + %_M_node4 = getelementptr inbounds nuw %"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 + 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) #9 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map6 = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #9 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 + %_M_impl8 = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first3 = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_last4 = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node5 = getelementptr inbounds nuw %"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.i = alloca ptr, align 8 + %__p.addr.i18 = alloca ptr, align 8 + %__args.addr.i19 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %call = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #11 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + store ptr %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i18, align 8 + store ptr %5, ptr %__args.addr.i19, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i18, align 8 + %7 = load ptr, ptr %__args.addr.i19, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #9 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_node11 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 + %8 = load ptr, ptr %_M_node11, align 8 + %add.ptr12 = getelementptr inbounds ptr, ptr %8, 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) #9 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish14 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 + %_M_cur17 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 + store ptr %9, 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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -1547,11 +1475,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 ret i64 %call } @@ -1561,13 +1489,13 @@ 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 + %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) #9 + %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #9 ret i64 %call2 } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #5 ; 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 { @@ -1579,15 +1507,15 @@ entry: %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 @@ -1613,80 +1541,83 @@ entry: %__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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #9 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 3 + %5 = load ptr, ptr %_M_node2, align 8 + %tobool = icmp ne ptr %5, null + %conv = zext i1 %tobool to i64 + %sub = sub nsw i64 %sub.ptr.div, %conv + %mul = mul nsw i64 %call, %sub %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 0 + %7 = load ptr, ptr %_M_cur, align 8 + %8 = load ptr, ptr %__x.addr, align 8 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %sub.ptr.lhs.cast3 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast4 = ptrtoint ptr %9 to i64 + %sub.ptr.sub5 = sub i64 %sub.ptr.lhs.cast3, %sub.ptr.rhs.cast4 + %sub.ptr.div6 = sdiv exact i64 %sub.ptr.sub5, 8 + %add = add nsw i64 %mul, %sub.ptr.div6 %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 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 2 + %11 = load ptr, ptr %_M_last, align 8 + %12 = load ptr, ptr %__y.addr, align 8 + %_M_cur7 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %_M_cur7, align 8 + %sub.ptr.lhs.cast8 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast9 = ptrtoint ptr %13 to i64 + %sub.ptr.sub10 = sub i64 %sub.ptr.lhs.cast8, %sub.ptr.rhs.cast9 + %sub.ptr.div11 = sdiv exact i64 %sub.ptr.sub10, 8 + %add12 = add nsw i64 %add, %sub.ptr.div11 + ret i64 %add12 } ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #10 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: @@ -1717,16 +1648,6 @@ return: ; preds = %if.end, %if.then 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: @@ -1740,16 +1661,16 @@ entry: %__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 + %storedv = zext i1 %__add_at_front to i8 + store i8 %storedv, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -1761,8 +1682,8 @@ entry: %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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 @@ -1770,19 +1691,19 @@ entry: 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 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size8 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %loadedv = trunc i8 %9 to i1 + br i1 %loadedv, label %cond.true, label %cond.false cond.true: ; preds = %if.then %10 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1793,24 +1714,24 @@ cond.false: ; preds = %if.then 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 + %add.ptr9 = getelementptr inbounds nuw 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 + %_M_impl10 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start11 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 + %_M_node12 = getelementptr inbounds nuw %"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 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 + %_M_node17 = getelementptr inbounds nuw %"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 + %_M_impl18 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish19 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 + %_M_node20 = getelementptr inbounds nuw %"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 @@ -1818,18 +1739,18 @@ if.then14: ; preds = %cond.end 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 + %_M_impl22 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start23 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 + %_M_node24 = getelementptr inbounds nuw %"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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish26 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 + %_M_node27 = getelementptr inbounds nuw %"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 + %add.ptr29 = getelementptr inbounds nuw 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 @@ -1837,11 +1758,11 @@ 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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size33 = getelementptr inbounds nuw %"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 + %_M_impl34 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size35 = getelementptr inbounds nuw %"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 @@ -1855,10 +1776,10 @@ if.else31: ; preds = %entry %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 + %add.ptr42 = getelementptr inbounds nuw 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 + %loadedv43 = trunc i8 %26 to i1 + br i1 %loadedv43, label %cond.true44, label %cond.false45 cond.true44: ; preds = %if.else31 %27 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1869,48 +1790,48 @@ cond.false45: ; preds = %if.else31 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 + %add.ptr48 = getelementptr inbounds nuw 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 + %_M_impl49 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start50 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 + %_M_node51 = getelementptr inbounds nuw %"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 + %_M_impl52 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish53 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 + %_M_node54 = getelementptr inbounds nuw %"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 + %_M_impl57 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map58 = getelementptr inbounds nuw %"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 + %_M_impl59 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size60 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #9 %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 + %_M_impl61 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map62 = getelementptr inbounds nuw %"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 + %_M_impl63 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size64 = getelementptr inbounds nuw %"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 + %_M_impl66 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start67 = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #9 + %_M_impl68 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish69 = getelementptr inbounds nuw %"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.ptr70 = getelementptr inbounds nuw 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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #9 ret void } @@ -1960,11 +1881,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #11 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #11 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #9 %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 @@ -2027,12 +1948,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat align 2 { entry: %__first.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -2049,8 +1970,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2058,17 +1979,45 @@ if.then: ; preds = %entry %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.end3 + +if.else: ; preds = %entry + %6 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %6, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %7 = load ptr, ptr %__result.addr, align 8 + %8 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %7, ptr noundef %8) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end3 + +if.end3: ; preds = %if.end, %if.then + %9 = load ptr, ptr %__result.addr, align 8 + %10 = load i64, ptr %_Num, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %9, i64 %10 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #8 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %__to, ptr noundef %__from) #2 comdat align 2 { +entry: + %__to.addr = alloca ptr, align 8 + %__from.addr = alloca ptr, align 8 + store ptr %__to, ptr %__to.addr, align 8 + store ptr %__from, ptr %__from.addr, align 8 + %0 = load ptr, ptr %__from.addr, align 8 + %1 = load ptr, ptr %0, align 8 + %2 = load ptr, ptr %__to.addr, align 8 + store ptr %1, ptr %2, align 8 + ret void +} ; 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 { @@ -2080,11 +2029,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #11 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #11 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #9 %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 @@ -2118,12 +2067,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_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 { +define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_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 @@ -2140,8 +2089,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2152,14 +2101,29 @@ if.then: ; preds = %entry %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.end4 + +if.else: ; preds = %entry + %7 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %7, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %8 = load ptr, ptr %__result.addr, align 8 + %add.ptr3 = getelementptr inbounds ptr, ptr %8, i64 -1 + %9 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %add.ptr3, ptr noundef %9) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end4 + +if.end4: ; preds = %if.end, %if.then + %10 = load ptr, ptr %__result.addr, align 8 + %11 = load i64, ptr %_Num, align 8 + %idx.neg5 = sub i64 0, %11 + %add.ptr6 = getelementptr inbounds ptr, ptr %10, i64 %idx.neg5 + ret ptr %add.ptr6 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -2168,26 +2132,25 @@ 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 + %_M_cur = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { noreturn } +attributes #12 = { builtin allocsize(0) } +attributes #13 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2197,7 +2160,7 @@ attributes #14 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 177da3d62..349b0c74b 100644 --- a/test_cases_bc/basic_cpp_tests/deque-4.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/deque-4.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/deque-4.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %"class.std::deque" = type { %"class.std::_Deque_base" } %"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } @@ -31,12 +31,8 @@ $_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 @@ -55,47 +51,27 @@ $_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 +$_ZNSt15__new_allocatorIP1AE8allocateEmPKv = 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 +$_ZNSt15__new_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 +$_ZNSt15__new_allocatorI1AE8allocateEmPKv = comdat any $_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_ = comdat any -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m = comdat any +$_ZNSt15__new_allocatorI1AE10deallocateEPS0_m = comdat any -$_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any +$_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m = comdat any $_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv = comdat any -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any +$_ZNSt15__new_allocatorI1AED2Ev = comdat any $_ZNK1A1fEPi = comdat any @@ -109,12 +85,8 @@ $_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 @@ -127,12 +99,8 @@ $_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 @@ -151,7 +119,9 @@ $_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 +$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_S8_S6_ = comdat any + +$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_ = comdat any $_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any @@ -159,23 +129,23 @@ $_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 +$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_S8_S6_ = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 @@ -329,13 +299,13 @@ entry: 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %it, ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %it) #9 store ptr %call, ptr %aptr, align 8 %0 = load ptr, ptr %aptr, align 8 %1 = load ptr, ptr %ptr, align 8 @@ -347,7 +317,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -358,7 +328,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -369,8 +339,8 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -379,55 +349,73 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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.i = alloca ptr, align 8 + %__p.addr.i11 = alloca ptr, align 8 + %__args.addr.i12 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, 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_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur7 = getelementptr inbounds nuw %"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 %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i11, align 8 + store ptr %6, ptr %__args.addr.i12, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i11, align 8 + %8 = load ptr, ptr %__args.addr.i12, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #9 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 + %_M_cur10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 + %9 = load ptr, ptr %_M_cur10, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, 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) + %10 = 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) %10) br label %if.end if.end: ; preds = %if.else, %if.then @@ -437,16 +425,16 @@ if.end: ; preds = %if.else, %if.then 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 ret void } @@ -456,47 +444,47 @@ 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 + %_M_cur = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 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 + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %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) #9 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 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 + call void @__clang_call_terminate(ptr %1) #10 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 @@ -510,7 +498,7 @@ lpad: ; preds = %entry 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -521,14 +509,19 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 ret void } @@ -558,30 +551,30 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size6 = getelementptr inbounds nuw %"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 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map10 = getelementptr inbounds nuw %"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 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size12 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %add.ptr14 = getelementptr inbounds nuw 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 @@ -602,21 +595,21 @@ lpad: ; preds = %entry 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 + %14 = call ptr @__cxa_begin_catch(ptr %exn) #9 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map16 = getelementptr inbounds nuw %"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 + %_M_impl17 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size18 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #9 + %_M_impl19 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map20 = getelementptr inbounds nuw %"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 + %_M_impl21 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size22 = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -633,34 +626,34 @@ 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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #9 + %_M_impl26 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #9 + %_M_impl28 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start29 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl30 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start31 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish33 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 + %_M_first34 = getelementptr inbounds nuw %"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 + %add.ptr36 = getelementptr inbounds nuw %class.A, ptr %23, i64 %rem + %_M_impl37 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish38 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 + %_M_cur39 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 store ptr %add.ptr36, ptr %_M_cur39, align 8 ret void @@ -675,72 +668,56 @@ 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 + call void @__clang_call_terminate(ptr %26) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_map = getelementptr inbounds nuw %"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 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_start = getelementptr inbounds nuw %"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) #9 + %_M_finish = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 store ptr null, ptr %_M_node, align 8 ret void } @@ -800,6 +777,10 @@ return: ; preds = %if.end, %if.then ; 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.i4 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %__map_alloc = alloca %"class.std::allocator.0", align 1 @@ -808,23 +789,34 @@ entry: 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 + call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i3 = invoke noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 + ret ptr %call.i3 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %3 = 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 + %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 + store ptr %__map_alloc, ptr %this.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i4, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i5) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -869,7 +861,7 @@ invoke.cont: ; preds = %for.body for.inc: ; preds = %invoke.cont %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %4, i32 1 store ptr %incdec.ptr, ptr %__cur, align 8 br label %for.cond, !llvm.loop !6 @@ -884,11 +876,11 @@ lpad: ; preds = %for.body catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %8 = call ptr @__cxa_begin_catch(ptr %exn) #9 %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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #9 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad2 for.end: ; preds = %for.cond @@ -921,7 +913,7 @@ 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 + call void @__clang_call_terminate(ptr %15) #10 unreachable unreachable: ; preds = %catch @@ -933,6 +925,10 @@ 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -941,21 +937,29 @@ entry: 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 + call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #10 unreachable } @@ -963,10 +967,10 @@ 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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -981,54 +985,38 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first2 = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #9 %add.ptr = getelementptr inbounds %class.A, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind noalias writable sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %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) #9 + store ptr %agg.result, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -1038,34 +1026,14 @@ 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_impl = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1074,38 +1042,42 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #7 +declare void @_ZSt28__throw_bad_array_new_lengthv() #5 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #5 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 +declare noundef nonnull ptr @_Znwm(i64 noundef) #6 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1116,13 +1088,19 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1149,12 +1127,12 @@ for.cond: ; preds = %for.inc, %entry 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #9 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 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %5, i32 1 store ptr %incdec.ptr, ptr %__n, align 8 br label %for.cond, !llvm.loop !8 @@ -1163,21 +1141,9 @@ for.end: ; preds = %for.cond } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1186,117 +1152,99 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #10 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #11 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 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 -} +declare void @_ZdlPvm(ptr noundef, i64 noundef) #7 ; 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #11 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } @@ -1307,18 +1255,8 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1344,24 +1282,28 @@ entry: 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 + %__first.indirect_addr = alloca ptr, align 8 + %__last.indirect_addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_addr, align 8 + store ptr %__last, ptr %__last.indirect_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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #9 ret void } @@ -1371,172 +1313,158 @@ 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_impl = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 + %_M_node4 = getelementptr inbounds nuw %"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 + 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) #9 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map6 = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #9 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 + %_M_impl8 = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first3 = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_last4 = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node5 = getelementptr inbounds nuw %"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.i = alloca ptr, align 8 + %__p.addr.i18 = alloca ptr, align 8 + %__args.addr.i19 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %call = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 + %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #9 %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 + call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #11 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + store ptr %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i18, align 8 + store ptr %5, ptr %__args.addr.i19, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i18, align 8 + %7 = load ptr, ptr %__args.addr.i19, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #9 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_node11 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 + %8 = load ptr, ptr %_M_node11, align 8 + %add.ptr12 = getelementptr inbounds ptr, ptr %8, 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) #9 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish14 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 + %_M_cur17 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 + store ptr %9, 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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -1546,11 +1474,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 ret i64 %call } @@ -1560,13 +1488,13 @@ 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 + %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) #9 + %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #9 ret i64 %call2 } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #5 ; 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 { @@ -1578,15 +1506,15 @@ entry: %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 @@ -1612,80 +1540,83 @@ entry: %__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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #9 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 3 + %5 = load ptr, ptr %_M_node2, align 8 + %tobool = icmp ne ptr %5, null + %conv = zext i1 %tobool to i64 + %sub = sub nsw i64 %sub.ptr.div, %conv + %mul = mul nsw i64 %call, %sub %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 0 + %7 = load ptr, ptr %_M_cur, align 8 + %8 = load ptr, ptr %__x.addr, align 8 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %sub.ptr.lhs.cast3 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast4 = ptrtoint ptr %9 to i64 + %sub.ptr.sub5 = sub i64 %sub.ptr.lhs.cast3, %sub.ptr.rhs.cast4 + %sub.ptr.div6 = sdiv exact i64 %sub.ptr.sub5, 8 + %add = add nsw i64 %mul, %sub.ptr.div6 %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 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 2 + %11 = load ptr, ptr %_M_last, align 8 + %12 = load ptr, ptr %__y.addr, align 8 + %_M_cur7 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %_M_cur7, align 8 + %sub.ptr.lhs.cast8 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast9 = ptrtoint ptr %13 to i64 + %sub.ptr.sub10 = sub i64 %sub.ptr.lhs.cast8, %sub.ptr.rhs.cast9 + %sub.ptr.div11 = sdiv exact i64 %sub.ptr.sub10, 8 + %add12 = add nsw i64 %add, %sub.ptr.div11 + ret i64 %add12 } ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #10 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: @@ -1716,16 +1647,6 @@ return: ; preds = %if.end, %if.then 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: @@ -1739,16 +1660,16 @@ entry: %__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 + %storedv = zext i1 %__add_at_front to i8 + store i8 %storedv, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -1760,8 +1681,8 @@ entry: %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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 @@ -1769,19 +1690,19 @@ entry: 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 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size8 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %loadedv = trunc i8 %9 to i1 + br i1 %loadedv, label %cond.true, label %cond.false cond.true: ; preds = %if.then %10 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1792,24 +1713,24 @@ cond.false: ; preds = %if.then 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 + %add.ptr9 = getelementptr inbounds nuw 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 + %_M_impl10 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start11 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 + %_M_node12 = getelementptr inbounds nuw %"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 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 + %_M_node17 = getelementptr inbounds nuw %"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 + %_M_impl18 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish19 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 + %_M_node20 = getelementptr inbounds nuw %"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 @@ -1817,18 +1738,18 @@ if.then14: ; preds = %cond.end 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 + %_M_impl22 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start23 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 + %_M_node24 = getelementptr inbounds nuw %"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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish26 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 + %_M_node27 = getelementptr inbounds nuw %"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 + %add.ptr29 = getelementptr inbounds nuw 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 @@ -1836,11 +1757,11 @@ 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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size33 = getelementptr inbounds nuw %"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 + %_M_impl34 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size35 = getelementptr inbounds nuw %"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 @@ -1854,10 +1775,10 @@ if.else31: ; preds = %entry %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 + %add.ptr42 = getelementptr inbounds nuw 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 + %loadedv43 = trunc i8 %26 to i1 + br i1 %loadedv43, label %cond.true44, label %cond.false45 cond.true44: ; preds = %if.else31 %27 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1868,48 +1789,48 @@ cond.false45: ; preds = %if.else31 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 + %add.ptr48 = getelementptr inbounds nuw 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 + %_M_impl49 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start50 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 + %_M_node51 = getelementptr inbounds nuw %"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 + %_M_impl52 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish53 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 + %_M_node54 = getelementptr inbounds nuw %"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 + %_M_impl57 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map58 = getelementptr inbounds nuw %"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 + %_M_impl59 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size60 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #9 %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 + %_M_impl61 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map62 = getelementptr inbounds nuw %"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 + %_M_impl63 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size64 = getelementptr inbounds nuw %"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 + %_M_impl66 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start67 = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #9 + %_M_impl68 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish69 = getelementptr inbounds nuw %"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.ptr70 = getelementptr inbounds nuw 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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #9 ret void } @@ -1959,11 +1880,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #11 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #11 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #9 %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 @@ -2026,12 +1947,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat align 2 { entry: %__first.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -2048,8 +1969,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2057,17 +1978,45 @@ if.then: ; preds = %entry %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.end3 + +if.else: ; preds = %entry + %6 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %6, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %7 = load ptr, ptr %__result.addr, align 8 + %8 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %7, ptr noundef %8) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end3 + +if.end3: ; preds = %if.end, %if.then + %9 = load ptr, ptr %__result.addr, align 8 + %10 = load i64, ptr %_Num, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %9, i64 %10 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #8 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %__to, ptr noundef %__from) #2 comdat align 2 { +entry: + %__to.addr = alloca ptr, align 8 + %__from.addr = alloca ptr, align 8 + store ptr %__to, ptr %__to.addr, align 8 + store ptr %__from, ptr %__from.addr, align 8 + %0 = load ptr, ptr %__from.addr, align 8 + %1 = load ptr, ptr %0, align 8 + %2 = load ptr, ptr %__to.addr, align 8 + store ptr %1, ptr %2, align 8 + ret void +} ; 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 { @@ -2079,11 +2028,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #11 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #11 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #9 %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 @@ -2117,12 +2066,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_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 { +define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_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 @@ -2139,8 +2088,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2151,31 +2100,45 @@ if.then: ; preds = %entry %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.end4 + +if.else: ; preds = %entry + %7 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %7, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %8 = load ptr, ptr %__result.addr, align 8 + %add.ptr3 = getelementptr inbounds ptr, ptr %8, i64 -1 + %9 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %add.ptr3, ptr noundef %9) 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) } +if.end: ; preds = %if.then2, %if.else + br label %if.end4 + +if.end4: ; preds = %if.end, %if.then + %10 = load ptr, ptr %__result.addr, align 8 + %11 = load i64, ptr %_Num, align 8 + %idx.neg5 = sub i64 0, %11 + %add.ptr6 = getelementptr inbounds ptr, ptr %10, i64 %idx.neg5 + ret ptr %add.ptr6 +} + +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { noreturn } +attributes #12 = { builtin allocsize(0) } +attributes #13 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2185,7 +2148,7 @@ attributes #14 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 82c816352..e116e981c 100644 --- a/test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.B = type { %class.A, ptr } %class.A = type { ptr, ptr } @@ -26,13 +26,13 @@ $__clang_call_terminate = comdat any $_ZTV1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -42,12 +42,12 @@ $_ZTV1A = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -193,7 +193,7 @@ entry: %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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #7 %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 @@ -208,7 +208,7 @@ 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 + call void %2(ptr noundef nonnull align 8 dereferenceable(24) %1) #8 br label %delete.end delete.end: ; preds = %delete.notnull, %invoke.cont @@ -221,7 +221,7 @@ lpad: ; preds = %entry 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 + call void @_ZdlPvm(ptr noundef %call, i64 noundef 24) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -235,8 +235,8 @@ eh.resume: ; preds = %lpad ; 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2EPi(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 @@ -245,8 +245,8 @@ entry: %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 + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2), ptr %this1, align 8 + %bptr = getelementptr inbounds nuw %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 @@ -255,30 +255,30 @@ entry: declare i32 @__gxx_personality_v0(...) ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(16) %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 - 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 + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 + %aptr = getelementptr inbounds nuw %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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #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 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, 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 @@ -286,25 +286,25 @@ entry: to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry - call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #10 + call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #8 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 + call void @__clang_call_terminate(ptr %2) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BD0Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1BD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + call void @_ZdlPvm(ptr noundef %this1, i64 noundef 24) #9 ret void } @@ -315,19 +315,19 @@ entry: 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 + %bptr = getelementptr inbounds nuw %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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #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 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, 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 @@ -341,18 +341,18 @@ 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 + call void @__clang_call_terminate(ptr %2) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AD0Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #8 + call void @_ZdlPvm(ptr noundef %this1, i64 noundef 16) #9 ret void } @@ -363,16 +363,16 @@ entry: 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 + %aptr = getelementptr inbounds nuw %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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #6 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #8 + call void @_ZSt9terminatev() #10 unreachable } @@ -380,19 +380,17 @@ 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { builtin allocsize(0) } +attributes #8 = { nounwind } +attributes #9 = { builtin nounwind } +attributes #10 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -402,4 +400,4 @@ attributes #12 = { noreturn nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc b/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc index bb6f1a6ae..de7df0fdb 100644 --- a/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.B = type { %class.A, ptr } %class.A = type { ptr, ptr } @@ -26,13 +26,13 @@ $__clang_call_terminate = comdat any $_ZTV1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -42,12 +42,12 @@ $_ZTV1A = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -206,7 +206,7 @@ entry: %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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #7 %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 @@ -221,7 +221,7 @@ 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 + call void %2(ptr noundef nonnull align 8 dereferenceable(24) %1) #8 br label %delete.end delete.end: ; preds = %delete.notnull, %invoke.cont @@ -234,7 +234,7 @@ lpad: ; preds = %entry 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 + call void @_ZdlPvm(ptr noundef %call, i64 noundef 24) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -248,8 +248,8 @@ eh.resume: ; preds = %lpad ; 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2EPi(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 @@ -258,8 +258,8 @@ entry: %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 + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2), ptr %this1, align 8 + %bptr = getelementptr inbounds nuw %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 @@ -268,53 +268,53 @@ entry: declare i32 @__gxx_personality_v0(...) ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(16) %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 - 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 + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 + %aptr = getelementptr inbounds nuw %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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #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 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, 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 + call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #8 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 + call void @__clang_call_terminate(ptr %1) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BD0Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1BD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + call void @_ZdlPvm(ptr noundef %this1, i64 noundef 24) #9 ret void } @@ -325,19 +325,19 @@ entry: 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 + %bptr = getelementptr inbounds nuw %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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #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 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 invoke void @_Z1gP1A(ptr noundef %this1) to label %invoke.cont unwind label %terminate.lpad @@ -348,18 +348,18 @@ 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 + call void @__clang_call_terminate(ptr %1) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AD0Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #8 + call void @_ZdlPvm(ptr noundef %this1, i64 noundef 16) #9 ret void } @@ -370,16 +370,16 @@ entry: 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 + %aptr = getelementptr inbounds nuw %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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #6 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #8 + call void @_ZSt9terminatev() #10 unreachable } @@ -387,19 +387,17 @@ 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { builtin allocsize(0) } +attributes #8 = { nounwind } +attributes #9 = { builtin nounwind } +attributes #10 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -409,4 +407,4 @@ attributes #12 = { noreturn nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc b/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc index 180e7c5ee..c74a1add0 100644 --- a/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.D = type { %class.B, %class.C } %class.B = type { %class.A } @@ -24,21 +24,21 @@ $_ZN1A1fEPi = comdat any $_ZTV1D = comdat any +$_ZTI1D = comdat any + $_ZTS1D = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any - -$_ZTS1C = comdat any +$_ZTS1A = comdat any $_ZTI1C = comdat any -$_ZTI1D = comdat any +$_ZTS1C = comdat any $_ZTV1B = comdat any @@ -54,17 +54,17 @@ $_ZTV1C = comdat any @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 +@_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 +@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global [0 x 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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\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 +@_ZTS1C = linkonce_odr dso_local constant [3 x i8] c"1C\00", comdat, align 1 @_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 @@ -214,7 +214,7 @@ entry: 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 + call void @_ZN1DC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %d) #4 store ptr %d, ptr %b, align 8 %0 = load ptr, ptr %b, align 8 %1 = load ptr, ptr %ptr_b, align 8 @@ -241,40 +241,40 @@ cast.end: ; preds = %cast.notnull, %entr 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1DC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #4 %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 + call void @_ZN1CC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #4 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr], [3 x ptr] }, ptr @_ZTV1D, i32 0, 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr], [3 x ptr] }, ptr @_ZTV1D, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #4 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1CC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #4 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1C, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -312,13 +312,13 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -339,12 +339,11 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -354,4 +353,4 @@ attributes #5 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 16b1cf102..e7f69b7bd 100644 --- a/test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1BC2Ev = comdat any @@ -11,14 +11,14 @@ $_ZN1B1fEPi = comdat any $_ZN1A1fEPi = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any -$_ZTS1B = comdat any +$_ZTS1A = comdat any $_ZTI1B = comdat any +$_ZTS1B = comdat any + $_ZTV1B = comdat any $_ZTV1A = comdat any @@ -28,12 +28,12 @@ $_ZTV1A = comdat any @.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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x ptr] +@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 @_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 @@ -183,15 +183,15 @@ entry: 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 + %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 %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 + %2 = call ptr @__dynamic_cast(ptr %0, ptr @_ZTI1A, ptr @_ZTI1B, i64 0) #7 br label %dynamic_cast.end dynamic_cast.null: ; preds = %entry @@ -220,27 +220,27 @@ if.end: ; preds = %if.then, %dynamic_c ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, 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: nounwind willreturn memory(read) +declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -272,15 +272,14 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nounwind willreturn memory(read) } +attributes #6 = { builtin allocsize(0) } +attributes #7 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -290,4 +289,4 @@ attributes #8 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 1672c53c5..209d66f1d 100644 --- a/test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -27,12 +28,8 @@ $_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 @@ -43,29 +40,21 @@ $__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 +$_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeIPK1AES4_Lb0EE10pointer_toERS4_ = comdat any -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE10deallocateERS5_PS4_m = comdat any +$_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS4_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 +$_ZNSt15__new_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 @@ -77,38 +66,27 @@ $_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 +$_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv = comdat any $_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -243,24 +221,8 @@ entry: 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 { +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 @@ -275,12 +237,12 @@ entry: 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 + call void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 + %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #10 to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #9 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 @@ -302,7 +264,7 @@ invoke.cont2: ; preds = %invoke.cont1 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 + call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -313,7 +275,7 @@ lpad: ; preds = %invoke.cont2, %invo 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 + call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -324,28 +286,28 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret void } ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 +declare noundef nonnull ptr @_Znwm(i64 noundef) #4 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -358,11 +320,11 @@ entry: 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 + %call = call ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"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 @@ -375,83 +337,69 @@ entry: %__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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 + %_M_next = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + %_M_head = getelementptr inbounds nuw %"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 + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #9 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_next = getelementptr inbounds nuw %"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: @@ -466,33 +414,37 @@ entry: 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 { +; Function Attrs: mustprogress 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 #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 %"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_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"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) #9 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 + call void @__clang_call_terminate(ptr %1) #11 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.i = alloca ptr, align 8 + %__p.addr.i5 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__pos.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -503,7 +455,7 @@ entry: 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 + %_M_next = getelementptr inbounds nuw %"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 @@ -518,31 +470,38 @@ 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 + %_M_next2 = getelementptr inbounds nuw %"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 + %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) #9 %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) + %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #9 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + %8 = load ptr, ptr %__a.addr.i, align 8 + %9 = load ptr, ptr %__p.addr.i, align 8 + store ptr %8, ptr %this.addr.i, align 8 + store ptr %9, ptr %__p.addr.i5, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %10 = load ptr, ptr %__p.addr.i5, align 8 + %11 = load ptr, ptr %__temp, align 8 + %12 = 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 %12) 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 + %13 = load ptr, ptr %__last.addr, align 8 + %14 = load ptr, ptr %__pos.addr, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %14, i32 0, i32 0 + store ptr %13, ptr %_M_next4, align 8 + %15 = load ptr, ptr %__last.addr, align 8 + ret ptr %15 +} + +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #6 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #11 unreachable } @@ -550,26 +509,16 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void } @@ -579,7 +528,7 @@ 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_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } @@ -589,14 +538,17 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #9 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__ptr = alloca ptr, align 8 @@ -604,23 +556,17 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeIPK1AES4_Lb0EE10pointer_toERS4_(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 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 + %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) #9 %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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) ret void } @@ -630,7 +576,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret ptr %call } @@ -640,12 +586,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeIPK1AES4_Lb0EE10pointer_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 @@ -653,52 +599,28 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 16 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 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 -} +declare void @_ZdlPvm(ptr noundef, i64 noundef) #7 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -714,29 +636,29 @@ entry: %__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 + %coerce.dive = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_next = getelementptr inbounds nuw %"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 + %_M_next2 = getelementptr inbounds nuw %"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 + %_M_next3 = getelementptr inbounds nuw %"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 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 %8 = load ptr, ptr %_M_next4, align 8 ret ptr %8 } @@ -748,10 +670,10 @@ 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 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -759,6 +681,12 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i4 = alloca ptr, align 8 + %__args.addr.i5 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__node = alloca ptr, align 8 @@ -768,71 +696,61 @@ entry: %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 + call void @_ZNSt14_Fwd_list_nodeIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 + %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) #9 %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 + %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #9 %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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i4, align 8 + store ptr %5, ptr %__args.addr.i5, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i4, align 8 + %7 = load ptr, ptr %__args.addr.i5, align 8 + %8 = load ptr, ptr %7, align 8 + store ptr %8, ptr %6, align 8 + %9 = load ptr, ptr %__node, align 8 + ret ptr %9 } ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %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) #9 + store ptr %call, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + store ptr %call.i, ptr %__ptr, align 8 + %2 = load ptr, ptr %__ptr, align 8 + %call3 = call noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeIPK1AEEPT_S6_(ptr noundef %2) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt14_Fwd_list_nodeIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 + %_M_storage = getelementptr inbounds nuw %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 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: @@ -843,8 +761,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -853,88 +772,65 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 576460752303423487 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #15 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 1152921504606846975 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #13 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 16 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #10 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 +declare void @_ZSt28__throw_bad_array_new_lengthv() #8 -; 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: noreturn +declare void @_ZSt17__throw_bad_allocv() #8 -; 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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #6 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nounwind } +attributes #10 = { builtin allocsize(0) } +attributes #11 = { noreturn nounwind } +attributes #12 = { builtin nounwind } +attributes #13 = { noreturn } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -944,6 +840,6 @@ attributes #16 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 4dcf28c2c..77c35855c 100644 --- a/test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -30,12 +31,8 @@ $_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 @@ -46,29 +43,21 @@ $__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 +$_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeIPK1AES4_Lb0EE10pointer_toERS4_ = comdat any -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE10deallocateERS5_PS4_m = comdat any +$_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS4_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 +$_ZNSt15__new_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 @@ -80,17 +69,9 @@ $_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 +$_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv = comdat any $_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base = comdat any @@ -98,22 +79,19 @@ $_ZNSt18_Fwd_list_iteratorIPK1AEC2EPSt19_Fwd_list_node_base = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -248,24 +226,8 @@ entry: 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 { +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 @@ -281,21 +243,21 @@ entry: 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 + call void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 + %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #10 to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #9 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 + %call2 = call ptr @_ZNSt12forward_listIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #9 %0 = load ptr, ptr %call3, align 8 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 @@ -308,7 +270,7 @@ invoke.cont1: ; preds = %invoke.cont 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 + call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -319,7 +281,7 @@ lpad: ; preds = %invoke.cont1, %invo 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 + call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -330,28 +292,28 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret void } ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 +declare noundef nonnull ptr @_Znwm(i64 noundef) #4 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -364,11 +326,11 @@ entry: 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 + %call = call ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"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 @@ -381,12 +343,12 @@ 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 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 + %_M_next = getelementptr inbounds nuw %"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 + call void @_ZNSt18_Fwd_list_iteratorIPK1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Fwd_list_iterator", ptr %retval, i32 0, i32 0 %1 = load ptr, ptr %coerce.dive, align 8 ret ptr %1 } @@ -397,79 +359,65 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + %_M_head = getelementptr inbounds nuw %"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 + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #9 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_next = getelementptr inbounds nuw %"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: @@ -484,33 +432,37 @@ entry: 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 { +; Function Attrs: mustprogress 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 #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 %"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_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"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) #9 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 + call void @__clang_call_terminate(ptr %1) #11 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.i = alloca ptr, align 8 + %__p.addr.i5 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__pos.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -521,7 +473,7 @@ entry: 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 + %_M_next = getelementptr inbounds nuw %"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 @@ -536,31 +488,38 @@ 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 + %_M_next2 = getelementptr inbounds nuw %"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 + %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) #9 %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) + %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #9 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + %8 = load ptr, ptr %__a.addr.i, align 8 + %9 = load ptr, ptr %__p.addr.i, align 8 + store ptr %8, ptr %this.addr.i, align 8 + store ptr %9, ptr %__p.addr.i5, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %10 = load ptr, ptr %__p.addr.i5, align 8 + %11 = load ptr, ptr %__temp, align 8 + %12 = 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 %12) 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 + %13 = load ptr, ptr %__last.addr, align 8 + %14 = load ptr, ptr %__pos.addr, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %14, i32 0, i32 0 + store ptr %13, ptr %_M_next4, align 8 + %15 = load ptr, ptr %__last.addr, align 8 + ret ptr %15 +} + +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #6 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #11 unreachable } @@ -568,26 +527,16 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void } @@ -597,7 +546,7 @@ 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_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } @@ -607,14 +556,17 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #9 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__ptr = alloca ptr, align 8 @@ -622,23 +574,17 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeIPK1AES4_Lb0EE10pointer_toERS4_(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 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 + %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) #9 %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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) ret void } @@ -648,7 +594,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret ptr %call } @@ -658,12 +604,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeIPK1AES4_Lb0EE10pointer_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 @@ -671,52 +617,28 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 16 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 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 -} +declare void @_ZdlPvm(ptr noundef, i64 noundef) #7 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -732,29 +654,29 @@ entry: %__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 + %coerce.dive = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_next = getelementptr inbounds nuw %"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 + %_M_next2 = getelementptr inbounds nuw %"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 + %_M_next3 = getelementptr inbounds nuw %"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 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 %8 = load ptr, ptr %_M_next4, align 8 ret ptr %8 } @@ -766,10 +688,10 @@ 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 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -777,6 +699,12 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i4 = alloca ptr, align 8 + %__args.addr.i5 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__node = alloca ptr, align 8 @@ -786,71 +714,61 @@ entry: %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 + call void @_ZNSt14_Fwd_list_nodeIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 + %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) #9 %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 + %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #9 %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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i4, align 8 + store ptr %5, ptr %__args.addr.i5, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i4, align 8 + %7 = load ptr, ptr %__args.addr.i5, align 8 + %8 = load ptr, ptr %7, align 8 + store ptr %8, ptr %6, align 8 + %9 = load ptr, ptr %__node, align 8 + ret ptr %9 } ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %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) #9 + store ptr %call, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + store ptr %call.i, ptr %__ptr, align 8 + %2 = load ptr, ptr %__ptr, align 8 + %call3 = call noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeIPK1AEEPT_S6_(ptr noundef %2) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt14_Fwd_list_nodeIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 + %_M_storage = getelementptr inbounds nuw %"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: @@ -861,8 +779,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -871,102 +790,79 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 576460752303423487 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #15 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 1152921504606846975 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #13 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 16 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #10 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 +declare void @_ZSt28__throw_bad_array_new_lengthv() #8 -; 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: noreturn +declare void @_ZSt17__throw_bad_allocv() #8 -; 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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #6 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nounwind } +attributes #10 = { builtin allocsize(0) } +attributes #11 = { noreturn nounwind } +attributes #12 = { builtin nounwind } +attributes #13 = { noreturn } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -976,6 +872,6 @@ attributes #16 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index bde27b518..80c75e73b 100644 --- a/test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -28,12 +29,8 @@ $_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 @@ -44,29 +41,21 @@ $__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 +$_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeI1AES2_Lb0EE10pointer_toERS2_ = comdat any -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE10deallocateERS3_PS2_m = comdat any +$_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS2_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 +$_ZNSt15__new_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 @@ -78,17 +67,9 @@ $_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 +$_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv = comdat any $_ZN1AC2ERKS_ = comdat any @@ -96,22 +77,19 @@ $_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -246,24 +224,8 @@ entry: 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 { +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 @@ -278,8 +240,8 @@ entry: 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 + call void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 @@ -299,7 +261,7 @@ invoke.cont1: ; preds = %invoke.cont 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 + call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -310,7 +272,7 @@ lpad: ; preds = %invoke.cont1, %invo 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 + call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -321,23 +283,23 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -350,11 +312,11 @@ entry: 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 + %call = call ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"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 @@ -369,83 +331,69 @@ entry: %__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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 + %_M_next = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + %_M_head = getelementptr inbounds nuw %"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 + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #9 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_next = getelementptr inbounds nuw %"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: @@ -460,33 +408,37 @@ entry: 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 { +; Function Attrs: mustprogress 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 #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 %"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_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"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) #9 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 + call void @__clang_call_terminate(ptr %1) #10 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.i = alloca ptr, align 8 + %__p.addr.i5 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__pos.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -497,7 +449,7 @@ entry: 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 + %_M_next = getelementptr inbounds nuw %"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 @@ -512,31 +464,38 @@ 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 + %_M_next2 = getelementptr inbounds nuw %"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 + %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) #9 %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) + %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #9 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + %8 = load ptr, ptr %__a.addr.i, align 8 + %9 = load ptr, ptr %__p.addr.i, align 8 + store ptr %8, ptr %this.addr.i, align 8 + store ptr %9, ptr %__p.addr.i5, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %10 = load ptr, ptr %__p.addr.i5, align 8 + %11 = load ptr, ptr %__temp, align 8 + %12 = 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 %12) 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 + %13 = load ptr, ptr %__last.addr, align 8 + %14 = load ptr, ptr %__pos.addr, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %14, i32 0, i32 0 + store ptr %13, ptr %_M_next4, align 8 + %15 = load ptr, ptr %__last.addr, align 8 + ret ptr %15 +} + +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #5 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -544,26 +503,16 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void } @@ -573,7 +522,7 @@ 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_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } @@ -583,14 +532,17 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #9 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__ptr = alloca ptr, align 8 @@ -598,23 +550,17 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeI1AES2_Lb0EE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 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 + %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) #9 %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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) ret void } @@ -624,7 +570,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret ptr %call } @@ -634,12 +580,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeI1AES2_Lb0EE10pointer_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 @@ -647,52 +593,28 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 16 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #11 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #6 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -708,29 +630,29 @@ entry: %__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 + %coerce.dive = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_next = getelementptr inbounds nuw %"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 + %_M_next2 = getelementptr inbounds nuw %"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 + %_M_next3 = getelementptr inbounds nuw %"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 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 %8 = load ptr, ptr %_M_next4, align 8 ret ptr %8 } @@ -742,10 +664,10 @@ 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 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -753,6 +675,12 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i4 = alloca ptr, align 8 + %__args.addr.i5 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__node = alloca ptr, align 8 @@ -762,71 +690,60 @@ entry: %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 + call void @_ZNSt14_Fwd_list_nodeI1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 + %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) #9 %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 + %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #9 %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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i4, align 8 + store ptr %5, ptr %__args.addr.i5, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i4, align 8 + %7 = load ptr, ptr %__args.addr.i5, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #9 + %8 = load ptr, ptr %__node, align 8 + ret ptr %8 } ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %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) #9 + store ptr %call, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + store ptr %call.i, ptr %__ptr, align 8 + %2 = load ptr, ptr %__ptr, align 8 + %call3 = call noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeI1AEEPT_S4_(ptr noundef %2) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt14_Fwd_list_nodeI1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 + %_M_storage = getelementptr inbounds nuw %"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: @@ -837,8 +754,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -847,101 +765,80 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 576460752303423487 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #14 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 1152921504606846975 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #12 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #12 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 16 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #13 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 +declare void @_ZSt28__throw_bad_array_new_lengthv() #7 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 ; 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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #5 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { builtin nounwind } +attributes #12 = { noreturn } +attributes #13 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -951,6 +848,6 @@ attributes #15 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 3b4b30164..811551ba7 100644 --- a/test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -31,12 +32,8 @@ $_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 @@ -47,29 +44,21 @@ $__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 +$_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeI1AES2_Lb0EE10pointer_toERS2_ = comdat any -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE10deallocateERS3_PS2_m = comdat any +$_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS2_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 +$_ZNSt15__new_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 @@ -81,17 +70,9 @@ $_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 +$_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv = comdat any $_ZN1AC2ERKS_ = comdat any @@ -101,22 +82,19 @@ $_ZNSt18_Fwd_list_iteratorI1AEC2EPSt19_Fwd_list_node_base = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -251,24 +229,8 @@ entry: 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 { +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 @@ -284,16 +246,16 @@ entry: 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 + call void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 + %call = call ptr @_ZNSt12forward_listI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #9 store ptr %call1, ptr %aptr, align 8 %0 = load ptr, ptr %aptr, align 8 %1 = load ptr, ptr %ptr, align 8 @@ -305,7 +267,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -316,7 +278,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -327,23 +289,23 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -356,11 +318,11 @@ entry: 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 + %call = call ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"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 @@ -375,12 +337,12 @@ 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 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 + %_M_next = getelementptr inbounds nuw %"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 + call void @_ZNSt18_Fwd_list_iteratorI1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Fwd_list_iterator", ptr %retval, i32 0, i32 0 %1 = load ptr, ptr %coerce.dive, align 8 ret ptr %1 } @@ -391,79 +353,65 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + %_M_head = getelementptr inbounds nuw %"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 + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #9 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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_next = getelementptr inbounds nuw %"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: @@ -478,33 +426,37 @@ entry: 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 { +; Function Attrs: mustprogress 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 #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 %"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_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"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) #9 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 + call void @__clang_call_terminate(ptr %1) #10 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.i = alloca ptr, align 8 + %__p.addr.i5 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__pos.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -515,7 +467,7 @@ entry: 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 + %_M_next = getelementptr inbounds nuw %"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 @@ -530,31 +482,38 @@ 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 + %_M_next2 = getelementptr inbounds nuw %"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 + %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) #9 %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) + %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #9 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + %8 = load ptr, ptr %__a.addr.i, align 8 + %9 = load ptr, ptr %__p.addr.i, align 8 + store ptr %8, ptr %this.addr.i, align 8 + store ptr %9, ptr %__p.addr.i5, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %10 = load ptr, ptr %__p.addr.i5, align 8 + %11 = load ptr, ptr %__temp, align 8 + %12 = 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 %12) 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 + %13 = load ptr, ptr %__last.addr, align 8 + %14 = load ptr, ptr %__pos.addr, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %14, i32 0, i32 0 + store ptr %13, ptr %_M_next4, align 8 + %15 = load ptr, ptr %__last.addr, align 8 + ret ptr %15 +} + +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #5 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -562,26 +521,16 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void } @@ -591,7 +540,7 @@ 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_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } @@ -601,14 +550,17 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #9 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__ptr = alloca ptr, align 8 @@ -616,23 +568,17 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeI1AES2_Lb0EE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 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 + %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) #9 %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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) ret void } @@ -642,7 +588,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret ptr %call } @@ -652,12 +598,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPSt14_Fwd_list_nodeI1AES2_Lb0EE10pointer_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 @@ -665,52 +611,28 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 16 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #11 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #6 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -726,29 +648,29 @@ entry: %__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 + %coerce.dive = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_next = getelementptr inbounds nuw %"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 + %_M_next2 = getelementptr inbounds nuw %"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 + %_M_next3 = getelementptr inbounds nuw %"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 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 %8 = load ptr, ptr %_M_next4, align 8 ret ptr %8 } @@ -760,10 +682,10 @@ 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 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_head = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -771,6 +693,12 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i4 = alloca ptr, align 8 + %__args.addr.i5 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__node = alloca ptr, align 8 @@ -780,71 +708,60 @@ entry: %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 + call void @_ZNSt14_Fwd_list_nodeI1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #9 + %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) #9 %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 + %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #9 %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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i4, align 8 + store ptr %5, ptr %__args.addr.i5, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i4, align 8 + %7 = load ptr, ptr %__args.addr.i5, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #9 + %8 = load ptr, ptr %__node, align 8 + ret ptr %8 } ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %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) #9 + store ptr %call, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + store ptr %call.i, ptr %__ptr, align 8 + %2 = load ptr, ptr %__ptr, align 8 + %call3 = call noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeI1AEEPT_S4_(ptr noundef %2) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt14_Fwd_list_nodeI1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 + %_M_storage = getelementptr inbounds nuw %"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: @@ -855,8 +772,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -865,115 +783,94 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 576460752303423487 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #14 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 1152921504606846975 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #12 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #12 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 16 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #13 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 +declare void @_ZSt28__throw_bad_array_new_lengthv() #7 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 ; 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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #5 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { builtin nounwind } +attributes #12 = { noreturn } +attributes #13 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -983,6 +880,6 @@ attributes #15 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 91dfd7d14..20e14e7bb 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/func-ptr-in-class.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.A = type { ptr, ptr, ptr } @@ -13,10 +13,10 @@ $_ZN1A1gEPi = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 @@ -29,9 +29,9 @@ $_ZTI1A = comdat any @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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -220,22 +220,22 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %call) #6 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 + %pf = getelementptr inbounds nuw %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 + %pg = getelementptr inbounds nuw %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 + %pf1 = getelementptr inbounds nuw %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 + %pg2 = getelementptr inbounds nuw %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) @@ -257,13 +257,13 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -313,14 +313,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -330,4 +329,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index aa253c07f..d34e0d48f 100644 --- 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 @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/global-obj-in-array.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -18,12 +19,10 @@ $_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 +$_ZTS1A = 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 @@ -34,31 +33,15 @@ $_ZTI1A = comdat any @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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_ZSt4cout = external global %"class.std::basic_ostream", align 8 -@.str.6 = private unnamed_addr constant [7 x i8] c"data: \00", align 1 +@.str.5 = 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 { +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 @@ -71,7 +54,7 @@ entry: declare i32 @printf(ptr noundef, ...) #1 ; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { +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 @@ -82,7 +65,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { +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 @@ -93,7 +76,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { +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 @@ -104,7 +87,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { +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 @@ -115,7 +98,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { +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 @@ -126,7 +109,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #4 { +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 @@ -137,7 +120,7 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #5 { +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 @@ -147,7 +130,7 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #5 { +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 @@ -157,7 +140,7 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #5 { +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 @@ -169,7 +152,7 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #5 { +define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { entry: %lockname.addr = alloca ptr, align 8 store ptr %lockname, ptr %lockname.addr, align 8 @@ -177,7 +160,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #4 { +define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { entry: %str.addr = alloca ptr, align 8 store ptr %str, ptr %str.addr, align 8 @@ -191,43 +174,43 @@ entry: declare i32 @getchar() #1 ; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init.3() #0 section ".text.startup" { +define internal void @__cxx_global_var_init() #3 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) %this, i32 noundef %d) unnamed_addr #2 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 + %data = getelementptr inbounds nuw %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" { +define internal void @__cxx_global_var_init.3() #3 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" { +define internal void @__cxx_global_var_init.4() #3 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 { +define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #4 { entry: %retval = alloca i32, align 4 %argc.addr = alloca i32, align 4 @@ -242,14 +225,14 @@ entry: for.cond: ; preds = %for.inc, %entry %0 = load ptr, ptr %theEntry, align 8 - %num = getelementptr inbounds %struct.TableEntry, ptr %0, i32 0, i32 0 + %num = getelementptr inbounds nuw %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 + %p1 = getelementptr inbounds nuw %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 @@ -262,7 +245,7 @@ for.body: ; preds = %for.cond for.inc: ; preds = %for.body %7 = load ptr, ptr %theEntry, align 8 - %incdec.ptr = getelementptr inbounds %struct.TableEntry, ptr %7, i32 1 + %incdec.ptr = getelementptr inbounds nuw %struct.TableEntry, ptr %7, i32 1 store ptr %incdec.ptr, ptr %theEntry, align 8 br label %for.cond, !llvm.loop !6 @@ -271,15 +254,15 @@ for.end: ; preds = %for.cond } ; 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr noundef %p) unnamed_addr #0 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 + %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.5) + %data = getelementptr inbounds nuw %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) @@ -294,23 +277,19 @@ declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIc 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" { +define internal void @_GLOBAL__sub_I_global_obj_in_array.cpp() #3 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" } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { 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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -320,6 +299,6 @@ attributes #7 = { mustprogress noinline norecurse optnone uwtable "frame-pointer !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index c656820af..fc0ac49a8 100644 --- a/test_cases_bc/basic_cpp_tests/list-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/list-1.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/list-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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" } @@ -33,12 +33,8 @@ $_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 @@ -53,8 +49,6 @@ $_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 @@ -63,15 +57,9 @@ $_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 +$_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS4_m = comdat any -$_ZNSaISt10_List_nodeIPK1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEED2Ev = comdat any +$_ZNSt15__new_allocatorISt10_List_nodeIPK1AEED2Ev = comdat any $_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_ = comdat any @@ -85,19 +73,11 @@ $_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 +$_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv = comdat any $_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE = comdat any @@ -109,19 +89,19 @@ $_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -275,18 +255,18 @@ entry: 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 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 + %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %alist) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + 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) #9 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt20_List_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #9 %0 = load ptr, ptr %call2, align 8 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 @@ -299,7 +279,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #9 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -310,7 +290,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -321,23 +301,23 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -350,11 +330,11 @@ entry: 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 + %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"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 @@ -369,27 +349,27 @@ 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 - %_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 + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 + %_M_next = getelementptr inbounds nuw %"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 + call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #9 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_List_const_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"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 @@ -401,7 +381,7 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 @@ -413,69 +393,55 @@ 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 + call void @__clang_call_terminate(ptr %2) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + %_M_node = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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) #9 ret void } @@ -485,11 +451,11 @@ 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 + %_M_prev = getelementptr inbounds nuw %"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 + %_M_next = getelementptr inbounds nuw %"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 + %_M_size = getelementptr inbounds nuw %"struct.std::__detail::_List_node_header", ptr %this1, i32 0, i32 1 store i64 0, ptr %_M_size, align 8 ret void } @@ -508,38 +474,42 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %_M_impl = getelementptr inbounds nuw %"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) #9 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.i = alloca ptr, align 8 + %__p.addr.i6 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 + %_M_next = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -547,7 +517,7 @@ 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 + %_M_next4 = getelementptr inbounds nuw %"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 @@ -556,31 +526,41 @@ while.body: ; preds = %while.cond 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 + %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) #9 %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 + store ptr %call5, ptr %__a.addr.i, align 8 + store ptr %6, ptr %__p.addr.i, align 8 + %7 = load ptr, ptr %__a.addr.i, align 8 + %8 = load ptr, ptr %__p.addr.i, align 8 + store ptr %7, ptr %this.addr.i, align 8 + store ptr %8, ptr %__p.addr.i6, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %9 = load ptr, ptr %__p.addr.i6, align 8 + %10 = 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 %10) #9 br label %while.cond, !llvm.loop !6 while.end: ; preds = %while.cond ret void terminate.lpad: ; preds = %while.body - %8 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } catch ptr null - %9 = extractvalue { ptr, i32 } %8, 0 - call void @__clang_call_terminate(ptr %9) #11 + %12 = extractvalue { ptr, i32 } %11, 0 + call void @__clang_call_terminate(ptr %12) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void } @@ -590,15 +570,15 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #9 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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -606,50 +586,46 @@ 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 + %_M_impl = getelementptr inbounds nuw %"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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #11 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #10 unreachable } @@ -659,7 +635,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret ptr %call } @@ -669,68 +645,32 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #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 + store i64 %__n, ptr %__n.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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 24 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #11 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -745,7 +685,7 @@ entry: %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 + %coerce.dive = getelementptr inbounds nuw %"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 @@ -754,9 +694,9 @@ entry: %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 + %_M_node = getelementptr inbounds nuw %"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 @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef %2) #9 call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1) ret void } @@ -768,10 +708,10 @@ 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 - %_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 + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -779,6 +719,12 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i5 = alloca ptr, align 8 + %__args.addr.i6 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__p = alloca ptr, align 8 @@ -789,24 +735,37 @@ entry: %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 + %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) #9 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 + 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) #9 %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 + store ptr %2, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + store ptr %4, ptr %__args.addr.i, align 8 + %5 = load ptr, ptr %__a.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i, align 8 + %7 = load ptr, ptr %__args.addr.i, align 8 + store ptr %5, ptr %this.addr.i, align 8 + store ptr %6, ptr %__p.addr.i5, align 8 + store ptr %7, ptr %__args.addr.i6, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %8 = load ptr, ptr %__p.addr.i5, align 8 + %9 = load ptr, ptr %__args.addr.i6, align 8 + %10 = load ptr, ptr %9, align 8 + store ptr %10, ptr %8, align 8 + %call4 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 8 dereferenceable(16) %__guard, ptr null) #9 + %11 = load ptr, ptr %__p, align 8 + call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__guard) #9 + ret ptr %11 } ; Function Attrs: nounwind -declare void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #7 +declare void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #6 ; 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 { @@ -817,9 +776,9 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 + %_M_size = getelementptr inbounds nuw %"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 @@ -829,16 +788,22 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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 - %call = call noundef ptr @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef 1) - ret ptr %call + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__a.addr = alloca ptr, align 8 @@ -847,31 +812,15 @@ entry: 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 + %_M_alloc = getelementptr inbounds nuw %"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 + %_M_ptr = getelementptr inbounds nuw %"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: @@ -880,29 +829,38 @@ entry: 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 + %_M_ptr = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 + %_M_ptr = getelementptr inbounds nuw %"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 + %_M_alloc = getelementptr inbounds nuw %"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 + %_M_ptr2 = getelementptr inbounds nuw %"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 + store ptr %1, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) + br label %invoke.cont invoke.cont: ; preds = %if.then br label %if.end @@ -910,30 +868,18 @@ invoke.cont: ; preds = %if.then if.end: ; preds = %invoke.cont, %entry ret void -terminate.lpad: ; preds = %if.then - %3 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %6 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #11 + %7 = extractvalue { ptr, i32 } %6, 0 + call void @__clang_call_terminate(ptr %7) #10 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -942,62 +888,49 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 384307168202282325 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 768614336404564650 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #12 + unreachable + +if.end: ; preds = %if.then 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 24 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #13 + ret ptr %call5 } -; 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 @_ZSt28__throw_bad_array_new_lengthv() #7 ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #8 +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #9 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 ; 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 { +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 #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 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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 @@ -1009,8 +942,8 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #9 ret ptr %call } @@ -1020,7 +953,7 @@ 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 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret ptr %call } @@ -1030,24 +963,24 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 #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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { builtin nounwind } attributes #12 = { noreturn } -attributes #13 = { allocsize(0) } +attributes #13 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1057,6 +990,6 @@ attributes #13 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index b01c46ea4..6df3a151b 100644 --- a/test_cases_bc/basic_cpp_tests/list-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/list-2.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/list-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-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" } @@ -28,12 +28,8 @@ $_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 @@ -48,8 +44,6 @@ $_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 @@ -58,15 +52,9 @@ $_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 +$_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS4_m = comdat any -$_ZNSaISt10_List_nodeIPK1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEED2Ev = comdat any +$_ZNSt15__new_allocatorISt10_List_nodeIPK1AEED2Ev = comdat any $_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_ = comdat any @@ -80,19 +68,11 @@ $_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 +$_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv = comdat any $_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE = comdat any @@ -102,19 +82,19 @@ $_ZNKSt14_List_iteratorIPK1AEdeEv = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -266,14 +246,14 @@ entry: 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 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %alist) #9 %0 = load ptr, ptr %call, align 8 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 @@ -286,7 +266,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #9 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -297,7 +277,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -308,23 +288,23 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -337,11 +317,11 @@ entry: 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 + %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"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 @@ -356,72 +336,58 @@ entry: %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 + %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + %_M_node = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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) #9 ret void } @@ -431,11 +397,11 @@ 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 + %_M_prev = getelementptr inbounds nuw %"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 + %_M_next = getelementptr inbounds nuw %"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 + %_M_size = getelementptr inbounds nuw %"struct.std::__detail::_List_node_header", ptr %this1, i32 0, i32 1 store i64 0, ptr %_M_size, align 8 ret void } @@ -454,38 +420,42 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %_M_impl = getelementptr inbounds nuw %"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) #9 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.i = alloca ptr, align 8 + %__p.addr.i6 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 + %_M_next = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -493,7 +463,7 @@ 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 + %_M_next4 = getelementptr inbounds nuw %"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 @@ -502,31 +472,41 @@ while.body: ; preds = %while.cond 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 + %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) #9 %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 + store ptr %call5, ptr %__a.addr.i, align 8 + store ptr %6, ptr %__p.addr.i, align 8 + %7 = load ptr, ptr %__a.addr.i, align 8 + %8 = load ptr, ptr %__p.addr.i, align 8 + store ptr %7, ptr %this.addr.i, align 8 + store ptr %8, ptr %__p.addr.i6, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %9 = load ptr, ptr %__p.addr.i6, align 8 + %10 = 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 %10) #9 br label %while.cond, !llvm.loop !6 while.end: ; preds = %while.cond ret void terminate.lpad: ; preds = %while.body - %8 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } catch ptr null - %9 = extractvalue { ptr, i32 } %8, 0 - call void @__clang_call_terminate(ptr %9) #11 + %12 = extractvalue { ptr, i32 } %11, 0 + call void @__clang_call_terminate(ptr %12) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 ret void } @@ -536,15 +516,15 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #9 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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -552,50 +532,46 @@ 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 + %_M_impl = getelementptr inbounds nuw %"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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #11 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #10 unreachable } @@ -605,7 +581,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #9 ret ptr %call } @@ -615,68 +591,32 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #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 + store i64 %__n, ptr %__n.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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 24 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #11 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -691,7 +631,7 @@ entry: %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 + %coerce.dive = getelementptr inbounds nuw %"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 @@ -700,9 +640,9 @@ entry: %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 + %_M_node = getelementptr inbounds nuw %"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 @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef %2) #9 call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1) ret void } @@ -714,10 +654,10 @@ 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 - %_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 + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -725,6 +665,12 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i5 = alloca ptr, align 8 + %__args.addr.i6 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__p = alloca ptr, align 8 @@ -735,24 +681,37 @@ entry: %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 + %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) #9 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 + 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) #9 %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 + store ptr %2, ptr %__a.addr.i, align 8 + store ptr %call3, ptr %__p.addr.i, align 8 + store ptr %4, ptr %__args.addr.i, align 8 + %5 = load ptr, ptr %__a.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i, align 8 + %7 = load ptr, ptr %__args.addr.i, align 8 + store ptr %5, ptr %this.addr.i, align 8 + store ptr %6, ptr %__p.addr.i5, align 8 + store ptr %7, ptr %__args.addr.i6, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %8 = load ptr, ptr %__p.addr.i5, align 8 + %9 = load ptr, ptr %__args.addr.i6, align 8 + %10 = load ptr, ptr %9, align 8 + store ptr %10, ptr %8, align 8 + %call4 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 8 dereferenceable(16) %__guard, ptr null) #9 + %11 = load ptr, ptr %__p, align 8 + call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__guard) #9 + ret ptr %11 } ; Function Attrs: nounwind -declare void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #7 +declare void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #6 ; 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 { @@ -763,9 +722,9 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 + %_M_size = getelementptr inbounds nuw %"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 @@ -775,16 +734,22 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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 - %call = call noundef ptr @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef 1) - ret ptr %call + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__a.addr = alloca ptr, align 8 @@ -793,31 +758,15 @@ entry: 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 + %_M_alloc = getelementptr inbounds nuw %"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 + %_M_ptr = getelementptr inbounds nuw %"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: @@ -826,29 +775,38 @@ entry: 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 + %_M_ptr = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 + %_M_ptr = getelementptr inbounds nuw %"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 + %_M_alloc = getelementptr inbounds nuw %"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 + %_M_ptr2 = getelementptr inbounds nuw %"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 + store ptr %1, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) + br label %invoke.cont invoke.cont: ; preds = %if.then br label %if.end @@ -856,30 +814,18 @@ invoke.cont: ; preds = %if.then if.end: ; preds = %invoke.cont, %entry ret void -terminate.lpad: ; preds = %if.then - %3 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %6 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #11 + %7 = extractvalue { ptr, i32 } %6, 0 + call void @__clang_call_terminate(ptr %7) #10 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -888,62 +834,49 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 384307168202282325 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 768614336404564650 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #12 + unreachable + +if.end: ; preds = %if.then 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 24 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #13 + ret ptr %call5 } -; 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 @_ZSt28__throw_bad_array_new_lengthv() #7 ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #8 +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #9 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 ; 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 { +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 #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 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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 @@ -956,12 +889,12 @@ 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 - %_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 + %_M_impl = getelementptr inbounds nuw %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 + %_M_next = getelementptr inbounds nuw %"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 + call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #9 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 %1 = load ptr, ptr %coerce.dive, align 8 ret ptr %1 } @@ -972,26 +905,26 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 #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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { builtin nounwind } attributes #12 = { noreturn } -attributes #13 = { allocsize(0) } +attributes #13 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1001,6 +934,6 @@ attributes #13 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index ddbc19a6d..5083b328e 100644 --- a/test_cases_bc/basic_cpp_tests/map-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/map-1.cpp.bc @@ -1,14 +1,13 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/map-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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, std::_Select1st>, std::less>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" } %"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 } @@ -17,10 +16,12 @@ target triple = "x86_64-unknown-linux-gnu" %"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::less" = type { i8 } %"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 } +%"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node" = type { ptr, ptr } +%"struct.std::pair.4" = type { ptr, ptr } $_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEEC2Ev = comdat any @@ -28,7 +29,7 @@ $_ZN1AC2Ev = comdat any $_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE6insertIS3_IiS0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_ = comdat any -$_ZNSt4pairIi1AEC2IiRS0_Lb1EEEOT_OT0_ = comdat any +$_ZNSt4pairIi1AEC2IiRS0_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_ = comdat any $_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv = comdat any @@ -42,14 +43,10 @@ $_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EEC2Ev = comdat $_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 @@ -76,100 +73,123 @@ $_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE15_M_destroy_ $_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 +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE10deallocateEPS5_m = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE10deallocateEPS6_m = comdat any +$_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE9_M_mbeginEv = comdat any -$_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev = comdat any +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev = comdat any +$_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE11lower_boundERS4_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_emplace_uniqueIJS0_IiS2_EEEES0_ISt17_Rb_tree_iteratorIS3_EbEDpOT_ = comdat any +$_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_create_nodeIJS0_IiS2_EEEEPSt13_Rb_tree_nodeIS3_EDpOT_ = comdat any +$_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE3endEv = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE24_M_get_insert_unique_posERS1_ = comdat any +$_ZNKSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE8key_compEv = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E = comdat any +$_ZNKSt4lessIiEclERKiS2_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSB_PSt13_Rb_tree_nodeIS3_E = comdat any +$_ZNKSt17_Rb_tree_iteratorISt4pairIKi1AEEdeEv = comdat any + +$_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE12emplace_hintIJS3_IiS0_EEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_ = comdat any -$_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IS4_bLb1EEEOT_OT0_ = comdat any +$_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IRS4_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS9_SA_EEEbE4typeELb1EEEOS9_OSA_ = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11lower_boundERS1_ = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS3_EPSt18_Rb_tree_node_baseRS1_ = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E = comdat any $_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv = comdat any +$_ZNKSt10_Select1stISt4pairIKi1AEEclERKS3_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_construct_nodeIJS0_IiS2_EEEEvPSt13_Rb_tree_nodeIS3_EDpOT_ = comdat any +$_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv = comdat any -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE8allocateERS6_m = comdat any +$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE8allocateEmPKv = comdat any +$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv = comdat any -$_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE11_M_max_sizeEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE3endEv = comdat any -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE9constructIS4_JS1_IiS3_EEEEvRS6_PT_DpOT0_ = comdat any +$_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8key_compEv = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE9constructIS5_JS2_IiS4_EEEEvPT_DpOT0_ = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE22_M_emplace_hint_uniqueIJS0_IiS2_EEEESt17_Rb_tree_iteratorIS3_ESt23_Rb_tree_const_iteratorIS3_EDpOT_ = comdat any -$_ZNSt4pairIKi1AEC2IiS1_Lb1EEEOS_IT_T0_E = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_nodeC2IJS0_IiS2_EEEERS9_DpOT_ = comdat any -$_ZN1AC2EOS_ = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS3_ERS1_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv = comdat any +$_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_node6_M_keyEv = comdat any -$_ZNKSt4lessIiEclERKiS2_ = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_node9_M_insertES0_IPSt18_Rb_tree_node_baseSC_E = comdat any -$_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_ = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_nodeD2Ev = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE5beginEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_create_nodeIJS0_IiS2_EEEEPSt13_Rb_tree_nodeIS3_EDpOT_ = comdat any -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKi1AEERS1_Lb1EEEOT_OT0_ = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv = comdat any -$_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_construct_nodeIJS0_IiS2_EEEEvPSt13_Rb_tree_nodeIS3_EDpOT_ = comdat any + +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE8allocateEmPKv = comdat any + +$_ZNSt4pairIKi1AEC2IiS1_TnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS5_S6_EEclsr6_PCCFPIS5_S6_EE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS_IS5_S6_E = comdat any + +$_ZN1AC2EOS_ = comdat any + +$_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEE13_M_const_castEv = comdat any + +$_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE4sizeEv = 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 +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_rightmostEv = comdat any -$_ZNKSt10_Select1stISt4pairIKi1AEEclERKS3_ = comdat any +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_ = comdat any -$_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE24_M_get_insert_unique_posERS1_ = comdat any -$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_leftmostEv = comdat any -$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv = comdat any +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_ = comdat any -$_ZTV1A = comdat any +$_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv = comdat any -$_ZTS1A = comdat any +$_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEppEv = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE5beginEv = comdat any + +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKi1AEERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISD_SE_EEEbE4typeELb1EEEOSD_OSE_ = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSB_PSt13_Rb_tree_nodeIS3_E = comdat any + +$_ZTV1A = comdat any $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -304,24 +324,8 @@ entry: 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 { +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 @@ -341,10 +345,10 @@ entry: 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 + call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 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) + invoke void @_ZNSt4pairIi1AEC2IiRS0_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_(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 @@ -352,18 +356,18 @@ invoke.cont: ; preds = %entry to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 + %0 = getelementptr inbounds nuw { 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 + %2 = getelementptr inbounds nuw { 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 + %call4 = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %amap) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + 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) #11 + %call5 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #11 + %second = getelementptr inbounds nuw %"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 @@ -375,7 +379,7 @@ invoke.cont2: ; preds = %invoke.cont 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 + call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #11 %7 = load i32, ptr %retval, align 4 ret i32 %7 @@ -386,7 +390,7 @@ lpad: ; preds = %invoke.cont2, %invo 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 + call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -397,24 +401,24 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #2 comdat align 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 + %_M_t = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -424,24 +428,68 @@ entry: %retval = alloca %"struct.std::pair", align 8 %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 + %__k = alloca ptr, align 8 + %__i = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp5 = alloca %"struct.std::less", align 1 + %undef.agg.tmp = alloca %"struct.std::less", align 1 + %ref.tmp9 = alloca %"struct.std::_Rb_tree_iterator", align 8 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %ref.tmp13 = alloca i8, align 1 + %ref.tmp14 = alloca i8, align 1 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 + %first = getelementptr inbounds nuw %"struct.std::pair.0", ptr %0, i32 0, i32 0 + store ptr %first, ptr %__k, align 8 + %1 = load ptr, ptr %__k, align 8 + %call = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE11lower_boundERS4_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 4 dereferenceable(4) %1) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__i, i32 0, i32 0 + store ptr %call, ptr %coerce.dive, align 8 + %call2 = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 + store ptr %call2, ptr %coerce.dive3, align 8 + %call4 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_(ptr noundef nonnull align 8 dereferenceable(8) %__i, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #11 + br i1 %call4, label %lor.end, label %lor.rhs + +lor.rhs: ; preds = %entry + call void @_ZNKSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE8key_compEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) + %2 = load ptr, ptr %__k, align 8 + %call6 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKi1AEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %__i) #11 + %first7 = getelementptr inbounds nuw %"struct.std::pair.2", ptr %call6, i32 0, i32 0 + %call8 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp5, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %first7) + br label %lor.end + +lor.end: ; preds = %lor.rhs, %entry + %3 = phi i1 [ true, %entry ], [ %call8, %lor.rhs ] + br i1 %3, label %if.then, label %if.end + +if.then: ; preds = %lor.end + call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKi1AEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(8) %__i) #11 + %4 = load ptr, ptr %__x.addr, align 8 + %coerce.dive10 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %agg.tmp, i32 0, i32 0 + %5 = load ptr, ptr %coerce.dive10, align 8 + %call11 = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE12emplace_hintIJS3_IiS0_EEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr %5, ptr noundef nonnull align 8 dereferenceable(16) %4) + %coerce.dive12 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %ref.tmp9, i32 0, i32 0 + store ptr %call11, ptr %coerce.dive12, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %__i, ptr align 8 %ref.tmp9, i64 8, i1 false) + store i8 1, ptr %ref.tmp13, align 1 + call void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IRS4_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS9_SA_EEEbE4typeELb1EEEOS9_OSA_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp13) + br label %return + +if.end: ; preds = %lor.end + store i8 0, ptr %ref.tmp14, align 1 + call void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IRS4_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS9_SA_EEEbE4typeELb1EEEOS9_OSA_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp14) + br label %return + +return: ; preds = %if.end, %if.then + %6 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %6 } -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIi1AEC2IiRS0_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS5_OS6_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -450,13 +498,13 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %second, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 ret void } @@ -469,26 +517,26 @@ 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 = 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 + %_M_t = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"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 @@ -500,76 +548,70 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #2 comdat align 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 + %_M_t = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 %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 + call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) unnamed_addr #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_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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_color = getelementptr inbounds nuw %"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 @@ -581,45 +623,36 @@ 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 + call void @__clang_call_terminate(ptr %1) #12 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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_parent = getelementptr inbounds nuw %"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 + %_M_header2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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 + %_M_header4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header5 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_right = getelementptr inbounds nuw %"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 + %_M_node_count = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -641,38 +674,38 @@ entry: 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 { +; Function Attrs: mustprogress 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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +; Function Attrs: mustprogress 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 #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 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 + %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 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 + %_M_impl = getelementptr inbounds nuw %"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) #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) #15 + call void @__clang_call_terminate(ptr %1) #12 unreachable } @@ -694,13 +727,13 @@ while.cond: ; preds = %while.body, %entry 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 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %1) #11 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 + %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %2) #11 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 + 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) #11 %4 = load ptr, ptr %__y, align 8 store ptr %4, ptr %__x.addr, align 8 br label %while.cond, !llvm.loop !6 @@ -715,21 +748,20 @@ 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 + %call = call noundef ptr @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE9_M_mbeginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + ret ptr %call } -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 ret void } @@ -739,7 +771,7 @@ 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 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 %1 = load ptr, ptr %_M_right, align 8 ret ptr %1 } @@ -750,7 +782,7 @@ 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 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 %1 = load ptr, ptr %_M_left, align 8 ret ptr %1 } @@ -764,82 +796,89 @@ entry: 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 + 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) #11 %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 + 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) #11 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.i = alloca ptr, align 8 + %__p.addr.i3 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call2, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + store ptr %2, ptr %__p.addr.i3, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i3, align 8 + %4 = load ptr, ptr %__p.addr, align 8 ret void terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #12 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #12 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } @@ -849,30 +888,18 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #11 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #11 ret ptr %call } @@ -882,56 +909,46 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 48 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE9_M_mbeginEv(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 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_parent = getelementptr inbounds nuw %"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 @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -940,256 +957,233 @@ entry: } ; 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 { +define linkonce_odr dso_local ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE11lower_boundERS4_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::_Rb_tree_iterator", 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 + %__x.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 + store ptr %__x, ptr %__x.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 + %_M_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %__x.addr, align 8 + %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11lower_boundERS1_(ptr noundef nonnull align 8 dereferenceable(48) %_M_t, ptr noundef nonnull align 4 dereferenceable(4) %0) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive, align 8 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 8 + ret ptr %1 +} -unreachable: ; preds = %catch - unreachable +; 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 nuw %"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 nuw %"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 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE3endEv(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 - %__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 + %_M_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive, align 8 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %0 = load ptr, ptr %coerce.dive2, align 8 + ret ptr %0 } ; 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 { +define linkonce_odr dso_local void @_ZNKSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE8key_compEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #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 + %undef.agg.tmp = alloca %"struct.std::less", align 1 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + call void @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8key_compEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) + ret void +} + +; 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 nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKi1AEEdeEv(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 nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 8 + %call = call noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) + ret ptr %call +} + +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE12emplace_hintIJS3_IiS0_EEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %this.addr = alloca ptr, align 8 + %__args.addr = alloca ptr, align 8 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %agg.tmp, ptr align 8 %__pos, i64 8, i1 false) + %0 = load ptr, ptr %__args.addr, align 8 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %agg.tmp, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 8 + %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE22_M_emplace_hint_uniqueIJS0_IiS2_EEEESt17_Rb_tree_iteratorIS3_ESt23_Rb_tree_const_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %_M_t, ptr %1, ptr noundef nonnull align 8 dereferenceable(16) %0) + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive3, align 8 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %2 = load ptr, ptr %coerce.dive4, align 8 + ret ptr %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) #6 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IRS4_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS9_SA_EEEbE4typeELb1EEEOS9_OSA_(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 #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 + %first = getelementptr inbounds nuw %"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 nuw %"struct.std::pair", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %__y.addr, align 8 + %2 = load i8, ptr %1, align 1 + %loadedv = trunc i8 %2 to i1 + %storedv = zext i1 %loadedv to i8 + store i8 %storedv, ptr %second, align 8 + ret void +} + +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11lower_boundERS1_(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::_Rb_tree_iterator", align 8 + %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 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 + %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %0 = load ptr, ptr %__k.addr, align 8 + %call3 = call ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS3_EPSt18_Rb_tree_node_baseRS1_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call, ptr noundef %call2, ptr noundef nonnull align 4 dereferenceable(4) %0) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call3, ptr %coerce.dive, align 8 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive4, align 8 + ret ptr %1 +} + +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS3_EPSt18_Rb_tree_node_baseRS1_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__y, ptr noundef nonnull align 4 dereferenceable(4) %__k) #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 + %__y.addr = alloca ptr, align 8 + %__k.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 + store ptr %__k, ptr %__k.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 br label %while.cond -while.cond: ; preds = %cond.end, %entry - %0 = load ptr, ptr %__x, align 8 +while.cond: ; preds = %if.end, %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, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %1 = 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 %1) %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 + %call2 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef nonnull align 4 dereferenceable(4) %call, ptr noundef nonnull align 4 dereferenceable(4) %2) + br i1 %call2, label %if.else, label %if.then -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 +if.then: ; preds = %while.body + %3 = load ptr, ptr %__x.addr, align 8 + store ptr %3, ptr %__y.addr, align 8 + %4 = load ptr, ptr %__x.addr, align 8 + %call3 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %4) #11 + store ptr %call3, ptr %__x.addr, align 8 + br label %if.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 +if.else: ; preds = %while.body + %5 = load ptr, ptr %__x.addr, align 8 + %call4 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %5) #11 + store ptr %call4, ptr %__x.addr, align 8 + br label %if.end -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call5, %cond.true ], [ %call6, %cond.false ] - store ptr %cond, ptr %__x, align 8 +if.end: ; preds = %if.else, %if.then 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 + %6 = load ptr, ptr %__y.addr, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %6) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %7 = load ptr, ptr %coerce.dive, align 8 + ret ptr %7 +} -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 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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + ret ptr %_M_header } ; Function Attrs: mustprogress noinline optnone uwtable @@ -1204,122 +1198,508 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 %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 + store ptr %0, ptr %_M_node, align 8 + ret void } -; 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 { +; 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 - %__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 + %first = getelementptr inbounds nuw %"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 nuw %"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) #11 + 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) #11 + 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 nuw %"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 ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE3endEv(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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_header) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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 @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8key_compEv(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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE22_M_emplace_hint_uniqueIJS0_IiS2_EEEESt17_Rb_tree_iteratorIS3_ESt23_Rb_tree_const_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 + %__args.addr = alloca ptr, align 8 + %__z = alloca %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", align 8 + %__res = alloca %"struct.std::pair.4", align 8 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %exn.slot = alloca ptr, align 8 + %ehselector.slot = alloca i32, align 4 + %agg.tmp5 = alloca %"struct.std::pair.4", align 8 + %cleanup.dest.slot = alloca i32, align 4 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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 %__x, ptr %__x.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::_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 + %0 = load ptr, ptr %__args.addr, align 8 + call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_nodeC2IJS0_IiS2_EEEERS9_DpOT_(ptr noundef nonnull align 8 dereferenceable(16) %__z, ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 8 dereferenceable(16) %0) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %agg.tmp, ptr align 8 %__pos, i64 8, i1 false) + %call = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_node6_M_keyEv(ptr noundef nonnull align 8 dereferenceable(16) %__z) + to label %invoke.cont unwind label %lpad + +invoke.cont: ; preds = %entry + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %agg.tmp, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 8 + %call4 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS3_ERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr %1, ptr noundef nonnull align 4 dereferenceable(4) %call) + to label %invoke.cont3 unwind label %lpad + +invoke.cont3: ; preds = %invoke.cont + %2 = getelementptr inbounds nuw { ptr, ptr }, ptr %__res, i32 0, i32 0 + %3 = extractvalue { ptr, ptr } %call4, 0 + store ptr %3, ptr %2, align 8 + %4 = getelementptr inbounds nuw { ptr, ptr }, ptr %__res, i32 0, i32 1 + %5 = extractvalue { ptr, ptr } %call4, 1 + store ptr %5, ptr %4, align 8 + %second = getelementptr inbounds nuw %"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 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %agg.tmp5, ptr align 8 %__res, i64 16, i1 false) + %7 = getelementptr inbounds nuw { ptr, ptr }, ptr %agg.tmp5, i32 0, i32 0 + %8 = load ptr, ptr %7, align 8 + %9 = getelementptr inbounds nuw { ptr, ptr }, ptr %agg.tmp5, i32 0, i32 1 + %10 = load ptr, ptr %9, align 8 + %call7 = invoke ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_node9_M_insertES0_IPSt18_Rb_tree_node_baseSC_E(ptr noundef nonnull align 8 dereferenceable(16) %__z, ptr %8, ptr %10) + to label %invoke.cont6 unwind label %lpad + +invoke.cont6: ; preds = %if.then + %coerce.dive8 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call7, ptr %coerce.dive8, align 8 + store i32 1, ptr %cleanup.dest.slot, align 4 + br label %cleanup + +lpad: ; preds = %if.then, %invoke.cont, %entry + %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 + call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__z) #11 + br label %eh.resume + +if.end: ; preds = %invoke.cont3 + %first = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__res, i32 0, i32 0 + %14 = load ptr, ptr %first, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %14) #11 + store i32 1, ptr %cleanup.dest.slot, align 4 + br label %cleanup + +cleanup: ; preds = %if.end, %invoke.cont6 + call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__z) #11 + %coerce.dive9 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %15 = load ptr, ptr %coerce.dive9, align 8 + ret ptr %15 + +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.val10 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 + resume { ptr, i32 } %lpad.val10 +} + +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_nodeC2IJS0_IiS2_EEEERS9_DpOT_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(48) %__t, ptr noundef nonnull align 8 dereferenceable(16) %__args) unnamed_addr #0 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + %__t.addr = alloca ptr, align 8 + %__args.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + store ptr %__t, ptr %__t.addr, align 8 + store ptr %__args, ptr %__args.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_t = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %__t.addr, align 8 + store ptr %0, ptr %_M_t, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %__t.addr, align 8 + %2 = 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) %1, ptr noundef nonnull align 8 dereferenceable(16) %2) + store ptr %call, ptr %_M_node, align 8 ret void } -declare void @__cxa_rethrow() +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS3_ERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr %__position.coerce, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::pair.4", align 8 + %__position = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %this.addr = alloca ptr, align 8 + %__k.addr = alloca ptr, align 8 + %__pos = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp = alloca ptr, align 8 + %__before = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp35 = alloca ptr, align 8 + %__after = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp52 = alloca ptr, align 8 + %ref.tmp65 = alloca ptr, align 8 + %ref.tmp74 = alloca ptr, align 8 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_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 %__k, ptr %__k.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %call = call ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEE13_M_const_castEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #11 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + store ptr %call, ptr %coerce.dive2, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 8 + %call3 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %cmp = icmp eq ptr %0, %call3 + br i1 %cmp, label %if.then, label %if.else12 -declare void @__cxa_end_catch() +if.then: ; preds = %entry + %call4 = call noundef i64 @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %cmp5 = icmp ugt i64 %call4, 0 + br i1 %cmp5, label %land.lhs.true, label %if.else + +land.lhs.true: ; preds = %if.then + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %call6 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_rightmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %1 = load ptr, ptr %call6, align 8 + %call7 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %1) + %2 = load ptr, ptr %__k.addr, align 8 + %call8 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef nonnull align 4 dereferenceable(4) %call7, ptr noundef nonnull align 4 dereferenceable(4) %2) + br i1 %call8, label %if.then9, label %if.else + +if.then9: ; preds = %land.lhs.true + store ptr null, ptr %ref.tmp, align 8 + %call10 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_rightmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %call10) + br label %return + +if.else: ; preds = %land.lhs.true, %if.then + %3 = load ptr, ptr %__k.addr, align 8 + %call11 = call { 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) %3) + %4 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 0 + %5 = extractvalue { ptr, ptr } %call11, 0 + store ptr %5, ptr %4, align 8 + %6 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %7 = extractvalue { ptr, ptr } %call11, 1 + store ptr %7, ptr %6, align 8 + br label %return + +if.else12: ; preds = %entry + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %8 = load ptr, ptr %__k.addr, align 8 + %_M_node14 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %9 = load ptr, ptr %_M_node14, 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) + %call16 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl13, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %call15) + br i1 %call16, label %if.then17, label %if.else42 + +if.then17: ; preds = %if.else12 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %__before, ptr align 8 %__pos, i64 8, i1 false) + %_M_node18 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %10 = load ptr, ptr %_M_node18, align 8 + %call19 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_leftmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %11 = load ptr, ptr %call19, align 8 + %cmp20 = icmp eq ptr %10, %11 + br i1 %cmp20, label %if.then21, label %if.else24 + +if.then21: ; preds = %if.then17 + %call22 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_leftmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %call23 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_leftmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %call22, ptr noundef nonnull align 8 dereferenceable(8) %call23) + br label %return + +if.else24: ; preds = %if.then17 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %call26 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__before) #11 + %_M_node27 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %call26, i32 0, i32 0 + %12 = load ptr, ptr %_M_node27, align 8 + %call28 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %12) + %13 = load ptr, ptr %__k.addr, align 8 + %call29 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl25, ptr noundef nonnull align 4 dereferenceable(4) %call28, ptr noundef nonnull align 4 dereferenceable(4) %13) + br i1 %call29, label %if.then30, label %if.else40 + +if.then30: ; preds = %if.else24 + %_M_node31 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__before, i32 0, i32 0 + %14 = load ptr, ptr %_M_node31, align 8 + %call32 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %14) #11 + %cmp33 = icmp eq ptr %call32, null + br i1 %cmp33, label %if.then34, label %if.else37 + +if.then34: ; preds = %if.then30 + store ptr null, ptr %ref.tmp35, align 8 + %_M_node36 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__before, i32 0, i32 0 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp35, ptr noundef nonnull align 8 dereferenceable(8) %_M_node36) + br label %return + +if.else37: ; preds = %if.then30 + %_M_node38 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %_M_node39 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node38, ptr noundef nonnull align 8 dereferenceable(8) %_M_node39) + br label %return + +if.else40: ; preds = %if.else24 + %15 = load ptr, ptr %__k.addr, align 8 + %call41 = call { 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) %15) + %16 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 0 + %17 = extractvalue { ptr, ptr } %call41, 0 + store ptr %17, ptr %16, align 8 + %18 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %19 = extractvalue { ptr, ptr } %call41, 1 + store ptr %19, ptr %18, align 8 + br label %return + +if.else42: ; preds = %if.else12 + %_M_impl43 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %_M_node44 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %20 = load ptr, ptr %_M_node44, align 8 + %call45 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %20) + %21 = load ptr, ptr %__k.addr, align 8 + %call46 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl43, ptr noundef nonnull align 4 dereferenceable(4) %call45, ptr noundef nonnull align 4 dereferenceable(4) %21) + br i1 %call46, label %if.then47, label %if.else72 + +if.then47: ; preds = %if.else42 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %__after, ptr align 8 %__pos, i64 8, i1 false) + %_M_node48 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %22 = load ptr, ptr %_M_node48, align 8 + %call49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_rightmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %23 = load ptr, ptr %call49, align 8 + %cmp50 = icmp eq ptr %22, %23 + br i1 %cmp50, label %if.then51, label %if.else54 + +if.then51: ; preds = %if.then47 + store ptr null, ptr %ref.tmp52, align 8 + %call53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_rightmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp52, ptr noundef nonnull align 8 dereferenceable(8) %call53) + br label %return -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #10 +if.else54: ; preds = %if.then47 + %_M_impl55 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %24 = load ptr, ptr %__k.addr, align 8 + %call56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %__after) #11 + %_M_node57 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %call56, i32 0, i32 0 + %25 = load ptr, ptr %_M_node57, align 8 + %call58 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %25) + %call59 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl55, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(4) %call58) + br i1 %call59, label %if.then60, label %if.else70 + +if.then60: ; preds = %if.else54 + %_M_node61 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %26 = load ptr, ptr %_M_node61, align 8 + %call62 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %26) #11 + %cmp63 = icmp eq ptr %call62, null + br i1 %cmp63, label %if.then64, label %if.else67 + +if.then64: ; preds = %if.then60 + store ptr null, ptr %ref.tmp65, align 8 + %_M_node66 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp65, ptr noundef nonnull align 8 dereferenceable(8) %_M_node66) + br label %return + +if.else67: ; preds = %if.then60 + %_M_node68 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__after, i32 0, i32 0 + %_M_node69 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__after, i32 0, i32 0 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node68, ptr noundef nonnull align 8 dereferenceable(8) %_M_node69) + br label %return + +if.else70: ; preds = %if.else54 + %27 = load ptr, ptr %__k.addr, align 8 + %call71 = call { 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) %27) + %28 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 0 + %29 = extractvalue { ptr, ptr } %call71, 0 + store ptr %29, ptr %28, align 8 + %30 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %31 = extractvalue { ptr, ptr } %call71, 1 + store ptr %31, ptr %30, align 8 + br label %return + +if.else72: ; preds = %if.else42 + %_M_node73 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + store ptr null, ptr %ref.tmp74, align 8 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node73, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp74) + br label %return + +return: ; preds = %if.else72, %if.else70, %if.else67, %if.then64, %if.then51, %if.else40, %if.else37, %if.then34, %if.then21, %if.else, %if.then9 + %32 = load { ptr, ptr }, ptr %retval, align 8 + ret { ptr, ptr } %32 +} + +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_node6_M_keyEv(ptr noundef nonnull align 8 dereferenceable(16) %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_node = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + %0 = load ptr, ptr %_M_node, 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: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_node9_M_insertES0_IPSt18_Rb_tree_node_baseSC_E(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr %__p.coerce0, ptr %__p.coerce1) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %__p = alloca %"struct.std::pair.4", align 8 + %this.addr = alloca ptr, align 8 + %0 = getelementptr inbounds nuw { ptr, ptr }, ptr %__p, i32 0, i32 0 + store ptr %__p.coerce0, ptr %0, align 8 + %1 = getelementptr inbounds nuw { ptr, ptr }, ptr %__p, i32 0, i32 1 + store ptr %__p.coerce1, ptr %1, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_t = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 0 + %2 = load ptr, ptr %_M_t, align 8 + %first = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__p, i32 0, i32 0 + %3 = load ptr, ptr %first, align 8 + %second = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__p, i32 0, i32 1 + %4 = load ptr, ptr %second, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + %5 = load ptr, ptr %_M_node, align 8 + %call = call 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) %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_node2, align 8 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %6 = load ptr, ptr %coerce.dive3, align 8 + ret ptr %6 +} + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 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 nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_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_t = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 0 + %1 = load ptr, ptr %_M_t, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + %2 = load ptr, ptr %_M_node2, align 8 + call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef %2) #11 + br label %if.end + +if.end: ; preds = %if.then, %entry + ret void +} + +; 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 noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { entry: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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 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 + %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) #11 + store ptr %call, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; 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.i = alloca ptr, align 8 + %__p.addr.i7 = alloca ptr, align 8 + %__args.addr.i8 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__node.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -1330,41 +1710,56 @@ entry: 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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call2, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i7, align 8 + store ptr %5, ptr %__args.addr.i8, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i7, align 8 + %7 = load ptr, ptr %__args.addr.i8, align 8 + call void @_ZNSt4pairIKi1AEC2IiS1_TnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS5_S6_EEclsr6_PCCFPIS5_S6_EE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS_IS5_S6_E(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %7) + br label %_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE9constructIS4_JS1_IiS3_EEEEvRS6_PT_DpOT0_.exit + +_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE9constructIS4_JS1_IiS3_EEEEvRS6_PT_DpOT0_.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE9constructIS4_JS1_IiS3_EEEEvRS6_PT_DpOT0_.exit br label %try.cont -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } +lpad: ; No predecessors! + %8 = 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 + %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 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 + %11 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %12 = load ptr, ptr %__node.addr, align 8 + %13 = 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 %13) #11 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad3 lpad3: ; preds = %catch - %9 = landingpad { ptr, i32 } + %14 = 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 + %15 = extractvalue { ptr, i32 } %14, 0 + store ptr %15, ptr %exn.slot, align 8 + %16 = extractvalue { ptr, i32 } %14, 1 + store i32 %16, ptr %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont4 unwind label %terminate.lpad @@ -1382,10 +1777,10 @@ eh.resume: ; preds = %invoke.cont4 resume { ptr, i32 } %lpad.val6 terminate.lpad: ; preds = %lpad3 - %12 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } catch ptr null - %13 = extractvalue { ptr, i32 } %12, 0 - call void @__clang_call_terminate(ptr %13) #15 + %18 = extractvalue { ptr, i32 } %17, 0 + call void @__clang_call_terminate(ptr %18) #12 unreachable unreachable: ; preds = %catch @@ -1393,21 +1788,9 @@ unreachable: ; preds = %catch } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1416,212 +1799,268 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 192153584101141162 + br i1 %cmp, label %if.then, label %if.end4 + +if.then: ; preds = %entry + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 384307168202282325 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #14 + unreachable -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #14 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 48 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 + ret ptr %call5 } -; 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 @_ZSt28__throw_bad_array_new_lengthv() #7 ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 -; 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 -} +declare void @__cxa_rethrow() -; 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 -} +declare void @__cxa_end_catch() -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIKi1AEC2IiS1_TnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS5_S6_EEclsr6_PCCFPIS5_S6_EE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS_IS5_S6_E(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(16) %__p) unnamed_addr #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 - %first = getelementptr inbounds %"struct.std::pair.2", ptr %this1, i32 0, i32 0 + %first = getelementptr inbounds nuw %"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 + %first2 = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 + %second3 = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +define linkonce_odr dso_local ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEE13_M_const_castEv(ptr noundef nonnull align 8 dereferenceable(8) %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 - ret ptr %_M_header + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_node_count = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 1 + %0 = load i64, ptr %_M_node_count, align 8 + ret i64 %0 } -; 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 { +; 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 - %__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 + %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: 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 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_rightmostEv(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 + %_M_impl = getelementptr inbounds nuw %"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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 3 + ret ptr %_M_right } -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 + %__a.addr = alloca ptr, align 8 + %__b.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 + store ptr %__a, ptr %__a.addr, align 8 + store ptr %__b, ptr %__b.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 + %first = getelementptr inbounds nuw %"struct.std::pair.4", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %__a.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 + %second = getelementptr inbounds nuw %"struct.std::pair.4", ptr %this1, i32 0, i32 1 + %2 = load ptr, ptr %__b.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 { +; 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.tmp19 = 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_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 + %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + 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) #11 + 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 nuw %"class.std::_Rb_tree", ptr %this1, 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_impl, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %call3) + %storedv = zext i1 %call4 to i8 + store i8 %storedv, ptr %__comp, align 1 + %4 = load i8, ptr %__comp, align 1 + %loadedv = trunc i8 %4 to i1 + br i1 %loadedv, 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) #11 + 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) #11 + 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 !9 + +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) #11 + %8 = load i8, ptr %__comp, align 1 + %loadedv7 = trunc i8 %8 to i1 + br i1 %loadedv7, 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) #11 + %coerce.dive = getelementptr inbounds nuw %"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) #11 + 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_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISD_SE_EEEbE4typeELb1EEEOSD_OSE_(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) #11 + br label %if.end + +if.end: ; preds = %if.else + br label %if.end12 + +if.end12: ; preds = %if.end, %while.end + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 + %9 = load ptr, ptr %_M_node, align 8 + %call14 = 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 + %call15 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl13, ptr noundef nonnull align 4 dereferenceable(4) %call14, ptr noundef nonnull align 4 dereferenceable(4) %10) + br i1 %call15, label %if.then16, label %if.end17 + +if.then16: ; preds = %if.end12 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKi1AEERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISD_SE_EEEbE4typeELb1EEEOSD_OSE_(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.end17: ; preds = %if.end12 + %_M_node18 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 + store ptr null, ptr %ref.tmp19, align 8 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node18, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp19) + br label %return + +return: ; preds = %if.end17, %if.then16, %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_keyEPKSt18_Rb_tree_node_base(ptr noundef %__x) #0 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_leftmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #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 - %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 + %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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 + ret ptr %_M_left } -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1630,96 +2069,168 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 { +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 - %__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 + %_M_node = getelementptr inbounds nuw %"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) #16 + %_M_node2 = getelementptr inbounds nuw %"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 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 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEppEv(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.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 + %_M_node = getelementptr inbounds nuw %"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_incrementPSt18_Rb_tree_node_base(ptr noundef %0) #16 + %_M_node2 = getelementptr inbounds nuw %"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 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 { +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 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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 ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKi1AEERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISD_SE_EEEbE4typeELb1EEEOSD_OSE_(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 #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 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage + %first = getelementptr inbounds nuw %"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 nuw %"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 -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: nounwind willreturn memory(read) +declare noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef) #9 -; 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: nounwind willreturn memory(read) +declare noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef) #9 -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_map_1.cpp() #3 section ".text.startup" { +; 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: - call void @__cxx_global_var_init() - ret void + %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) #11 + %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 nuw %"class.std::_Rb_tree", ptr %this1, 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_impl, 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 ] + %storedv = zext i1 %4 to i8 + store i8 %storedv, ptr %__insert_left, align 1 + %5 = load i8, ptr %__insert_left, align 1 + %loadedv = 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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl6, i64 8 + %_M_header = getelementptr inbounds nuw %"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 %loadedv, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #11 + %_M_impl7 = getelementptr inbounds nuw %"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 nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %10 = load ptr, ptr %coerce.dive, align 8 + ret ptr %10 } -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) } +; 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)) #10 + +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { nounwind } +attributes #12 = { noreturn nounwind } +attributes #13 = { builtin nounwind } +attributes #14 = { noreturn } +attributes #15 = { builtin allocsize(0) } +attributes #16 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1729,7 +2240,8 @@ attributes #18 = { nounwind willreturn memory(read) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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/map-2.cpp.bc b/test_cases_bc/basic_cpp_tests/map-2.cpp.bc index 6316f096e..c1b6d0610 100644 --- a/test_cases_bc/basic_cpp_tests/map-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/map-2.cpp.bc @@ -1,14 +1,13 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/map-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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, std::_Select1st>, std::less>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" } %"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 } @@ -17,10 +16,12 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::_Rb_tree_iterator" = type { ptr } %"struct.std::_Rb_tree_const_iterator" = type { ptr } %"struct.std::pair.2" = type { i32, ptr } +%"struct.std::less" = type { i8 } %"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 } +%"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node" = type { ptr, ptr } +%"struct.std::pair.4" = type { ptr, ptr } $_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEEC2Ev = comdat any @@ -28,7 +29,7 @@ $_ZN1AC2Ev = comdat any $_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE6insertIS5_IiS2_EEENSt9enable_ifIXsr16is_constructibleIS7_T_EE5valueES5_ISt17_Rb_tree_iteratorIS7_EbEE4typeEOSD_ = comdat any -$_ZNSt4pairIiPK1AEC2IiPS0_Lb1EEEOT_OT0_ = comdat any +$_ZNSt4pairIiPK1AEC2IiPS0_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_ = comdat any $_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv = comdat any @@ -42,14 +43,10 @@ $_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EEC2Ev = comd $_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 @@ -74,98 +71,121 @@ $_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE15_M_destro $_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 +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE10deallocateEPS7_m = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE10deallocateEPS8_m = comdat any +$_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE9_M_mbeginEv = comdat any -$_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev = comdat any +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev = comdat any +$_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE11lower_boundERS6_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE17_M_emplace_uniqueIJS0_IiS4_EEEES0_ISt17_Rb_tree_iteratorIS5_EbEDpOT_ = comdat any +$_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_create_nodeIJS0_IiS4_EEEEPSt13_Rb_tree_nodeIS5_EDpOT_ = comdat any +$_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE3endEv = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE24_M_get_insert_unique_posERS1_ = comdat any +$_ZNKSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE8key_compEv = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E = comdat any +$_ZNKSt4lessIiEclERKiS2_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSD_PSt13_Rb_tree_nodeIS5_E = comdat any +$_ZNKSt17_Rb_tree_iteratorISt4pairIKiPK1AEEdeEv = comdat any + +$_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE12emplace_hintIJS5_IiS2_EEEESt17_Rb_tree_iteratorIS7_ESt23_Rb_tree_const_iteratorIS7_EDpOT_ = comdat any -$_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IS6_bLb1EEEOT_OT0_ = comdat any +$_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IRS6_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_ = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11lower_boundERS1_ = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_ = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E = comdat any $_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_get_nodeEv = comdat any +$_ZNKSt10_Select1stISt4pairIKiPK1AEEclERKS5_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE17_M_construct_nodeIJS0_IiS4_EEEEvPSt13_Rb_tree_nodeIS5_EDpOT_ = comdat any +$_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv = comdat any -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE8allocateERS8_m = comdat any +$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE8allocateEmPKv = comdat any +$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv = comdat any -$_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE11_M_max_sizeEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE3endEv = comdat any -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE9constructIS6_JS1_IiS5_EEEEvRS8_PT_DpOT0_ = comdat any +$_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8key_compEv = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE9constructIS7_JS2_IiS6_EEEEvPT_DpOT0_ = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE22_M_emplace_hint_uniqueIJS0_IiS4_EEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_ = comdat any -$_ZNSt4pairIKiPK1AEC2IiS3_Lb1EEEOS_IT_T0_E = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_nodeC2IJS0_IiS4_EEEERSB_DpOT_ = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS1_ = comdat any -$_ZNKSt4lessIiEclERKiS2_ = comdat any +$_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_node6_M_keyEv = comdat any -$_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_ = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_node9_M_insertES0_IPSt18_Rb_tree_node_baseSE_E = comdat any -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE5beginEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_nodeD2Ev = comdat any -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_Lb1EEEOT_OT0_ = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_create_nodeIJS0_IiS4_EEEEPSt13_Rb_tree_nodeIS5_EDpOT_ = comdat any -$_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv = 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 + +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE8allocateEmPKv = comdat any + +$_ZNSt4pairIKiPK1AEC2IiS3_TnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS7_S8_EEclsr6_PCCFPIS7_S8_EE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS_IS7_S8_E = comdat any + +$_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEE13_M_const_castEv = comdat any + +$_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE4sizeEv = 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 +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_rightmostEv = comdat any -$_ZNKSt10_Select1stISt4pairIKiPK1AEEclERKS5_ = comdat any +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_ = comdat any -$_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE24_M_get_insert_unique_posERS1_ = comdat any -$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv = comdat any +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_leftmostEv = comdat any -$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv = comdat any +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_ = comdat any -$_ZTV1A = comdat any +$_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv = comdat any -$_ZTS1A = comdat any +$_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEppEv = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE5beginEv = comdat any + +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISF_SG_EEEbE4typeELb1EEEOSF_OSG_ = comdat any + +$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSD_PSt13_Rb_tree_nodeIS5_E = comdat any + +$_ZTV1A = comdat any $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -300,24 +320,8 @@ entry: 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 { +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 @@ -338,11 +342,11 @@ entry: 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 + call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 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) + invoke void @_ZNSt4pairIiPK1AEC2IiPS0_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(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 @@ -350,18 +354,18 @@ invoke.cont: ; preds = %entry to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 + %0 = getelementptr inbounds nuw { 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 + %2 = getelementptr inbounds nuw { 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 + %call5 = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %amap) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + 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) #11 + %call6 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #11 + %second = getelementptr inbounds nuw %"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 @@ -374,7 +378,7 @@ invoke.cont3: ; preds = %invoke.cont 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 + call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #11 %8 = load i32, ptr %retval, align 4 ret i32 %8 @@ -385,7 +389,7 @@ lpad: ; preds = %invoke.cont3, %invo 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 + call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -396,24 +400,24 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #2 comdat align 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 + %_M_t = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -423,24 +427,68 @@ entry: %retval = alloca %"struct.std::pair", align 8 %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 + %__k = alloca ptr, align 8 + %__i = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp5 = alloca %"struct.std::less", align 1 + %undef.agg.tmp = alloca %"struct.std::less", align 1 + %ref.tmp9 = alloca %"struct.std::_Rb_tree_iterator", align 8 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %ref.tmp13 = alloca i8, align 1 + %ref.tmp14 = alloca i8, align 1 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 + %first = getelementptr inbounds nuw %"struct.std::pair.0", ptr %0, i32 0, i32 0 + store ptr %first, ptr %__k, align 8 + %1 = load ptr, ptr %__k, align 8 + %call = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE11lower_boundERS6_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 4 dereferenceable(4) %1) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__i, i32 0, i32 0 + store ptr %call, ptr %coerce.dive, align 8 + %call2 = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 + store ptr %call2, ptr %coerce.dive3, align 8 + %call4 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_(ptr noundef nonnull align 8 dereferenceable(8) %__i, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #11 + br i1 %call4, label %lor.end, label %lor.rhs + +lor.rhs: ; preds = %entry + call void @_ZNKSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE8key_compEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) + %2 = load ptr, ptr %__k, align 8 + %call6 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKiPK1AEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %__i) #11 + %first7 = getelementptr inbounds nuw %"struct.std::pair.2", ptr %call6, i32 0, i32 0 + %call8 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp5, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %first7) + br label %lor.end + +lor.end: ; preds = %lor.rhs, %entry + %3 = phi i1 [ true, %entry ], [ %call8, %lor.rhs ] + br i1 %3, label %if.then, label %if.end + +if.then: ; preds = %lor.end + call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(8) %__i) #11 + %4 = load ptr, ptr %__x.addr, align 8 + %coerce.dive10 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %agg.tmp, i32 0, i32 0 + %5 = load ptr, ptr %coerce.dive10, align 8 + %call11 = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE12emplace_hintIJS5_IiS2_EEEESt17_Rb_tree_iteratorIS7_ESt23_Rb_tree_const_iteratorIS7_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr %5, ptr noundef nonnull align 8 dereferenceable(16) %4) + %coerce.dive12 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %ref.tmp9, i32 0, i32 0 + store ptr %call11, ptr %coerce.dive12, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %__i, ptr align 8 %ref.tmp9, i64 8, i1 false) + store i8 1, ptr %ref.tmp13, align 1 + call void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IRS6_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp13) + br label %return + +if.end: ; preds = %lor.end + store i8 0, ptr %ref.tmp14, align 1 + call void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IRS6_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp14) + br label %return + +return: ; preds = %if.end, %if.then + %6 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %6 } -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIiPK1AEC2IiPS0_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -449,11 +497,11 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 @@ -469,26 +517,26 @@ 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 = 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 + %_M_t = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"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 @@ -500,76 +548,70 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #2 comdat align 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 + %_M_t = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 %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 + call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) unnamed_addr #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_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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_color = getelementptr inbounds nuw %"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 @@ -581,45 +623,36 @@ 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 + call void @__clang_call_terminate(ptr %1) #12 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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_parent = getelementptr inbounds nuw %"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 + %_M_header2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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 + %_M_header4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header5 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_right = getelementptr inbounds nuw %"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 + %_M_node_count = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -641,26 +674,26 @@ entry: 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 { +; Function Attrs: mustprogress 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 #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 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 + %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 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 + %_M_impl = getelementptr inbounds nuw %"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) #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) #15 + call void @__clang_call_terminate(ptr %1) #12 unreachable } @@ -682,13 +715,13 @@ while.cond: ; preds = %while.body, %entry 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 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %1) #11 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 + %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %2) #11 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 + 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) #11 %4 = load ptr, ptr %__y, align 8 store ptr %4, ptr %__x.addr, align 8 br label %while.cond, !llvm.loop !6 @@ -703,21 +736,20 @@ 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 + %call = call noundef ptr @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE9_M_mbeginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + ret ptr %call } -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 ret void } @@ -727,7 +759,7 @@ 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 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 %1 = load ptr, ptr %_M_right, align 8 ret ptr %1 } @@ -738,7 +770,7 @@ 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 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 %1 = load ptr, ptr %_M_left, align 8 ret ptr %1 } @@ -752,82 +784,89 @@ entry: 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 + 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) #11 %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 + 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) #11 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.i = alloca ptr, align 8 + %__p.addr.i3 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call2, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + store ptr %2, ptr %__p.addr.i3, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i3, align 8 + %4 = load ptr, ptr %__p.addr, align 8 ret void terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #12 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE10deallocateEPS7_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #12 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } @@ -837,30 +876,18 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #11 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #11 ret ptr %call } @@ -870,56 +897,46 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE10deallocateEPS7_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 48 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE9_M_mbeginEv(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 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_parent = getelementptr inbounds nuw %"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 @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -928,256 +945,233 @@ entry: } ; 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 { +define linkonce_odr dso_local ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE11lower_boundERS6_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::_Rb_tree_iterator", 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 + %__x.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 + store ptr %__x, ptr %__x.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 + %_M_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %__x.addr, align 8 + %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11lower_boundERS1_(ptr noundef nonnull align 8 dereferenceable(48) %_M_t, ptr noundef nonnull align 4 dereferenceable(4) %0) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive, align 8 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 8 + ret ptr %1 +} -unreachable: ; preds = %catch - unreachable +; 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 nuw %"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 nuw %"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 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE3endEv(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 - %__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 + %_M_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive, align 8 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %0 = load ptr, ptr %coerce.dive2, align 8 + ret ptr %0 } ; 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 { +define linkonce_odr dso_local void @_ZNKSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE8key_compEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #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 + %undef.agg.tmp = alloca %"struct.std::less", align 1 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 + %_M_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + call void @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8key_compEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) + ret void +} -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 +; 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 +} -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 +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKiPK1AEEdeEv(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 nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 8 + %call = call noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) + ret ptr %call +} -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 +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE12emplace_hintIJS5_IiS2_EEEESt17_Rb_tree_iteratorIS7_ESt23_Rb_tree_const_iteratorIS7_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %this.addr = alloca ptr, align 8 + %__args.addr = alloca ptr, align 8 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %agg.tmp, ptr align 8 %__pos, i64 8, i1 false) + %0 = load ptr, ptr %__args.addr, align 8 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %agg.tmp, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 8 + %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE22_M_emplace_hint_uniqueIJS0_IiS4_EEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %_M_t, ptr %1, ptr noundef nonnull align 8 dereferenceable(16) %0) + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive3, align 8 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %2 = load ptr, ptr %coerce.dive4, align 8 + ret ptr %2 +} -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 +; 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) #6 -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 +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IRS6_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_(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 #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 + %first = getelementptr inbounds nuw %"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 nuw %"struct.std::pair", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %__y.addr, align 8 + %2 = load i8, ptr %1, align 1 + %loadedv = trunc i8 %2 to i1 + %storedv = zext i1 %loadedv to i8 + store i8 %storedv, ptr %second, align 8 + ret void +} -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 +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11lower_boundERS1_(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::_Rb_tree_iterator", align 8 + %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 ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %0 = load ptr, ptr %__k.addr, align 8 + %call3 = call ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call, ptr noundef %call2, ptr noundef nonnull align 4 dereferenceable(4) %0) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call3, ptr %coerce.dive, align 8 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive4, align 8 + ret ptr %1 +} -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 +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__y, ptr noundef nonnull align 4 dereferenceable(4) %__k) #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 + %__y.addr = alloca ptr, align 8 + %__k.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 + store ptr %__k, ptr %__k.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + br label %while.cond -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 +while.cond: ; preds = %if.end, %entry + %0 = load ptr, ptr %__x.addr, align 8 + %cmp = icmp ne ptr %0, null + br i1 %cmp, label %while.body, label %while.end -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 +while.body: ; preds = %while.cond + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %1 = 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 %1) + %2 = load ptr, ptr %__k.addr, align 8 + %call2 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef nonnull align 4 dereferenceable(4) %call, ptr noundef nonnull align 4 dereferenceable(4) %2) + br i1 %call2, label %if.else, label %if.then -if.end: ; preds = %if.else - br label %if.end12 +if.then: ; preds = %while.body + %3 = load ptr, ptr %__x.addr, align 8 + store ptr %3, ptr %__y.addr, align 8 + %4 = load ptr, ptr %__x.addr, align 8 + %call3 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %4) #11 + store ptr %call3, ptr %__x.addr, align 8 + br label %if.end -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.else: ; preds = %while.body + %5 = load ptr, ptr %__x.addr, align 8 + %call4 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %5) #11 + store ptr %call4, ptr %__x.addr, align 8 + br label %if.end -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.end: ; preds = %if.else, %if.then + br label %while.cond, !llvm.loop !8 -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 +while.end: ; preds = %while.cond + %6 = load ptr, ptr %__y.addr, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %6) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %7 = load ptr, ptr %coerce.dive, align 8 + ret ptr %7 +} -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 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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + ret ptr %_M_header } ; Function Attrs: mustprogress noinline optnone uwtable @@ -1192,122 +1186,508 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 %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 + store ptr %0, ptr %_M_node, align 8 + ret void } -; 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 { +; 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 - %__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 + %first = getelementptr inbounds nuw %"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 nuw %"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) #11 + 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) #11 + 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 nuw %"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 ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE3endEv(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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_header) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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 @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8key_compEv(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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE22_M_emplace_hint_uniqueIJS0_IiS4_EEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 + %__args.addr = alloca ptr, align 8 + %__z = alloca %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", align 8 + %__res = alloca %"struct.std::pair.4", align 8 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %exn.slot = alloca ptr, align 8 + %ehselector.slot = alloca i32, align 4 + %agg.tmp5 = alloca %"struct.std::pair.4", align 8 + %cleanup.dest.slot = alloca i32, align 4 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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 %__x, ptr %__x.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::_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 + %0 = load ptr, ptr %__args.addr, align 8 + call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_nodeC2IJS0_IiS4_EEEERSB_DpOT_(ptr noundef nonnull align 8 dereferenceable(16) %__z, ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 8 dereferenceable(16) %0) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %agg.tmp, ptr align 8 %__pos, i64 8, i1 false) + %call = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_node6_M_keyEv(ptr noundef nonnull align 8 dereferenceable(16) %__z) + to label %invoke.cont unwind label %lpad + +invoke.cont: ; preds = %entry + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %agg.tmp, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 8 + %call4 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr %1, ptr noundef nonnull align 4 dereferenceable(4) %call) + to label %invoke.cont3 unwind label %lpad + +invoke.cont3: ; preds = %invoke.cont + %2 = getelementptr inbounds nuw { ptr, ptr }, ptr %__res, i32 0, i32 0 + %3 = extractvalue { ptr, ptr } %call4, 0 + store ptr %3, ptr %2, align 8 + %4 = getelementptr inbounds nuw { ptr, ptr }, ptr %__res, i32 0, i32 1 + %5 = extractvalue { ptr, ptr } %call4, 1 + store ptr %5, ptr %4, align 8 + %second = getelementptr inbounds nuw %"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 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %agg.tmp5, ptr align 8 %__res, i64 16, i1 false) + %7 = getelementptr inbounds nuw { ptr, ptr }, ptr %agg.tmp5, i32 0, i32 0 + %8 = load ptr, ptr %7, align 8 + %9 = getelementptr inbounds nuw { ptr, ptr }, ptr %agg.tmp5, i32 0, i32 1 + %10 = load ptr, ptr %9, align 8 + %call7 = invoke ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_node9_M_insertES0_IPSt18_Rb_tree_node_baseSE_E(ptr noundef nonnull align 8 dereferenceable(16) %__z, ptr %8, ptr %10) + to label %invoke.cont6 unwind label %lpad + +invoke.cont6: ; preds = %if.then + %coerce.dive8 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call7, ptr %coerce.dive8, align 8 + store i32 1, ptr %cleanup.dest.slot, align 4 + br label %cleanup + +lpad: ; preds = %if.then, %invoke.cont, %entry + %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 + call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__z) #11 + br label %eh.resume + +if.end: ; preds = %invoke.cont3 + %first = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__res, i32 0, i32 0 + %14 = load ptr, ptr %first, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %14) #11 + store i32 1, ptr %cleanup.dest.slot, align 4 + br label %cleanup + +cleanup: ; preds = %if.end, %invoke.cont6 + call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__z) #11 + %coerce.dive9 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %15 = load ptr, ptr %coerce.dive9, align 8 + ret ptr %15 + +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.val10 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 + resume { ptr, i32 } %lpad.val10 +} + +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_nodeC2IJS0_IiS4_EEEERSB_DpOT_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(48) %__t, ptr noundef nonnull align 8 dereferenceable(16) %__args) unnamed_addr #0 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + %__t.addr = alloca ptr, align 8 + %__args.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + store ptr %__t, ptr %__t.addr, align 8 + store ptr %__args, ptr %__args.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_t = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %__t.addr, align 8 + store ptr %0, ptr %_M_t, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %__t.addr, align 8 + %2 = 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) %1, ptr noundef nonnull align 8 dereferenceable(16) %2) + store ptr %call, ptr %_M_node, align 8 ret void } -declare void @__cxa_rethrow() +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr %__position.coerce, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::pair.4", align 8 + %__position = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %this.addr = alloca ptr, align 8 + %__k.addr = alloca ptr, align 8 + %__pos = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp = alloca ptr, align 8 + %__before = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp35 = alloca ptr, align 8 + %__after = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp52 = alloca ptr, align 8 + %ref.tmp65 = alloca ptr, align 8 + %ref.tmp74 = alloca ptr, align 8 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_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 %__k, ptr %__k.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %call = call ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEE13_M_const_castEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #11 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + store ptr %call, ptr %coerce.dive2, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 8 + %call3 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %cmp = icmp eq ptr %0, %call3 + br i1 %cmp, label %if.then, label %if.else12 -declare void @__cxa_end_catch() +if.then: ; preds = %entry + %call4 = call noundef i64 @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %cmp5 = icmp ugt i64 %call4, 0 + br i1 %cmp5, label %land.lhs.true, label %if.else + +land.lhs.true: ; preds = %if.then + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %call6 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_rightmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %1 = load ptr, ptr %call6, align 8 + %call7 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %1) + %2 = load ptr, ptr %__k.addr, align 8 + %call8 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef nonnull align 4 dereferenceable(4) %call7, ptr noundef nonnull align 4 dereferenceable(4) %2) + br i1 %call8, label %if.then9, label %if.else + +if.then9: ; preds = %land.lhs.true + store ptr null, ptr %ref.tmp, align 8 + %call10 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_rightmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %call10) + br label %return + +if.else: ; preds = %land.lhs.true, %if.then + %3 = load ptr, ptr %__k.addr, align 8 + %call11 = call { 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) %3) + %4 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 0 + %5 = extractvalue { ptr, ptr } %call11, 0 + store ptr %5, ptr %4, align 8 + %6 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %7 = extractvalue { ptr, ptr } %call11, 1 + store ptr %7, ptr %6, align 8 + br label %return + +if.else12: ; preds = %entry + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %8 = load ptr, ptr %__k.addr, align 8 + %_M_node14 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %9 = load ptr, ptr %_M_node14, 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) + %call16 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl13, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %call15) + br i1 %call16, label %if.then17, label %if.else42 + +if.then17: ; preds = %if.else12 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %__before, ptr align 8 %__pos, i64 8, i1 false) + %_M_node18 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %10 = load ptr, ptr %_M_node18, align 8 + %call19 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_leftmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %11 = load ptr, ptr %call19, align 8 + %cmp20 = icmp eq ptr %10, %11 + br i1 %cmp20, label %if.then21, label %if.else24 + +if.then21: ; preds = %if.then17 + %call22 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_leftmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %call23 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_leftmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %call22, ptr noundef nonnull align 8 dereferenceable(8) %call23) + br label %return + +if.else24: ; preds = %if.then17 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %call26 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__before) #11 + %_M_node27 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %call26, i32 0, i32 0 + %12 = load ptr, ptr %_M_node27, align 8 + %call28 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %12) + %13 = load ptr, ptr %__k.addr, align 8 + %call29 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl25, ptr noundef nonnull align 4 dereferenceable(4) %call28, ptr noundef nonnull align 4 dereferenceable(4) %13) + br i1 %call29, label %if.then30, label %if.else40 + +if.then30: ; preds = %if.else24 + %_M_node31 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__before, i32 0, i32 0 + %14 = load ptr, ptr %_M_node31, align 8 + %call32 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %14) #11 + %cmp33 = icmp eq ptr %call32, null + br i1 %cmp33, label %if.then34, label %if.else37 + +if.then34: ; preds = %if.then30 + store ptr null, ptr %ref.tmp35, align 8 + %_M_node36 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__before, i32 0, i32 0 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp35, ptr noundef nonnull align 8 dereferenceable(8) %_M_node36) + br label %return + +if.else37: ; preds = %if.then30 + %_M_node38 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %_M_node39 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node38, ptr noundef nonnull align 8 dereferenceable(8) %_M_node39) + br label %return + +if.else40: ; preds = %if.else24 + %15 = load ptr, ptr %__k.addr, align 8 + %call41 = call { 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) %15) + %16 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 0 + %17 = extractvalue { ptr, ptr } %call41, 0 + store ptr %17, ptr %16, align 8 + %18 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %19 = extractvalue { ptr, ptr } %call41, 1 + store ptr %19, ptr %18, align 8 + br label %return + +if.else42: ; preds = %if.else12 + %_M_impl43 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %_M_node44 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %20 = load ptr, ptr %_M_node44, align 8 + %call45 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %20) + %21 = load ptr, ptr %__k.addr, align 8 + %call46 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl43, ptr noundef nonnull align 4 dereferenceable(4) %call45, ptr noundef nonnull align 4 dereferenceable(4) %21) + br i1 %call46, label %if.then47, label %if.else72 + +if.then47: ; preds = %if.else42 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %__after, ptr align 8 %__pos, i64 8, i1 false) + %_M_node48 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %22 = load ptr, ptr %_M_node48, align 8 + %call49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_rightmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %23 = load ptr, ptr %call49, align 8 + %cmp50 = icmp eq ptr %22, %23 + br i1 %cmp50, label %if.then51, label %if.else54 + +if.then51: ; preds = %if.then47 + store ptr null, ptr %ref.tmp52, align 8 + %call53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_rightmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp52, ptr noundef nonnull align 8 dereferenceable(8) %call53) + br label %return -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #10 +if.else54: ; preds = %if.then47 + %_M_impl55 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %24 = load ptr, ptr %__k.addr, align 8 + %call56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %__after) #11 + %_M_node57 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %call56, i32 0, i32 0 + %25 = load ptr, ptr %_M_node57, align 8 + %call58 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %25) + %call59 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl55, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(4) %call58) + br i1 %call59, label %if.then60, label %if.else70 + +if.then60: ; preds = %if.else54 + %_M_node61 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %26 = load ptr, ptr %_M_node61, align 8 + %call62 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %26) #11 + %cmp63 = icmp eq ptr %call62, null + br i1 %cmp63, label %if.then64, label %if.else67 + +if.then64: ; preds = %if.then60 + store ptr null, ptr %ref.tmp65, align 8 + %_M_node66 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp65, ptr noundef nonnull align 8 dereferenceable(8) %_M_node66) + br label %return + +if.else67: ; preds = %if.then60 + %_M_node68 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__after, i32 0, i32 0 + %_M_node69 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__after, i32 0, i32 0 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node68, ptr noundef nonnull align 8 dereferenceable(8) %_M_node69) + br label %return + +if.else70: ; preds = %if.else54 + %27 = load ptr, ptr %__k.addr, align 8 + %call71 = call { 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) %27) + %28 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 0 + %29 = extractvalue { ptr, ptr } %call71, 0 + store ptr %29, ptr %28, align 8 + %30 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %31 = extractvalue { ptr, ptr } %call71, 1 + store ptr %31, ptr %30, align 8 + br label %return + +if.else72: ; preds = %if.else42 + %_M_node73 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + store ptr null, ptr %ref.tmp74, align 8 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node73, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp74) + br label %return + +return: ; preds = %if.else72, %if.else70, %if.else67, %if.then64, %if.then51, %if.else40, %if.else37, %if.then34, %if.then21, %if.else, %if.then9 + %32 = load { ptr, ptr }, ptr %retval, align 8 + ret { ptr, ptr } %32 +} + +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_node6_M_keyEv(ptr noundef nonnull align 8 dereferenceable(16) %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_node = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + %0 = load ptr, ptr %_M_node, 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: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_node9_M_insertES0_IPSt18_Rb_tree_node_baseSE_E(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr %__p.coerce0, ptr %__p.coerce1) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %__p = alloca %"struct.std::pair.4", align 8 + %this.addr = alloca ptr, align 8 + %0 = getelementptr inbounds nuw { ptr, ptr }, ptr %__p, i32 0, i32 0 + store ptr %__p.coerce0, ptr %0, align 8 + %1 = getelementptr inbounds nuw { ptr, ptr }, ptr %__p, i32 0, i32 1 + store ptr %__p.coerce1, ptr %1, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_t = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 0 + %2 = load ptr, ptr %_M_t, align 8 + %first = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__p, i32 0, i32 0 + %3 = load ptr, ptr %first, align 8 + %second = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__p, i32 0, i32 1 + %4 = load ptr, ptr %second, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + %5 = load ptr, ptr %_M_node, align 8 + %call = call 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) %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_node2, align 8 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %6 = load ptr, ptr %coerce.dive3, align 8 + ret ptr %6 +} + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 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 nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_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_t = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 0 + %1 = load ptr, ptr %_M_t, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", ptr %this1, i32 0, i32 1 + %2 = load ptr, ptr %_M_node2, align 8 + call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef %2) #11 + br label %if.end + +if.end: ; preds = %if.then, %entry + ret void +} + +; 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 noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { entry: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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 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 + %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) #11 + store ptr %call, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; 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.i = alloca ptr, align 8 + %__p.addr.i7 = alloca ptr, align 8 + %__args.addr.i8 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__node.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -1318,41 +1698,56 @@ entry: 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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call2, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i7, align 8 + store ptr %5, ptr %__args.addr.i8, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i7, align 8 + %7 = load ptr, ptr %__args.addr.i8, align 8 + call void @_ZNSt4pairIKiPK1AEC2IiS3_TnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS7_S8_EEclsr6_PCCFPIS7_S8_EE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS_IS7_S8_E(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %7) + br label %_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE9constructIS6_JS1_IiS5_EEEEvRS8_PT_DpOT0_.exit + +_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE9constructIS6_JS1_IiS5_EEEEvRS8_PT_DpOT0_.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE9constructIS6_JS1_IiS5_EEEEvRS8_PT_DpOT0_.exit br label %try.cont -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } +lpad: ; No predecessors! + %8 = 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 + %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 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 + %11 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %12 = load ptr, ptr %__node.addr, align 8 + %13 = 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 %13) #11 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad3 lpad3: ; preds = %catch - %9 = landingpad { ptr, i32 } + %14 = 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 + %15 = extractvalue { ptr, i32 } %14, 0 + store ptr %15, ptr %exn.slot, align 8 + %16 = extractvalue { ptr, i32 } %14, 1 + store i32 %16, ptr %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont4 unwind label %terminate.lpad @@ -1370,10 +1765,10 @@ eh.resume: ; preds = %invoke.cont4 resume { ptr, i32 } %lpad.val6 terminate.lpad: ; preds = %lpad3 - %12 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } catch ptr null - %13 = extractvalue { ptr, i32 } %12, 0 - call void @__clang_call_terminate(ptr %13) #15 + %18 = extractvalue { ptr, i32 } %17, 0 + call void @__clang_call_terminate(ptr %18) #12 unreachable unreachable: ; preds = %catch @@ -1381,21 +1776,9 @@ unreachable: ; preds = %catch } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1404,201 +1787,257 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 192153584101141162 + br i1 %cmp, label %if.then, label %if.end4 + +if.then: ; preds = %entry + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 384307168202282325 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #14 + unreachable -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #14 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 48 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 + ret ptr %call5 } -; 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 @_ZSt28__throw_bad_array_new_lengthv() #7 ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 -; 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 -} +declare void @__cxa_rethrow() -; 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 -} +declare void @__cxa_end_catch() -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIKiPK1AEC2IiS3_TnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS7_S8_EEclsr6_PCCFPIS7_S8_EE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS_IS7_S8_E(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(16) %__p) unnamed_addr #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 - %first = getelementptr inbounds %"struct.std::pair.2", ptr %this1, i32 0, i32 0 + %first = getelementptr inbounds nuw %"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 + %first2 = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 + %second3 = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEE13_M_const_castEv(ptr noundef nonnull align 8 dereferenceable(8) %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 - ret ptr %_M_header + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_node_count = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 1 + %0 = load i64, ptr %_M_node_count, align 8 + ret i64 %0 } -; 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 { +; 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 - %__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 + %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: 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 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_rightmostEv(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 + %_M_impl = getelementptr inbounds nuw %"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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 3 + ret ptr %_M_right } -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 + %__a.addr = alloca ptr, align 8 + %__b.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 + store ptr %__a, ptr %__a.addr, align 8 + store ptr %__b, ptr %__b.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 + %first = getelementptr inbounds nuw %"struct.std::pair.4", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %__a.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 + %second = getelementptr inbounds nuw %"struct.std::pair.4", ptr %this1, i32 0, i32 1 + %2 = load ptr, ptr %__b.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 { +; 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.tmp19 = 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_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 + %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + 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) #11 + 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 nuw %"class.std::_Rb_tree", ptr %this1, 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_impl, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %call3) + %storedv = zext i1 %call4 to i8 + store i8 %storedv, ptr %__comp, align 1 + %4 = load i8, ptr %__comp, align 1 + %loadedv = trunc i8 %4 to i1 + br i1 %loadedv, 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) #11 + 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) #11 + 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 !9 + +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) #11 + %8 = load i8, ptr %__comp, align 1 + %loadedv7 = trunc i8 %8 to i1 + br i1 %loadedv7, 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) #11 + %coerce.dive = getelementptr inbounds nuw %"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) #11 + 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_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISF_SG_EEEbE4typeELb1EEEOSF_OSG_(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) #11 + br label %if.end + +if.end: ; preds = %if.else + br label %if.end12 + +if.end12: ; preds = %if.end, %while.end + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 + %9 = load ptr, ptr %_M_node, align 8 + %call14 = 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 + %call15 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl13, ptr noundef nonnull align 4 dereferenceable(4) %call14, ptr noundef nonnull align 4 dereferenceable(4) %10) + br i1 %call15, label %if.then16, label %if.end17 + +if.then16: ; preds = %if.end12 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISF_SG_EEEbE4typeELb1EEEOSF_OSG_(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.end17: ; preds = %if.end12 + %_M_node18 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 + store ptr null, ptr %ref.tmp19, align 8 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node18, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp19) + br label %return + +return: ; preds = %if.end17, %if.then16, %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_keyEPKSt18_Rb_tree_node_base(ptr noundef %__x) #0 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_leftmostEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #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 - %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 + %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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 + ret ptr %_M_left } -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_S4_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1607,96 +2046,168 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 { +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 - %__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 + %_M_node = getelementptr inbounds nuw %"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) #16 + %_M_node2 = getelementptr inbounds nuw %"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 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 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEppEv(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.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 + %_M_node = getelementptr inbounds nuw %"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_incrementPSt18_Rb_tree_node_base(ptr noundef %0) #16 + %_M_node2 = getelementptr inbounds nuw %"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 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 { +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 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_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 ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISF_SG_EEEbE4typeELb1EEEOSF_OSG_(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 #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 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage + %first = getelementptr inbounds nuw %"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 nuw %"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 -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: nounwind willreturn memory(read) +declare noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef) #9 -; 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: nounwind willreturn memory(read) +declare noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef) #9 -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_map_2.cpp() #3 section ".text.startup" { +; 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: - call void @__cxx_global_var_init() - ret void + %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) #11 + %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 nuw %"class.std::_Rb_tree", ptr %this1, 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_impl, 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 ] + %storedv = zext i1 %4 to i8 + store i8 %storedv, ptr %__insert_left, align 1 + %5 = load i8, ptr %__insert_left, align 1 + %loadedv = 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 nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl6, i64 8 + %_M_header = getelementptr inbounds nuw %"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 %loadedv, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #11 + %_M_impl7 = getelementptr inbounds nuw %"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 nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %10 = load ptr, ptr %coerce.dive, align 8 + ret ptr %10 } -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) } +; 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)) #10 + +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { nounwind } +attributes #12 = { noreturn nounwind } +attributes #13 = { builtin nounwind } +attributes #14 = { noreturn } +attributes #15 = { builtin allocsize(0) } +attributes #16 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1706,7 +2217,8 @@ attributes #18 = { nounwind willreturn memory(read) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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/member-variable.cpp.bc b/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc index 552fb8a33..81e0193b8 100644 --- a/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.B = type { ptr, ptr } @@ -15,16 +15,16 @@ $_ZN1B1fEPi = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any -$_ZTV1B = comdat any +$_ZTS1A = comdat any -$_ZTS1B = comdat any +$_ZTV1B = comdat any $_ZTI1B = comdat any +$_ZTS1B = 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 @@ -33,12 +33,12 @@ $_ZTI1B = comdat any @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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 +@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -190,10 +190,10 @@ entry: 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 + %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 %a, align 8 - %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #7 + %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #6 %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 @@ -207,7 +207,7 @@ invoke.cont: ; preds = %entry %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 + %_a = getelementptr inbounds nuw %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 @@ -223,7 +223,7 @@ lpad: ; preds = %entry 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 + call void @_ZdlPvm(ptr noundef %call1, i64 noundef 16) #8 br label %eh.resume eh.resume: ; preds = %lpad @@ -237,26 +237,26 @@ eh.resume: ; preds = %lpad ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2EP1A(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %a) unnamed_addr #2 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2), ptr %this1, align 8 + %_a = getelementptr inbounds nuw %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 @@ -265,7 +265,7 @@ entry: declare i32 @__gxx_personality_v0(...) ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 ; 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 { @@ -301,16 +301,15 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { builtin allocsize(0) } +attributes #7 = { nounwind } +attributes #8 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -320,4 +319,4 @@ attributes #9 = { builtin nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/namespace.cpp.bc b/test_cases_bc/basic_cpp_tests/namespace.cpp.bc index 25ad49355..473d252ba 100644 --- a/test_cases_bc/basic_cpp_tests/namespace.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/namespace.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/namespace.cpp.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_cpp_tests/namespace.cpp" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1n1BC2Ev = comdat any @@ -13,13 +13,13 @@ $_ZN1n1B1gEPi = comdat any $_ZTVN1n1BE = comdat any -$_ZTSN1n1BE = comdat any +$_ZTIN1n1BE = comdat any -$_ZTSN1n1AE = comdat any +$_ZTSN1n1BE = comdat any $_ZTIN1n1AE = comdat any -$_ZTIN1n1BE = comdat any +$_ZTSN1n1AE = comdat any $_ZTVN1n1AE = comdat any @@ -31,12 +31,12 @@ $_ZTVN1n1AE = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTSN1n1AE = linkonce_odr dso_local constant [7 x i8] c"N1n1AE\00", comdat, align 1 @_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 @@ -182,8 +182,8 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1n1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 store ptr %call, ptr %b, align 8 %0 = load ptr, ptr %b, align 8 %1 = load ptr, ptr %ptr_f, align 8 @@ -203,24 +203,24 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1n1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1n1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #6 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTVN1n1BE, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1n1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTVN1n1AE, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -260,14 +260,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -277,4 +276,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/pwc.cpp.bc b/test_cases_bc/basic_cpp_tests/pwc.cpp.bc index 33b12c1db..1279c2b97 100644 --- a/test_cases_bc/basic_cpp_tests/pwc.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/pwc.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/pwc.cpp.bc' +source_filename = "/root/testsss/Test-Suite/src/basic_cpp_tests/pwc.cpp" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.A = type { ptr, ptr, ptr, ptr } @@ -13,10 +13,10 @@ $_ZN1A1gEPi = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 @@ -25,9 +25,9 @@ $_ZTI1A = comdat any @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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -184,7 +184,7 @@ entry: 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %arrayctor.cur) #4 %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 @@ -228,13 +228,13 @@ for.end: ; preds = %for.cond 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -272,12 +272,11 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -287,6 +286,6 @@ attributes #5 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index ed68e6264..2561ede54 100644 --- a/test_cases_bc/basic_cpp_tests/queue-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/queue-1.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/queue-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -51,31 +52,19 @@ $_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 +$_ZNSt15__new_allocatorI1AE10deallocateEPS0_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 +$_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any +$_ZNSt15__new_allocatorIP1AED2Ev = comdat any -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any +$_ZNSt15__new_allocatorI1AED2Ev = comdat any $_ZNSt5dequeI1ASaIS0_EEC2Ev = comdat any @@ -85,12 +74,8 @@ $_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 @@ -101,30 +86,18 @@ $_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 +$_ZNSt15__new_allocatorIP1AE8allocateEmPKv = 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__new_allocatorI1AE8allocateEmPKv = 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 @@ -137,12 +110,8 @@ $_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 @@ -161,7 +130,9 @@ $_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 +$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_S8_S6_ = comdat any + +$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_ = comdat any $_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any @@ -169,7 +140,7 @@ $_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 +$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_S8_S6_ = comdat any $_ZNSt5dequeI1ASaIS0_EE5frontEv = comdat any @@ -177,31 +148,24 @@ $_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 +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 { @@ -336,24 +300,8 @@ entry: 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 { +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 @@ -369,7 +317,7 @@ entry: 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #10 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 @@ -393,7 +341,7 @@ invoke.cont2: ; preds = %invoke.cont1 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 + call void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #10 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -404,7 +352,7 @@ lpad: ; preds = %invoke.cont2, %invo 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 + call void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -415,25 +363,25 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %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 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 + %c = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -445,7 +393,7 @@ entry: 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 + %c = getelementptr inbounds nuw %"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 @@ -459,8 +407,8 @@ 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 + %c = getelementptr inbounds nuw %"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) #10 ret ptr %call } @@ -470,19 +418,19 @@ 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 + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeI1ASaIS0_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) #10 ret void } @@ -500,29 +448,29 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 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 + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %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) #10 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %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) #15 + call void @__clang_call_terminate(ptr %1) #11 unreachable } @@ -530,38 +478,42 @@ terminate.lpad: ; preds = %entry 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 + %__first.indirect_addr = alloca ptr, align 8 + %__last.indirect_addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_addr, align 8 + store ptr %__last, ptr %__last.indirect_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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #10 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #10 ret void } @@ -571,14 +523,14 @@ 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_impl = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #10 + call void @_ZSt9terminatev() #11 unreachable } @@ -586,70 +538,70 @@ 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 + %_M_node4 = getelementptr inbounds nuw %"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 + 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) #10 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map6 = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #10 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 + %_M_impl8 = getelementptr inbounds nuw %"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) #10 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first3 = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_last4 = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node5 = getelementptr inbounds nuw %"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 @@ -679,12 +631,12 @@ for.cond: ; preds = %for.inc, %entry 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #10 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 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %5, i32 1 store ptr %incdec.ptr, ptr %__n, align 8 br label %for.cond, !llvm.loop !6 @@ -695,6 +647,10 @@ for.end: ; preds = %for.cond ; 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.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -703,78 +659,82 @@ entry: 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 + call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 ret void -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont2 invoke.cont2: ; preds = %invoke.cont ret void -terminate.lpad: ; preds = %invoke.cont, %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; preds = %entry + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #11 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: @@ -798,59 +758,42 @@ cond.end: ; preds = %cond.false, %cond.t } ; 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 ; 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 { +define linkonce_odr dso_local void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind noalias writable sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %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) #10 + store ptr %agg.result, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -860,67 +803,38 @@ 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_impl = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - 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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -929,10 +843,10 @@ entry: } ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 -; 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -941,16 +855,16 @@ entry: 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 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 + %_M_impl = getelementptr inbounds nuw %"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) #10 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 @@ -964,7 +878,7 @@ lpad: ; preds = %entry 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -975,14 +889,19 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 ret void } @@ -1012,30 +931,30 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size6 = getelementptr inbounds nuw %"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 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map10 = getelementptr inbounds nuw %"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 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size12 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %add.ptr14 = getelementptr inbounds nuw 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 @@ -1056,21 +975,21 @@ lpad: ; preds = %entry 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 + %14 = call ptr @__cxa_begin_catch(ptr %exn) #10 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map16 = getelementptr inbounds nuw %"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 + %_M_impl17 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size18 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #10 + %_M_impl19 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map20 = getelementptr inbounds nuw %"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 + %_M_impl21 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size22 = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -1087,34 +1006,34 @@ 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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #10 + %_M_impl26 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #10 + %_M_impl28 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start29 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl30 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start31 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish33 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 + %_M_first34 = getelementptr inbounds nuw %"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 + %add.ptr36 = getelementptr inbounds nuw %class.A, ptr %23, i64 %rem + %_M_impl37 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish38 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 + %_M_cur39 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 store ptr %add.ptr36, ptr %_M_cur39, align 8 ret void @@ -1129,62 +1048,43 @@ 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 + call void @__clang_call_terminate(ptr %26) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_map = getelementptr inbounds nuw %"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 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_start = getelementptr inbounds nuw %"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) #10 + %_M_finish = getelementptr inbounds nuw %"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) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 store ptr null, ptr %_M_node, align 8 ret void } @@ -1222,6 +1122,10 @@ return: ; preds = %if.end, %if.then ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i3 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %__map_alloc = alloca %"class.std::allocator.0", align 1 @@ -1230,23 +1134,34 @@ entry: 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 + call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i5 = invoke noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 + ret ptr %call.i5 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %3 = 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 + %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 + store ptr %__map_alloc, ptr %this.addr.i3, align 8 + %this1.i4 = load ptr, ptr %this.addr.i3, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i4) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -1291,7 +1206,7 @@ invoke.cont: ; preds = %for.body for.inc: ; preds = %invoke.cont %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %4, i32 1 store ptr %incdec.ptr, ptr %__cur, align 8 br label %for.cond, !llvm.loop !8 @@ -1306,11 +1221,11 @@ lpad: ; preds = %for.body catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 + %8 = call ptr @__cxa_begin_catch(ptr %exn) #10 %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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #10 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad2 for.end: ; preds = %for.cond @@ -1343,7 +1258,7 @@ 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 + call void @__clang_call_terminate(ptr %15) #11 unreachable unreachable: ; preds = %catch @@ -1363,37 +1278,25 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first2 = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #10 %add.ptr = getelementptr inbounds %class.A, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1402,64 +1305,62 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #17 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 +declare void @_ZSt28__throw_bad_array_new_lengthv() #7 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #13 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1468,28 +1369,29 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #17 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 + ret ptr %call5 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1502,141 +1404,145 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i11 = alloca ptr, align 8 + %__args.addr.i12 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, 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_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur7 = getelementptr inbounds nuw %"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 %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i11, align 8 + store ptr %6, ptr %__args.addr.i12, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i11, align 8 + %8 = load ptr, ptr %__args.addr.i12, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #10 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 + %_M_cur10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 + %9 = load ptr, ptr %_M_cur10, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, 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) + %10 = 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) %10) 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.i = alloca ptr, align 8 + %__p.addr.i18 = alloca ptr, align 8 + %__args.addr.i19 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %call = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + store ptr %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i18, align 8 + store ptr %5, ptr %__args.addr.i19, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i18, align 8 + %7 = load ptr, ptr %__args.addr.i19, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #10 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_node11 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 + %8 = load ptr, ptr %_M_node11, align 8 + %add.ptr12 = getelementptr inbounds ptr, ptr %8, 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) #10 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish14 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 + %_M_cur17 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 + store ptr %9, 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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -1646,11 +1552,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #10 ret i64 %call } @@ -1660,13 +1566,13 @@ 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 + %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) #10 + %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #10 ret i64 %call2 } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #12 +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 { @@ -1678,15 +1584,15 @@ entry: %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 @@ -1712,80 +1618,83 @@ entry: %__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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #10 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 3 + %5 = load ptr, ptr %_M_node2, align 8 + %tobool = icmp ne ptr %5, null + %conv = zext i1 %tobool to i64 + %sub = sub nsw i64 %sub.ptr.div, %conv + %mul = mul nsw i64 %call, %sub %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 0 + %7 = load ptr, ptr %_M_cur, align 8 + %8 = load ptr, ptr %__x.addr, align 8 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %sub.ptr.lhs.cast3 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast4 = ptrtoint ptr %9 to i64 + %sub.ptr.sub5 = sub i64 %sub.ptr.lhs.cast3, %sub.ptr.rhs.cast4 + %sub.ptr.div6 = sdiv exact i64 %sub.ptr.sub5, 8 + %add = add nsw i64 %mul, %sub.ptr.div6 %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 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 2 + %11 = load ptr, ptr %_M_last, align 8 + %12 = load ptr, ptr %__y.addr, align 8 + %_M_cur7 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %_M_cur7, align 8 + %sub.ptr.lhs.cast8 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast9 = ptrtoint ptr %13 to i64 + %sub.ptr.sub10 = sub i64 %sub.ptr.lhs.cast8, %sub.ptr.rhs.cast9 + %sub.ptr.div11 = sdiv exact i64 %sub.ptr.sub10, 8 + %add12 = add nsw i64 %add, %sub.ptr.div11 + ret i64 %add12 } ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #11 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: @@ -1816,16 +1725,6 @@ return: ; preds = %if.end, %if.then 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: @@ -1839,16 +1738,16 @@ entry: %__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 + %storedv = zext i1 %__add_at_front to i8 + store i8 %storedv, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -1860,8 +1759,8 @@ entry: %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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 @@ -1869,19 +1768,19 @@ entry: 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 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size8 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %loadedv = trunc i8 %9 to i1 + br i1 %loadedv, label %cond.true, label %cond.false cond.true: ; preds = %if.then %10 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1892,24 +1791,24 @@ cond.false: ; preds = %if.then 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 + %add.ptr9 = getelementptr inbounds nuw 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 + %_M_impl10 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start11 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 + %_M_node12 = getelementptr inbounds nuw %"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 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 + %_M_node17 = getelementptr inbounds nuw %"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 + %_M_impl18 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish19 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 + %_M_node20 = getelementptr inbounds nuw %"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 @@ -1917,18 +1816,18 @@ if.then14: ; preds = %cond.end 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 + %_M_impl22 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start23 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 + %_M_node24 = getelementptr inbounds nuw %"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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish26 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 + %_M_node27 = getelementptr inbounds nuw %"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 + %add.ptr29 = getelementptr inbounds nuw 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 @@ -1936,11 +1835,11 @@ 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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size33 = getelementptr inbounds nuw %"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 + %_M_impl34 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size35 = getelementptr inbounds nuw %"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 @@ -1954,10 +1853,10 @@ if.else31: ; preds = %entry %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 + %add.ptr42 = getelementptr inbounds nuw 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 + %loadedv43 = trunc i8 %26 to i1 + br i1 %loadedv43, label %cond.true44, label %cond.false45 cond.true44: ; preds = %if.else31 %27 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1968,48 +1867,48 @@ cond.false45: ; preds = %if.else31 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 + %add.ptr48 = getelementptr inbounds nuw 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 + %_M_impl49 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start50 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 + %_M_node51 = getelementptr inbounds nuw %"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 + %_M_impl52 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish53 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 + %_M_node54 = getelementptr inbounds nuw %"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 + %_M_impl57 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map58 = getelementptr inbounds nuw %"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 + %_M_impl59 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size60 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #10 %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 + %_M_impl61 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map62 = getelementptr inbounds nuw %"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 + %_M_impl63 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size64 = getelementptr inbounds nuw %"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 + %_M_impl66 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start67 = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #10 + %_M_impl68 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish69 = getelementptr inbounds nuw %"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.ptr70 = getelementptr inbounds nuw 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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #10 ret void } @@ -2059,11 +1958,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #10 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #10 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #10 %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 @@ -2126,12 +2025,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat align 2 { entry: %__first.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -2148,8 +2047,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2157,17 +2056,45 @@ if.then: ; preds = %entry %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.end3 + +if.else: ; preds = %entry + %6 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %6, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %7 = load ptr, ptr %__result.addr, align 8 + %8 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %7, ptr noundef %8) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end3 + +if.end3: ; preds = %if.end, %if.then + %9 = load ptr, ptr %__result.addr, align 8 + %10 = load i64, ptr %_Num, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %9, i64 %10 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #9 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %__to, ptr noundef %__from) #2 comdat align 2 { +entry: + %__to.addr = alloca ptr, align 8 + %__from.addr = alloca ptr, align 8 + store ptr %__to, ptr %__to.addr, align 8 + store ptr %__from, ptr %__from.addr, align 8 + %0 = load ptr, ptr %__from.addr, align 8 + %1 = load ptr, ptr %0, align 8 + %2 = load ptr, ptr %__to.addr, align 8 + store ptr %1, ptr %2, align 8 + ret void +} ; 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 { @@ -2179,11 +2106,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #10 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #10 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #10 %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 @@ -2217,12 +2144,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_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 { +define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_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 @@ -2239,8 +2166,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2251,14 +2178,29 @@ if.then: ; preds = %entry %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.end4 + +if.else: ; preds = %entry + %7 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %7, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %8 = load ptr, ptr %__result.addr, align 8 + %add.ptr3 = getelementptr inbounds ptr, ptr %8, i64 -1 + %9 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %add.ptr3, ptr noundef %9) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end4 + +if.end4: ; preds = %if.end, %if.then + %10 = load ptr, ptr %__result.addr, align 8 + %11 = load i64, ptr %_Num, align 8 + %idx.neg5 = sub i64 0, %11 + %add.ptr6 = getelementptr inbounds ptr, ptr %10, i64 %idx.neg5 + ret ptr %add.ptr6 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -2268,8 +2210,8 @@ entry: %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 + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #10 ret ptr %call } @@ -2279,7 +2221,7 @@ 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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 %0 = load ptr, ptr %_M_cur, align 8 ret ptr %0 } @@ -2287,33 +2229,44 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i10 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, 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::_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 + %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) #10 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start5 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 + %_M_cur6 = getelementptr inbounds nuw %"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 %call, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i10, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i10, align 8 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 2 + %_M_cur9 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start8, i32 0, i32 0 + %6 = load ptr, ptr %_M_cur9, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %6, i32 1 store ptr %incdec.ptr, ptr %_M_cur9, align 8 br label %if.end @@ -2328,99 +2281,75 @@ if.end: ; preds = %invoke.cont, %if.th ret void terminate.lpad: ; preds = %if.else - %4 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } catch ptr null - %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #15 + %8 = extractvalue { ptr, i32 } %7, 0 + call void @__clang_call_terminate(ptr %8) #11 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.i = alloca ptr, align 8 + %__p.addr.i14 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, 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 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 + %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) #10 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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() + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + store ptr %2, ptr %__p.addr.i14, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i14, align 8 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start3, i32 0, i32 1 + %4 = 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 %4) #10 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start5 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start7 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start7, i32 0, i32 3 + %5 = load ptr, ptr %_M_node, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %5, 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) #10 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 2 + %_M_first10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start9, i32 0, i32 1 + %6 = load ptr, ptr %_M_first10, align 8 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start12 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 2 + %_M_cur13 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start12, i32 0, i32 0 + store ptr %6, ptr %_M_cur13, 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 = { 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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #10 = { nounwind } +attributes #11 = { noreturn nounwind } +attributes #12 = { builtin nounwind } +attributes #13 = { noreturn } +attributes #14 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2430,7 +2359,7 @@ attributes #17 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 1f5219b5d..c45a440c9 100644 --- a/test_cases_bc/basic_cpp_tests/queue-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/queue-2.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/queue-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -50,31 +51,19 @@ $_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 +$_ZNSt15__new_allocatorIP1AE10deallocateEPS1_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 +$_ZNSt15__new_allocatorIPP1AE10deallocateEPS2_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIPP1AE10deallocateEPS3_m = comdat any +$_ZNSt15__new_allocatorIPP1AED2Ev = comdat any -$_ZN9__gnu_cxx13new_allocatorIPP1AED2Ev = comdat any - -$_ZNSaIP1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any +$_ZNSt15__new_allocatorIP1AED2Ev = comdat any $_ZNSt5dequeIP1ASaIS1_EEC2Ev = comdat any @@ -84,12 +73,8 @@ $_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 @@ -100,30 +85,18 @@ $_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 +$_ZNSt15__new_allocatorIPP1AE8allocateEmPKv = 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__new_allocatorIP1AE8allocateEmPKv = 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 @@ -134,12 +107,8 @@ $_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 @@ -158,7 +127,9 @@ $_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 +$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPP1AS5_EEPT0_PT_S9_S7_ = comdat any + +$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPP1AS5_EEvPT_PT0_ = comdat any $_ZSt22__copy_move_backward_aILb0EPPP1AS3_ET1_T0_S5_S4_ = comdat any @@ -166,7 +137,7 @@ $_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 +$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPP1AS5_EEPT0_PT_S9_S7_ = comdat any $_ZNSt5dequeIP1ASaIS1_EE5frontEv = comdat any @@ -174,31 +145,24 @@ $_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 +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 { @@ -333,24 +297,8 @@ entry: 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 { +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 @@ -366,11 +314,11 @@ entry: 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 + %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #10 to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #11 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 @@ -396,7 +344,7 @@ invoke.cont4: ; preds = %invoke.cont2 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 + call void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #11 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -407,7 +355,7 @@ lpad: ; preds = %invoke.cont4, %invo 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 + call void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -418,30 +366,30 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEEC2IS4_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %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 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 + %c = getelementptr inbounds nuw %"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 noundef nonnull ptr @_Znwm(i64 noundef) #4 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -453,7 +401,7 @@ entry: 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 + %c = getelementptr inbounds nuw %"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 @@ -465,8 +413,8 @@ 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 + %c = getelementptr inbounds nuw %"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) #11 ret ptr %call } @@ -476,19 +424,19 @@ 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 + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeIP1ASaIS1_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) #11 ret void } @@ -506,29 +454,29 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 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 + call void @_ZNSt5dequeIP1ASaIS1_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 + call void @_ZNSt5dequeIP1ASaIS1_EE3endEv(ptr dead_on_unwind writable 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_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 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 + call void @_ZNSt11_Deque_baseIP1ASaIS1_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) #16 + call void @__clang_call_terminate(ptr %1) #12 unreachable } @@ -536,38 +484,42 @@ terminate.lpad: ; preds = %entry 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 + %__first.indirect_addr = alloca ptr, align 8 + %__last.indirect_addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_addr, align 8 + store ptr %__last, ptr %__last.indirect_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 { +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE5beginEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #11 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE3endEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #11 ret void } @@ -577,14 +529,14 @@ 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_impl = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #5 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -592,70 +544,70 @@ 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 + %_M_node4 = getelementptr inbounds nuw %"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 + 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) #11 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map6 = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_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_baseIP1ASaIS1_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #5 + %_M_impl8 = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first3 = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_last4 = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node5 = getelementptr inbounds nuw %"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 @@ -685,12 +637,12 @@ for.cond: ; preds = %for.inc, %entry 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 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE18_M_deallocate_nodeEPS1_(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 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %5, i32 1 store ptr %incdec.ptr, ptr %__n, align 8 br label %for.cond, !llvm.loop !6 @@ -701,6 +653,10 @@ for.end: ; preds = %for.cond ; 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.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -709,78 +665,82 @@ entry: 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 + call void @_ZNKSt11_Deque_baseIP1ASaIS1_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable 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_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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 ret void -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #16 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #12 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont2 invoke.cont2: ; preds = %invoke.cont ret void -terminate.lpad: ; preds = %invoke.cont, %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; preds = %entry + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #16 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #12 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: @@ -804,59 +764,42 @@ cond.end: ; preds = %cond.false, %cond.t } ; 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #11 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #6 ; 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 { +define linkonce_odr dso_local void @_ZNKSt11_Deque_baseIP1ASaIS1_EE20_M_get_map_allocatorEv(ptr dead_on_unwind noalias writable sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %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) #11 + store ptr %agg.result, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -866,67 +809,38 @@ 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_impl = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - 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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -935,10 +849,10 @@ entry: } ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #12 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7 -; 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -947,16 +861,16 @@ entry: 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 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 + %_M_impl = getelementptr inbounds nuw %"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) #11 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 @@ -970,7 +884,7 @@ lpad: ; preds = %entry 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 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -981,14 +895,19 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 ret void } @@ -1018,30 +937,30 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size6 = getelementptr inbounds nuw %"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 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map10 = getelementptr inbounds nuw %"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 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size12 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %add.ptr14 = getelementptr inbounds nuw 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 @@ -1062,21 +981,21 @@ lpad: ; preds = %entry 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 + %14 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map16 = getelementptr inbounds nuw %"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 + %_M_impl17 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size18 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 + %_M_impl19 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map20 = getelementptr inbounds nuw %"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 + %_M_impl21 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size22 = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -1093,34 +1012,34 @@ 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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #11 + %_M_impl26 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #11 + %_M_impl28 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start29 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl30 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start31 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish33 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 + %_M_first34 = getelementptr inbounds nuw %"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 + %add.ptr36 = getelementptr inbounds nuw ptr, ptr %23, i64 %rem + %_M_impl37 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish38 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 + %_M_cur39 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 store ptr %add.ptr36, ptr %_M_cur39, align 8 ret void @@ -1135,62 +1054,43 @@ 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 + 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 @_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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_map = getelementptr inbounds nuw %"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 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_start = getelementptr inbounds nuw %"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) #11 + %_M_finish = getelementptr inbounds nuw %"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) #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 #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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 store ptr null, ptr %_M_node, align 8 ret void } @@ -1228,6 +1128,10 @@ return: ; preds = %if.end, %if.then ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i3 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %__map_alloc = alloca %"class.std::allocator.0", align 1 @@ -1236,23 +1140,34 @@ entry: 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 + call void @_ZNKSt11_Deque_baseIP1ASaIS1_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable 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_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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i5 = invoke noundef ptr @_ZNSt15__new_allocatorIPP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIPP1AEE8allocateERS3_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIPP1AEE8allocateERS3_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIPP1AEE8allocateERS3_m.exit + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 + ret ptr %call.i5 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %3 = 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 + %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 + store ptr %__map_alloc, ptr %this.addr.i3, align 8 + %this1.i4 = load ptr, ptr %this.addr.i3, align 8 + call void @_ZNSt15__new_allocatorIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i4) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -1297,7 +1212,7 @@ invoke.cont: ; preds = %for.body for.inc: ; preds = %invoke.cont %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %4, i32 1 store ptr %incdec.ptr, ptr %__cur, align 8 br label %for.cond, !llvm.loop !8 @@ -1312,11 +1227,11 @@ lpad: ; preds = %for.body catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 + %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_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 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #11 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad2 for.end: ; preds = %for.cond @@ -1349,7 +1264,7 @@ 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 + call void @__clang_call_terminate(ptr %15) #12 unreachable unreachable: ; preds = %catch @@ -1369,37 +1284,25 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first2 = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorIP1ARS1_PS1_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 + %_M_last = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIPP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1408,61 +1311,59 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #17 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #18 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #14 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #10 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #13 +declare void @_ZSt28__throw_bad_array_new_lengthv() #8 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #8 ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1471,28 +1372,29 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #17 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #18 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #14 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #10 + ret ptr %call5 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1505,130 +1407,135 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i11 = alloca ptr, align 8 + %__args.addr.i12 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, 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_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur7 = getelementptr inbounds nuw %"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 %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i11, align 8 + store ptr %6, ptr %__args.addr.i12, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i11, align 8 + %8 = load ptr, ptr %__args.addr.i12, align 8 + %9 = load ptr, ptr %8, align 8 + store ptr %9, ptr %7, align 8 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 + %_M_cur10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 + %10 = load ptr, ptr %_M_cur10, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, 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) + %11 = 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) %11) 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.i = alloca ptr, align 8 + %__p.addr.i18 = alloca ptr, align 8 + %__args.addr.i19 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %call = call noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 + %call2 = call noundef i64 @_ZNKSt5dequeIP1ASaIS1_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) #17 + call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #14 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + store ptr %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i18, align 8 + store ptr %5, ptr %__args.addr.i19, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i18, align 8 + %7 = load ptr, ptr %__args.addr.i19, align 8 + %8 = load ptr, ptr %7, align 8 + store ptr %8, ptr %6, align 8 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_node11 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 + %9 = load ptr, ptr %_M_node11, align 8 + %add.ptr12 = getelementptr inbounds ptr, ptr %9, 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) #11 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish14 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 + %10 = load ptr, ptr %_M_first, align 8 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 + %_M_cur17 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 + store ptr %10, ptr %_M_cur17, align 8 ret void } @@ -1638,11 +1545,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #11 ret i64 %call } @@ -1652,13 +1559,13 @@ 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 + %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) #11 + %call2 = call noundef i64 @_ZNSt5dequeIP1ASaIS1_EE11_S_max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 ret i64 %call2 } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #13 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #8 ; 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 { @@ -1670,15 +1577,15 @@ entry: %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 @@ -1704,80 +1611,83 @@ entry: %__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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorIP1ARS1_PS1_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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 3 + %5 = load ptr, ptr %_M_node2, align 8 + %tobool = icmp ne ptr %5, null + %conv = zext i1 %tobool to i64 + %sub = sub nsw i64 %sub.ptr.div, %conv + %mul = mul nsw i64 %call, %sub %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 0 + %7 = load ptr, ptr %_M_cur, align 8 + %8 = load ptr, ptr %__x.addr, align 8 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %sub.ptr.lhs.cast3 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast4 = ptrtoint ptr %9 to i64 + %sub.ptr.sub5 = sub i64 %sub.ptr.lhs.cast3, %sub.ptr.rhs.cast4 + %sub.ptr.div6 = sdiv exact i64 %sub.ptr.sub5, 8 + %add = add nsw i64 %mul, %sub.ptr.div6 %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 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 2 + %11 = load ptr, ptr %_M_last, align 8 + %12 = load ptr, ptr %__y.addr, align 8 + %_M_cur7 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %_M_cur7, align 8 + %sub.ptr.lhs.cast8 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast9 = ptrtoint ptr %13 to i64 + %sub.ptr.sub10 = sub i64 %sub.ptr.lhs.cast8, %sub.ptr.rhs.cast9 + %sub.ptr.div11 = sdiv exact i64 %sub.ptr.sub10, 8 + %add12 = add nsw i64 %add, %sub.ptr.div11 + ret i64 %add12 } ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #16 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #12 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: @@ -1808,16 +1718,6 @@ return: ; preds = %if.end, %if.then 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: @@ -1831,16 +1731,16 @@ entry: %__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 + %storedv = zext i1 %__add_at_front to i8 + store i8 %storedv, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -1852,8 +1752,8 @@ entry: %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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 @@ -1861,19 +1761,19 @@ entry: 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 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size8 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %loadedv = trunc i8 %9 to i1 + br i1 %loadedv, label %cond.true, label %cond.false cond.true: ; preds = %if.then %10 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1884,24 +1784,24 @@ cond.false: ; preds = %if.then 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 + %add.ptr9 = getelementptr inbounds nuw 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 + %_M_impl10 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start11 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 + %_M_node12 = getelementptr inbounds nuw %"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 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 + %_M_node17 = getelementptr inbounds nuw %"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 + %_M_impl18 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish19 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 + %_M_node20 = getelementptr inbounds nuw %"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 @@ -1909,18 +1809,18 @@ if.then14: ; preds = %cond.end 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 + %_M_impl22 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start23 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 + %_M_node24 = getelementptr inbounds nuw %"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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish26 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 + %_M_node27 = getelementptr inbounds nuw %"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 + %add.ptr29 = getelementptr inbounds nuw 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 @@ -1928,11 +1828,11 @@ 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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size33 = getelementptr inbounds nuw %"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 + %_M_impl34 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size35 = getelementptr inbounds nuw %"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 @@ -1946,10 +1846,10 @@ if.else31: ; preds = %entry %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 + %add.ptr42 = getelementptr inbounds nuw 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 + %loadedv43 = trunc i8 %26 to i1 + br i1 %loadedv43, label %cond.true44, label %cond.false45 cond.true44: ; preds = %if.else31 %27 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1960,48 +1860,48 @@ cond.false45: ; preds = %if.else31 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 + %add.ptr48 = getelementptr inbounds nuw 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 + %_M_impl49 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start50 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 + %_M_node51 = getelementptr inbounds nuw %"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 + %_M_impl52 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish53 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 + %_M_node54 = getelementptr inbounds nuw %"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 + %_M_impl57 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map58 = getelementptr inbounds nuw %"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 + %_M_impl59 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size60 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_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 + %_M_impl61 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map62 = getelementptr inbounds nuw %"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 + %_M_impl63 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size64 = getelementptr inbounds nuw %"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 + %_M_impl66 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start67 = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #11 + %_M_impl68 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish69 = getelementptr inbounds nuw %"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.ptr70 = getelementptr inbounds nuw 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 + call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #11 ret void } @@ -2051,11 +1951,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %0) #11 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %1) #11 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %2) #11 %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 @@ -2118,12 +2018,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPP1AS5_EEPT0_PT_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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPP1AS5_EEPT0_PT_S9_S7_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat align 2 { entry: %__first.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -2140,8 +2040,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2149,17 +2049,45 @@ if.then: ; preds = %entry %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.end3 + +if.else: ; preds = %entry + %6 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %6, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %7 = load ptr, ptr %__result.addr, align 8 + %8 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPP1AS5_EEvPT_PT0_(ptr noundef %7, ptr noundef %8) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end3 + +if.end3: ; preds = %if.end, %if.then + %9 = load ptr, ptr %__result.addr, align 8 + %10 = load i64, ptr %_Num, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %9, i64 %10 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #9 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPP1AS5_EEvPT_PT0_(ptr noundef %__to, ptr noundef %__from) #2 comdat align 2 { +entry: + %__to.addr = alloca ptr, align 8 + %__from.addr = alloca ptr, align 8 + store ptr %__to, ptr %__to.addr, align 8 + store ptr %__from, ptr %__from.addr, align 8 + %0 = load ptr, ptr %__from.addr, align 8 + %1 = load ptr, ptr %0, align 8 + %2 = load ptr, ptr %__to.addr, align 8 + store ptr %1, ptr %2, align 8 + ret void +} ; 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 { @@ -2171,11 +2099,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %0) #11 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %1) #11 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %2) #11 %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 @@ -2209,12 +2137,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPP1AS5_EEPT0_PT_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 { +define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPP1AS5_EEPT0_PT_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 @@ -2231,8 +2159,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2243,14 +2171,29 @@ if.then: ; preds = %entry %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.end4 + +if.else: ; preds = %entry + %7 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %7, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %8 = load ptr, ptr %__result.addr, align 8 + %add.ptr3 = getelementptr inbounds ptr, ptr %8, i64 -1 + %9 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPP1AS5_EEvPT_PT0_(ptr noundef %add.ptr3, ptr noundef %9) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end4 + +if.end4: ; preds = %if.end, %if.then + %10 = load ptr, ptr %__result.addr, align 8 + %11 = load i64, ptr %_Num, align 8 + %idx.neg5 = sub i64 0, %11 + %add.ptr6 = getelementptr inbounds ptr, ptr %10, i64 %idx.neg5 + ret ptr %add.ptr6 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -2260,8 +2203,8 @@ entry: %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 + call void @_ZNSt5dequeIP1ASaIS1_EE5beginEv(ptr dead_on_unwind writable 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_iteratorIP1ARS1_PS1_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 ret ptr %call } @@ -2271,7 +2214,7 @@ 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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 %0 = load ptr, ptr %_M_cur, align 8 ret ptr %0 } @@ -2279,33 +2222,44 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i10 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, 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::_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 + %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) #11 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start5 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 + %_M_cur6 = getelementptr inbounds nuw %"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 %call, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i10, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i10, align 8 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 2 + %_M_cur9 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start8, i32 0, i32 0 + %6 = load ptr, ptr %_M_cur9, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %6, i32 1 store ptr %incdec.ptr, ptr %_M_cur9, align 8 br label %if.end @@ -2320,100 +2274,75 @@ if.end: ; preds = %invoke.cont, %if.th ret void terminate.lpad: ; preds = %if.else - %4 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } catch ptr null - %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #16 + %8 = extractvalue { ptr, i32 } %7, 0 + call void @__clang_call_terminate(ptr %8) #12 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.i = alloca ptr, align 8 + %__p.addr.i14 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, 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 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 + %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) #11 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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() + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + store ptr %2, ptr %__p.addr.i14, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i14, align 8 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start3, i32 0, i32 1 + %4 = 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 %4) #11 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start5 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start7 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start7, i32 0, i32 3 + %5 = load ptr, ptr %_M_node, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %5, 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) #11 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 2 + %_M_first10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start9, i32 0, i32 1 + %6 = load ptr, ptr %_M_first10, align 8 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start12 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 2 + %_M_cur13 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_start12, i32 0, i32 0 + store ptr %6, ptr %_M_cur13, 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 = { 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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #8 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #10 = { builtin allocsize(0) } +attributes #11 = { nounwind } +attributes #12 = { noreturn nounwind } +attributes #13 = { builtin nounwind } +attributes #14 = { noreturn } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2423,7 +2352,7 @@ attributes #18 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index cbb14e9a2..77736756e 100644 --- a/test_cases_bc/basic_cpp_tests/set-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/set-1.cpp.bc @@ -1,14 +1,13 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/set-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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, std::less>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" } %"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] }> @@ -38,14 +37,10 @@ $_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 @@ -70,29 +65,23 @@ $_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE15_M_destroy_nodeEPSt1 $_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 +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeI1AEE10deallocateEPS2_m = comdat any -$_ZNSaISt13_Rb_tree_nodeI1AEED2Ev = comdat any +$_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE9_M_mbeginEv = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEED2Ev = comdat any +$_ZNSt15__new_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 +$_ZNSt4pairISt23_Rb_tree_const_iteratorI1AEbEC2IRSt17_Rb_tree_iteratorIS1_ERbTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISA_SB_EEEbE4typeELb1EEEOSA_OSB_ = comdat any $_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE24_M_get_insert_unique_posERKS0_ = comdat any @@ -102,7 +91,7 @@ $_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_ = $_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 +$_ZNSt4pairISt17_Rb_tree_iteratorI1AEbEC2IS2_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_ = comdat any $_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base = comdat any @@ -116,13 +105,13 @@ $_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 +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI1AERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_ = 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 +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_ = comdat any $_ZNK1AltERKS_ = comdat any @@ -142,15 +131,7 @@ $_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_get_nodeEv = comd $_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 +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeI1AEE8allocateEmPKv = comdat any $_ZN1AC2ERKS_ = comdat any @@ -162,22 +143,19 @@ $_ZNSt23_Rb_tree_const_iteratorI1AEC2EPKSt18_Rb_tree_node_base = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -312,24 +290,8 @@ entry: 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 { +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 @@ -346,7 +308,7 @@ entry: 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 + call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #11 invoke void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) %a, i32 noundef 0) to label %invoke.cont unwind label %lpad @@ -355,16 +317,16 @@ invoke.cont: ; preds = %entry to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 + %0 = getelementptr inbounds nuw { 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 + %2 = getelementptr inbounds nuw { 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 + %call2 = call ptr @_ZNKSt3setI1ASt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %aset) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + %call3 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt23_Rb_tree_const_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #11 store ptr %call3, ptr %aptr, align 8 %4 = load ptr, ptr %aptr, align 8 %5 = load ptr, ptr %ptr, align 8 @@ -376,7 +338,7 @@ invoke.cont1: ; preds = %invoke.cont 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 + call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #11 %7 = load i32, ptr %retval, align 4 ret i32 %7 @@ -387,7 +349,7 @@ lpad: ; preds = %invoke.cont1, %invo 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 + call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -398,27 +360,27 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #2 comdat align 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 + %_M_t = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) %this, i32 noundef %i) unnamed_addr #2 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 + %data = getelementptr inbounds nuw %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 @@ -433,23 +395,20 @@ entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 %__p = alloca %"struct.std::pair.0", align 8 + %tmp.coerce = alloca { ptr, i8 }, 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 + %_M_t = getelementptr inbounds nuw %"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 + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %__p, ptr align 8 %tmp.coerce, i64 9, i1 false) + %first = getelementptr inbounds nuw %"struct.std::pair.0", ptr %__p, i32 0, i32 0 + %second = getelementptr inbounds nuw %"struct.std::pair.0", ptr %__p, i32 0, i32 1 + call void @_ZNSt4pairISt23_Rb_tree_const_iteratorI1AEbEC2IRSt17_Rb_tree_iteratorIS1_ERbTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISA_SB_EEEbE4typeELb1EEEOSA_OSB_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %first, ptr noundef nonnull align 1 dereferenceable(1) %second) + %1 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -459,11 +418,11 @@ 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 = 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 + %_M_t = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive2, align 8 ret ptr %0 } @@ -474,76 +433,70 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #2 comdat align 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 + %_M_t = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt20_Rb_tree_key_compareISt4lessI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 %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 + call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) unnamed_addr #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_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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_color = getelementptr inbounds nuw %"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 @@ -555,45 +508,36 @@ 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 + call void @__clang_call_terminate(ptr %1) #12 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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_parent = getelementptr inbounds nuw %"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 + %_M_header2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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 + %_M_header4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header5 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_right = getelementptr inbounds nuw %"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 + %_M_node_count = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -615,26 +559,26 @@ entry: 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 { +; Function Attrs: mustprogress 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 #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 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 + %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 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 + %_M_impl = getelementptr inbounds nuw %"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) #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) #14 + call void @__clang_call_terminate(ptr %1) #12 unreachable } @@ -656,13 +600,13 @@ while.cond: ; preds = %while.body, %entry 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 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %1) #11 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 + %call2 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %2) #11 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 + 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) #11 %4 = load ptr, ptr %__y, align 8 store ptr %4, ptr %__x.addr, align 8 br label %while.cond, !llvm.loop !6 @@ -677,21 +621,20 @@ 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 + %call = call noundef ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE9_M_mbeginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + ret ptr %call } -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 ret void } @@ -701,7 +644,7 @@ 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 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 %1 = load ptr, ptr %_M_right, align 8 ret ptr %1 } @@ -712,7 +655,7 @@ 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 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 %1 = load ptr, ptr %_M_left, align 8 ret ptr %1 } @@ -726,82 +669,89 @@ entry: 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 + 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) #11 %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 + 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) #11 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.i = alloca ptr, align 8 + %__p.addr.i3 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call2, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + store ptr %2, ptr %__p.addr.i3, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i3, align 8 + %4 = load ptr, ptr %__p.addr, align 8 ret void terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #14 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #12 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeI1AEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #14 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #12 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } @@ -811,30 +761,18 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #11 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #11 ret ptr %call } @@ -844,56 +782,46 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeI1AEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 48 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE9_M_mbeginEv(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 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_parent = getelementptr inbounds nuw %"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 @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -920,37 +848,37 @@ entry: %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 + %1 = getelementptr inbounds nuw { 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 + %3 = getelementptr inbounds nuw { 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 + %second = getelementptr inbounds nuw %"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 + %first = getelementptr inbounds nuw %"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 + %second4 = getelementptr inbounds nuw %"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 + %coerce.dive = getelementptr inbounds nuw %"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) + call void @_ZNSt4pairISt17_Rb_tree_iteratorI1AEbEC2IS2_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(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 + %first8 = getelementptr inbounds nuw %"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 + call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef %9) #11 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) + call void @_ZNSt4pairISt17_Rb_tree_iteratorI1AEbEC2IS2_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(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 @@ -958,8 +886,11 @@ return: ; preds = %if.end, %if.then 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 { +; 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) #6 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairISt23_Rb_tree_const_iteratorI1AEbEC2IRSt17_Rb_tree_iteratorIS1_ERbTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISA_SB_EEEbE4typeELb1EEEOSA_OSB_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -968,15 +899,15 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + 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) #11 + %second = getelementptr inbounds nuw %"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 + %loadedv = trunc i8 %2 to i1 + %storedv = zext i1 %loadedv to i8 + store i8 %storedv, ptr %second, align 8 ret void } @@ -991,13 +922,13 @@ entry: %__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 + %ref.tmp19 = 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 + %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 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 + %call2 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 store ptr %call2, ptr %__y, align 8 store i8 1, ptr %__comp, align 1 br label %while.cond @@ -1010,26 +941,25 @@ while.cond: ; preds = %cond.end, %entry 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, 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 + %call4 = call noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %call3) + %storedv = zext i1 %call4 to i8 + store i8 %storedv, 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 + %loadedv = trunc i8 %4 to i1 + br i1 %loadedv, 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 + %call5 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %5) #11 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 + %call6 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %6) #11 br label %cond.end cond.end: ; preds = %cond.false, %cond.true @@ -1039,50 +969,49 @@ cond.end: ; preds = %cond.false, %cond.t 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 + call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef %7) #11 %8 = load i8, ptr %__comp, align 1 - %tobool7 = trunc i8 %8 to i1 - br i1 %tobool7, label %if.then, label %if.end12 + %loadedv7 = trunc i8 %8 to i1 + br i1 %loadedv7, 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 + %call8 = call ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + %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) #11 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) + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI1AERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_(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 + %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorI1AEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__j) #11 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 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) + %call14 = 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 + %call15 = call noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl13, ptr noundef nonnull align 8 dereferenceable(12) %call14, ptr noundef nonnull align 8 dereferenceable(12) %10) + br i1 %call15, label %if.then16, label %if.end17 -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) +if.then16: ; preds = %if.end12 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI1AERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_(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) +if.end17: ; preds = %if.end12 + %_M_node18 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 + store ptr null, ptr %ref.tmp19, align 8 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node18, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp19) br label %return -return: ; preds = %if.end18, %if.then17, %if.then10 +return: ; preds = %if.end17, %if.then16, %if.then10 %11 = load { ptr, ptr }, ptr %retval, align 8 ret { ptr, ptr } %11 } @@ -1099,15 +1028,15 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_t = getelementptr inbounds nuw %"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 @@ -1137,51 +1066,50 @@ entry: 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 + %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, 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) + %call5 = call noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, 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 + %storedv = zext i1 %4 to i8 + store i8 %storedv, 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 + %loadedv = 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 + %_M_impl7 = getelementptr inbounds nuw %"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 + %_M_header = getelementptr inbounds nuw %"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 %loadedv, ptr noundef %8, ptr noundef %9, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #11 + %_M_impl8 = getelementptr inbounds nuw %"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 + %_M_node_count = getelementptr inbounds nuw %"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 + call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %11) #11 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairISt17_Rb_tree_iteratorI1AEbEC2IS2_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1190,27 +1118,27 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 + %loadedv = trunc i8 %2 to i1 + %storedv = zext i1 %loadedv to i8 + store i8 %storedv, 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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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 @@ -1222,9 +1150,9 @@ 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 + %_M_impl = getelementptr inbounds nuw %"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_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 ret ptr %_M_header } @@ -1264,10 +1192,10 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 @@ -1280,19 +1208,19 @@ 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 + %_M_impl = getelementptr inbounds nuw %"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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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 + call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #11 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI1AERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISB_SC_EEEbE4typeELb1EEEOSB_OSC_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1301,11 +1229,11 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 @@ -1318,10 +1246,10 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %0) #14 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 store ptr %call, ptr %_M_node2, align 8 ret ptr %this1 } @@ -1336,22 +1264,22 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 + %__a.addr = alloca ptr, align 8 + %__b.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 + store ptr %__a, ptr %__a.addr, align 8 + store ptr %__b, ptr %__b.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 + %first = getelementptr inbounds nuw %"struct.std::pair.3", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %__a.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 + %second = getelementptr inbounds nuw %"struct.std::pair.3", ptr %this1, i32 0, i32 1 + %2 = load ptr, ptr %__b.addr, align 8 %3 = load ptr, ptr %2, align 8 store ptr %3, ptr %second, align 8 ret void @@ -1365,7 +1293,7 @@ entry: 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 + %data = getelementptr inbounds nuw %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) @@ -1379,7 +1307,7 @@ 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 + %data = getelementptr inbounds nuw %class.A, ptr %this1, i32 0, i32 1 %0 = load i32, ptr %data, align 8 ret i32 %0 } @@ -1390,8 +1318,8 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #11 ret ptr %call } @@ -1401,7 +1329,7 @@ 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 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #11 ret ptr %call } @@ -1411,12 +1339,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 +declare noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef) #7 ; 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 { @@ -1426,7 +1354,7 @@ entry: 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 + %_M_t = getelementptr inbounds nuw %"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) @@ -1434,7 +1362,7 @@ entry: } ; 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 +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)) #8 ; 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 { @@ -1457,17 +1385,29 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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 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 + %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) #11 + store ptr %call, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt13_Rb_tree_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; 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.i = alloca ptr, align 8 + %__p.addr.i3 = alloca ptr, align 8 + %__args.addr.i4 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__node.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -1476,30 +1416,30 @@ entry: 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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call2, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i3, align 8 + store ptr %5, ptr %__args.addr.i4, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i3, align 8 + %7 = load ptr, ptr %__args.addr.i4, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7) #11 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1508,99 +1448,68 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 192153584101141162 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 384307168202282325 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #15 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #15 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 48 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #16 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 +declare void @_ZSt28__throw_bad_array_new_lengthv() #9 -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #9 -; 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: nobuiltin allocsize(0) +declare noundef nonnull ptr @_Znwm(i64 noundef) #10 ; 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 { +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 #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 - 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 + %data = getelementptr inbounds nuw %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 + %data2 = getelementptr inbounds nuw %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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"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 @@ -1613,56 +1522,48 @@ 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 + %_M_impl = getelementptr inbounds nuw %"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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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 + call void @_ZNSt23_Rb_tree_const_iteratorI1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #11 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { nounwind } +attributes #12 = { noreturn nounwind } +attributes #13 = { builtin nounwind } +attributes #14 = { nounwind willreturn memory(read) } +attributes #15 = { noreturn } +attributes #16 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1672,7 +1573,7 @@ attributes #17 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 98e88f3f9..066e79f07 100644 --- a/test_cases_bc/basic_cpp_tests/set-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/set-2.cpp.bc @@ -1,14 +1,13 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/set-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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, std::less>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" } %"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 } @@ -38,14 +37,10 @@ $_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 @@ -70,29 +65,23 @@ $_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE15_M_destroy_nodeEPS $_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 +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeIPK1AEE10deallocateEPS4_m = comdat any -$_ZNSaISt13_Rb_tree_nodeIPK1AEED2Ev = comdat any +$_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE9_M_mbeginEv = comdat any -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEED2Ev = comdat any +$_ZNSt15__new_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 +$_ZNSt4pairISt23_Rb_tree_const_iteratorIPK1AEbEC2IRSt17_Rb_tree_iteratorIS3_ERbTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISC_SD_EEEbE4typeELb1EEEOSC_OSD_ = comdat any $_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE24_M_get_insert_unique_posERKS2_ = comdat any @@ -102,7 +91,7 @@ $_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeC2ERS8_ $_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 +$_ZNSt4pairISt17_Rb_tree_iteratorIPK1AEbEC2IS4_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS8_S9_EEEbE4typeELb1EEEOS8_OS9_ = comdat any $_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base = comdat any @@ -116,13 +105,13 @@ $_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 +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIPK1AERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISD_SE_EEEbE4typeELb1EEEOSD_OSE_ = 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 +$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_ = comdat any $_ZNKSt9_IdentityIPK1AEclERKS2_ = comdat any @@ -140,15 +129,7 @@ $_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_get_nodeEv = co $_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 +$_ZNSt15__new_allocatorISt13_Rb_tree_nodeIPK1AEE8allocateEmPKv = comdat any $_ZNSt23_Rb_tree_const_iteratorIPK1AEC2ERKSt17_Rb_tree_iteratorIS2_E = comdat any @@ -158,22 +139,19 @@ $_ZNSt23_Rb_tree_const_iteratorIPK1AEC2EPKSt18_Rb_tree_node_base = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -308,24 +286,8 @@ entry: 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 { +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 @@ -343,23 +305,23 @@ entry: 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 + call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 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 + %0 = getelementptr inbounds nuw { 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 + %2 = getelementptr inbounds nuw { 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 + %call1 = call ptr @_ZNKSt3setIPK1ASt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %aset) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #11 %4 = load ptr, ptr %call2, align 8 store ptr %4, ptr %aptr, align 8 %5 = load ptr, ptr %aptr, align 8 @@ -372,7 +334,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #11 %8 = load i32, ptr %retval, align 4 ret i32 %8 @@ -383,7 +345,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -394,24 +356,24 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #2 comdat align 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 + %_M_t = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -422,23 +384,20 @@ entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 %__p = alloca %"struct.std::pair.0", align 8 + %tmp.coerce = alloca { ptr, i8 }, 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 + %_M_t = getelementptr inbounds nuw %"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 + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %__p, ptr align 8 %tmp.coerce, i64 9, i1 false) + %first = getelementptr inbounds nuw %"struct.std::pair.0", ptr %__p, i32 0, i32 0 + %second = getelementptr inbounds nuw %"struct.std::pair.0", ptr %__p, i32 0, i32 1 + call void @_ZNSt4pairISt23_Rb_tree_const_iteratorIPK1AEbEC2IRSt17_Rb_tree_iteratorIS3_ERbTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISC_SD_EEEbE4typeELb1EEEOSC_OSD_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %first, ptr noundef nonnull align 1 dereferenceable(1) %second) + %1 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %1 } declare i32 @__gxx_personality_v0(...) @@ -450,11 +409,11 @@ 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 = 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 + %_M_t = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive2, align 8 ret ptr %0 } @@ -465,76 +424,70 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #2 comdat align 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 + %_M_t = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt20_Rb_tree_key_compareISt4lessIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 %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 + call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) unnamed_addr #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_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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_color = getelementptr inbounds nuw %"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 @@ -546,45 +499,36 @@ 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 + call void @__clang_call_terminate(ptr %1) #12 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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_parent = getelementptr inbounds nuw %"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 + %_M_header2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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 + %_M_header4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_header5 = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 + %_M_right = getelementptr inbounds nuw %"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 + %_M_node_count = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -606,26 +550,26 @@ entry: 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 { +; Function Attrs: mustprogress 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 #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 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 + %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 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 + %_M_impl = getelementptr inbounds nuw %"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) #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) #14 + call void @__clang_call_terminate(ptr %1) #12 unreachable } @@ -647,13 +591,13 @@ while.cond: ; preds = %while.body, %entry 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 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %1) #11 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 + %call2 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %2) #11 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 + 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) #11 %4 = load ptr, ptr %__y, align 8 store ptr %4, ptr %__x.addr, align 8 br label %while.cond, !llvm.loop !6 @@ -668,21 +612,20 @@ 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 + %call = call noundef ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE9_M_mbeginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + ret ptr %call } -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 ret void } @@ -692,7 +635,7 @@ 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 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 %1 = load ptr, ptr %_M_right, align 8 ret ptr %1 } @@ -703,7 +646,7 @@ 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 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 %1 = load ptr, ptr %_M_left, align 8 ret ptr %1 } @@ -717,82 +660,89 @@ entry: 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 + 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) #11 %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 + 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) #11 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.i = alloca ptr, align 8 + %__p.addr.i3 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call2, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + store ptr %2, ptr %__p.addr.i3, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i3, align 8 + %4 = load ptr, ptr %__p.addr, align 8 ret void terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #14 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #12 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont invoke.cont: ; preds = %entry ret void -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #14 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #12 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } @@ -802,30 +752,18 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #11 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #11 ret ptr %call } @@ -835,56 +773,46 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeIPK1AEE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 40 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE9_M_mbeginEv(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 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_parent = getelementptr inbounds nuw %"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 @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -911,37 +839,37 @@ entry: %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 + %1 = getelementptr inbounds nuw { 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 + %3 = getelementptr inbounds nuw { 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 + %second = getelementptr inbounds nuw %"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 + %first = getelementptr inbounds nuw %"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 + %second4 = getelementptr inbounds nuw %"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 + %coerce.dive = getelementptr inbounds nuw %"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) + call void @_ZNSt4pairISt17_Rb_tree_iteratorIPK1AEbEC2IS4_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS8_S9_EEEbE4typeELb1EEEOS8_OS9_(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 + %first8 = getelementptr inbounds nuw %"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 + call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef %9) #11 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) + call void @_ZNSt4pairISt17_Rb_tree_iteratorIPK1AEbEC2IS4_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS8_S9_EEEbE4typeELb1EEEOS8_OS9_(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 @@ -949,8 +877,11 @@ return: ; preds = %if.end, %if.then 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 { +; 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) #6 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairISt23_Rb_tree_const_iteratorIPK1AEbEC2IRSt17_Rb_tree_iteratorIS3_ERbTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISC_SD_EEEbE4typeELb1EEEOSC_OSD_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -959,15 +890,15 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + 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) #11 + %second = getelementptr inbounds nuw %"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 + %loadedv = trunc i8 %2 to i1 + %storedv = zext i1 %loadedv to i8 + store i8 %storedv, ptr %second, align 8 ret void } @@ -982,13 +913,13 @@ entry: %__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 + %ref.tmp19 = 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 + %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 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 + %call2 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 store ptr %call2, ptr %__y, align 8 store i8 1, ptr %__comp, align 1 br label %while.cond @@ -1001,28 +932,27 @@ while.cond: ; preds = %cond.end, %entry 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, 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 + %call4 = call noundef zeroext i1 @_ZNKSt4lessIPK1AEclES2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %3, ptr noundef %5) #11 + %storedv = zext i1 %call4 to i8 + store i8 %storedv, 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 + %loadedv = trunc i8 %6 to i1 + br i1 %loadedv, 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 + %call5 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %7) #11 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 + %call6 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %8) #11 br label %cond.end cond.end: ; preds = %cond.false, %cond.true @@ -1032,52 +962,51 @@ cond.end: ; preds = %cond.false, %cond.t 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 + call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef %9) #11 %10 = load i8, ptr %__comp, align 1 - %tobool7 = trunc i8 %10 to i1 - br i1 %tobool7, label %if.then, label %if.end12 + %loadedv7 = trunc i8 %10 to i1 + br i1 %loadedv7, 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 + %call8 = call ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 + %coerce.dive = getelementptr inbounds nuw %"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 + %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) #11 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) + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIPK1AERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISD_SE_EEEbE4typeELb1EEEOSD_OSE_(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 + %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorIPK1AEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__j) #11 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 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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 + %call14 = 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 %call14, 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 + %call15 = call noundef zeroext i1 @_ZNKSt4lessIPK1AEclES2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl13, ptr noundef %12, ptr noundef %14) #11 + br i1 %call15, label %if.then16, label %if.end17 -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) +if.then16: ; preds = %if.end12 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIPK1AERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISD_SE_EEEbE4typeELb1EEEOSD_OSE_(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) +if.end17: ; preds = %if.end12 + %_M_node18 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 + store ptr null, ptr %ref.tmp19, align 8 + call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node18, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp19) br label %return -return: ; preds = %if.end18, %if.then17, %if.then10 +return: ; preds = %if.end17, %if.then16, %if.then10 %15 = load { ptr, ptr }, ptr %retval, align 8 ret { ptr, ptr } %15 } @@ -1094,15 +1023,15 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_t = getelementptr inbounds nuw %"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 @@ -1132,53 +1061,52 @@ entry: 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 + %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #11 %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, 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 + %call5 = call noundef zeroext i1 @_ZNKSt4lessIPK1AEclES2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %3, ptr noundef %5) #11 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 + %storedv = zext i1 %6 to i8 + store i8 %storedv, 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 + %loadedv = 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 + %_M_impl7 = getelementptr inbounds nuw %"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 + %_M_header = getelementptr inbounds nuw %"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 %loadedv, ptr noundef %10, ptr noundef %11, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #11 + %_M_impl8 = getelementptr inbounds nuw %"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 + %_M_node_count = getelementptr inbounds nuw %"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 + call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %13) #11 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairISt17_Rb_tree_iteratorIPK1AEbEC2IS4_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS8_S9_EEEbE4typeELb1EEEOS8_OS9_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1187,27 +1115,27 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 + %loadedv = trunc i8 %2 to i1 + %storedv = zext i1 %loadedv to i8 + store i8 %storedv, 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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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 @@ -1219,9 +1147,9 @@ 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 + %_M_impl = getelementptr inbounds nuw %"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_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 ret ptr %_M_header } @@ -1263,10 +1191,10 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 @@ -1279,19 +1207,19 @@ 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 + %_M_impl = getelementptr inbounds nuw %"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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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 + call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #11 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIPK1AERS1_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISD_SE_EEEbE4typeELb1EEEOSD_OSE_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1300,11 +1228,11 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 @@ -1317,10 +1245,10 @@ 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 + %_M_node = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %0) #14 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 store ptr %call, ptr %_M_node2, align 8 ret ptr %this1 } @@ -1335,22 +1263,22 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IS1_S1_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS5_S6_EEEbE4typeELb1EEERKS1_SA_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 + %__a.addr = alloca ptr, align 8 + %__b.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 + store ptr %__a, ptr %__a.addr, align 8 + store ptr %__b, ptr %__b.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 + %first = getelementptr inbounds nuw %"struct.std::pair.3", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %__a.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 + %second = getelementptr inbounds nuw %"struct.std::pair.3", ptr %this1, i32 0, i32 1 + %2 = load ptr, ptr %__b.addr, align 8 %3 = load ptr, ptr %2, align 8 store ptr %3, ptr %second, align 8 ret void @@ -1374,8 +1302,8 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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) #11 ret ptr %call } @@ -1385,7 +1313,7 @@ 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 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #11 ret ptr %call } @@ -1395,12 +1323,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 +declare noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef) #7 ; 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 { @@ -1410,7 +1338,7 @@ entry: 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 + %_M_t = getelementptr inbounds nuw %"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) @@ -1418,7 +1346,7 @@ entry: } ; 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 +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)) #8 ; 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 { @@ -1441,17 +1369,29 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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 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 + %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) #11 + store ptr %call, ptr %__a.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorISt13_Rb_tree_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; 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.i = alloca ptr, align 8 + %__p.addr.i3 = alloca ptr, align 8 + %__args.addr.i4 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__node.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -1460,30 +1400,31 @@ entry: 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 + %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) #11 %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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call2, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i3, align 8 + store ptr %5, ptr %__args.addr.i4, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i3, align 8 + %7 = load ptr, ptr %__args.addr.i4, align 8 + %8 = load ptr, ptr %7, align 8 + store ptr %8, ptr %6, align 8 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1492,83 +1433,51 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 230584300921369395 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 461168601842738790 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #15 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #15 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 40 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #16 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 +declare void @_ZSt28__throw_bad_array_new_lengthv() #9 -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #9 -; 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: nobuiltin allocsize(0) +declare noundef nonnull ptr @_Znwm(i64 noundef) #10 ; 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 { +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 #2 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"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 @@ -1581,56 +1490,48 @@ 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 + %_M_impl = getelementptr inbounds nuw %"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 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 + %_M_left = getelementptr inbounds nuw %"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 + call void @_ZNSt23_Rb_tree_const_iteratorIPK1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #11 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #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 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 + %_M_node = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { nounwind } +attributes #12 = { noreturn nounwind } +attributes #13 = { builtin nounwind } +attributes #14 = { nounwind willreturn memory(read) } +attributes #15 = { noreturn } +attributes #16 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1640,7 +1541,7 @@ attributes #17 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index e57ec95f6..f76e7c8e3 100644 --- a/test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1BC2Ev = comdat any @@ -13,13 +13,13 @@ $_ZN1A1fEPi = comdat any $_ZTV1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -29,12 +29,12 @@ $_ZTV1A = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -182,8 +182,8 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 store ptr %call, ptr %pb, align 8 %0 = load ptr, ptr %pb, align 8 %1 = load ptr, ptr %ptr, align 8 @@ -197,24 +197,24 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #6 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -243,14 +243,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -260,4 +259,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index c5a740c45..ba41f6c5b 100644 --- a/test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1AC2Ev = comdat any @@ -13,16 +13,16 @@ $_ZN1B1fEPi = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any -$_ZTV1B = comdat any +$_ZTS1A = comdat any -$_ZTS1B = comdat any +$_ZTV1B = comdat any $_ZTI1B = comdat any +$_ZTS1B = 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 @@ -31,13 +31,13 @@ $_ZTI1B = comdat any @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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x ptr] +@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -186,8 +186,8 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 store ptr %call, ptr %pa, align 8 %0 = load ptr, ptr %pa, align 8 %1 = load ptr, ptr %i, align 8 @@ -196,8 +196,8 @@ entry: %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 + %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #6 store ptr %call1, ptr %pb, align 8 %3 = load ptr, ptr %pb, align 8 %4 = load ptr, ptr %j, align 8 @@ -211,24 +211,24 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #6 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -266,14 +266,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -283,4 +282,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index e4d3c664d..092b93096 100644 --- a/test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1BC2Ev = comdat any @@ -17,13 +17,13 @@ $_ZN1A1gEPf = comdat any $_ZTV1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -35,12 +35,12 @@ $_ZTV1A = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -190,8 +190,8 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 store ptr %call, ptr %p, align 8 %0 = load ptr, ptr %p, align 8 %1 = load ptr, ptr %i, align 8 @@ -211,24 +211,24 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #6 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV1B, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -300,14 +300,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -317,4 +316,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 904c42d2e..e06de0d16 100644 --- a/test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1BC2Ev = comdat any @@ -13,13 +13,13 @@ $_ZN1A1fEPi = comdat any $_ZTV1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -29,12 +29,12 @@ $_ZTV1A = comdat any @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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -182,8 +182,8 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 store ptr %call, ptr %pb, align 8 %0 = load ptr, ptr %pb, align 8 %1 = load ptr, ptr %ptr, align 8 @@ -197,24 +197,24 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #6 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -246,14 +246,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -263,4 +262,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc b/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc index a344a24c4..330d53ada 100644 --- a/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -51,31 +52,19 @@ $_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 +$_ZNSt15__new_allocatorI1AE10deallocateEPS0_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 +$_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any +$_ZNSt15__new_allocatorIP1AED2Ev = comdat any -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any +$_ZNSt15__new_allocatorI1AED2Ev = comdat any $_ZNSt5dequeI1ASaIS0_EEC2Ev = comdat any @@ -85,12 +74,8 @@ $_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 @@ -101,30 +86,18 @@ $_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 +$_ZNSt15__new_allocatorIP1AE8allocateEmPKv = 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__new_allocatorI1AE8allocateEmPKv = 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 @@ -137,12 +110,8 @@ $_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 @@ -161,7 +130,9 @@ $_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 +$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_S8_S6_ = comdat any + +$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_ = comdat any $_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any @@ -169,7 +140,7 @@ $_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 +$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_S8_S6_ = comdat any $_ZNSt5dequeI1ASaIS0_EE4backEv = comdat any @@ -179,31 +150,24 @@ $_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 +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 { @@ -338,24 +302,8 @@ entry: 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 { +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 @@ -371,7 +319,7 @@ entry: 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #10 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 @@ -395,7 +343,7 @@ invoke.cont2: ; preds = %invoke.cont1 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 + call void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #10 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -406,7 +354,7 @@ lpad: ; preds = %invoke.cont2, %invo 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 + call void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -417,25 +365,25 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %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 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 + %c = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -447,7 +395,7 @@ entry: 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 + %c = getelementptr inbounds nuw %"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 @@ -461,8 +409,8 @@ 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 + %c = getelementptr inbounds nuw %"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) #10 ret ptr %call } @@ -472,19 +420,19 @@ 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 + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeI1ASaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) #10 ret void } @@ -502,29 +450,29 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 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 + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %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) #10 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %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) #15 + call void @__clang_call_terminate(ptr %1) #11 unreachable } @@ -532,38 +480,42 @@ terminate.lpad: ; preds = %entry 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 + %__first.indirect_addr = alloca ptr, align 8 + %__last.indirect_addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_addr, align 8 + store ptr %__last, ptr %__last.indirect_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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #10 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #10 ret void } @@ -573,14 +525,14 @@ 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_impl = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #10 + call void @_ZSt9terminatev() #11 unreachable } @@ -588,70 +540,70 @@ 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 + %_M_node4 = getelementptr inbounds nuw %"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 + 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) #10 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map6 = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #10 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 + %_M_impl8 = getelementptr inbounds nuw %"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) #10 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first3 = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_last4 = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node5 = getelementptr inbounds nuw %"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 @@ -681,12 +633,12 @@ for.cond: ; preds = %for.inc, %entry 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #10 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 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %5, i32 1 store ptr %incdec.ptr, ptr %__n, align 8 br label %for.cond, !llvm.loop !6 @@ -697,6 +649,10 @@ for.end: ; preds = %for.cond ; 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.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -705,78 +661,82 @@ entry: 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 + call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 ret void -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont2 invoke.cont2: ; preds = %invoke.cont ret void -terminate.lpad: ; preds = %invoke.cont, %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; preds = %entry + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #11 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: @@ -800,59 +760,42 @@ cond.end: ; preds = %cond.false, %cond.t } ; 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 ; 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 { +define linkonce_odr dso_local void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind noalias writable sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %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) #10 + store ptr %agg.result, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -862,67 +805,38 @@ 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_impl = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - 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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -931,10 +845,10 @@ entry: } ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 -; 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -943,16 +857,16 @@ entry: 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 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 + %_M_impl = getelementptr inbounds nuw %"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) #10 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 @@ -966,7 +880,7 @@ lpad: ; preds = %entry 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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -977,14 +891,19 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 ret void } @@ -1014,30 +933,30 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size6 = getelementptr inbounds nuw %"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 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map10 = getelementptr inbounds nuw %"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 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size12 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %add.ptr14 = getelementptr inbounds nuw 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 @@ -1058,21 +977,21 @@ lpad: ; preds = %entry 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 + %14 = call ptr @__cxa_begin_catch(ptr %exn) #10 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map16 = getelementptr inbounds nuw %"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 + %_M_impl17 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size18 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #10 + %_M_impl19 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map20 = getelementptr inbounds nuw %"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 + %_M_impl21 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size22 = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -1089,34 +1008,34 @@ 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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #10 + %_M_impl26 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #10 + %_M_impl28 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start29 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl30 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start31 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish33 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 + %_M_first34 = getelementptr inbounds nuw %"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 + %add.ptr36 = getelementptr inbounds nuw %class.A, ptr %23, i64 %rem + %_M_impl37 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish38 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 + %_M_cur39 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 store ptr %add.ptr36, ptr %_M_cur39, align 8 ret void @@ -1131,62 +1050,43 @@ 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 + call void @__clang_call_terminate(ptr %26) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_map = getelementptr inbounds nuw %"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 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_start = getelementptr inbounds nuw %"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) #10 + %_M_finish = getelementptr inbounds nuw %"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) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 store ptr null, ptr %_M_node, align 8 ret void } @@ -1224,6 +1124,10 @@ return: ; preds = %if.end, %if.then ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i3 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %__map_alloc = alloca %"class.std::allocator.0", align 1 @@ -1232,23 +1136,34 @@ entry: 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 + call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i5 = invoke noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m.exit + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 + ret ptr %call.i5 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %3 = 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 + %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 + store ptr %__map_alloc, ptr %this.addr.i3, align 8 + %this1.i4 = load ptr, ptr %this.addr.i3, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i4) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -1293,7 +1208,7 @@ invoke.cont: ; preds = %for.body for.inc: ; preds = %invoke.cont %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %4, i32 1 store ptr %incdec.ptr, ptr %__cur, align 8 br label %for.cond, !llvm.loop !8 @@ -1308,11 +1223,11 @@ lpad: ; preds = %for.body catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 + %8 = call ptr @__cxa_begin_catch(ptr %exn) #10 %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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #10 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad2 for.end: ; preds = %for.cond @@ -1345,7 +1260,7 @@ 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 + call void @__clang_call_terminate(ptr %15) #11 unreachable unreachable: ; preds = %catch @@ -1365,37 +1280,25 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first2 = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #10 %add.ptr = getelementptr inbounds %class.A, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1404,64 +1307,62 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #17 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 +declare void @_ZSt28__throw_bad_array_new_lengthv() #7 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #13 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1470,28 +1371,29 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #17 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 + ret ptr %call5 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1504,141 +1406,145 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i11 = alloca ptr, align 8 + %__args.addr.i12 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, 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_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur7 = getelementptr inbounds nuw %"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 %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i11, align 8 + store ptr %6, ptr %__args.addr.i12, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i11, align 8 + %8 = load ptr, ptr %__args.addr.i12, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #10 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 + %_M_cur10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 + %9 = load ptr, ptr %_M_cur10, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, 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) + %10 = 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) %10) 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.i = alloca ptr, align 8 + %__p.addr.i18 = alloca ptr, align 8 + %__args.addr.i19 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %call = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + store ptr %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i18, align 8 + store ptr %5, ptr %__args.addr.i19, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i18, align 8 + %7 = load ptr, ptr %__args.addr.i19, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #10 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_node11 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 + %8 = load ptr, ptr %_M_node11, align 8 + %add.ptr12 = getelementptr inbounds ptr, ptr %8, 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) #10 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish14 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 + %_M_cur17 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 + store ptr %9, 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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -1648,11 +1554,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #10 ret i64 %call } @@ -1662,13 +1568,13 @@ 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 + %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) #10 + %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #10 ret i64 %call2 } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #12 +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 { @@ -1680,15 +1586,15 @@ entry: %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 @@ -1714,80 +1620,83 @@ entry: %__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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #10 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 3 + %5 = load ptr, ptr %_M_node2, align 8 + %tobool = icmp ne ptr %5, null + %conv = zext i1 %tobool to i64 + %sub = sub nsw i64 %sub.ptr.div, %conv + %mul = mul nsw i64 %call, %sub %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 0 + %7 = load ptr, ptr %_M_cur, align 8 + %8 = load ptr, ptr %__x.addr, align 8 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %sub.ptr.lhs.cast3 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast4 = ptrtoint ptr %9 to i64 + %sub.ptr.sub5 = sub i64 %sub.ptr.lhs.cast3, %sub.ptr.rhs.cast4 + %sub.ptr.div6 = sdiv exact i64 %sub.ptr.sub5, 8 + %add = add nsw i64 %mul, %sub.ptr.div6 %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 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 2 + %11 = load ptr, ptr %_M_last, align 8 + %12 = load ptr, ptr %__y.addr, align 8 + %_M_cur7 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %_M_cur7, align 8 + %sub.ptr.lhs.cast8 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast9 = ptrtoint ptr %13 to i64 + %sub.ptr.sub10 = sub i64 %sub.ptr.lhs.cast8, %sub.ptr.rhs.cast9 + %sub.ptr.div11 = sdiv exact i64 %sub.ptr.sub10, 8 + %add12 = add nsw i64 %add, %sub.ptr.div11 + ret i64 %add12 } ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #11 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: @@ -1818,16 +1727,6 @@ return: ; preds = %if.end, %if.then 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: @@ -1841,16 +1740,16 @@ entry: %__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 + %storedv = zext i1 %__add_at_front to i8 + store i8 %storedv, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -1862,8 +1761,8 @@ entry: %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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 @@ -1871,19 +1770,19 @@ entry: 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 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size8 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %loadedv = trunc i8 %9 to i1 + br i1 %loadedv, label %cond.true, label %cond.false cond.true: ; preds = %if.then %10 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1894,24 +1793,24 @@ cond.false: ; preds = %if.then 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 + %add.ptr9 = getelementptr inbounds nuw 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 + %_M_impl10 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start11 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 + %_M_node12 = getelementptr inbounds nuw %"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 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 + %_M_node17 = getelementptr inbounds nuw %"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 + %_M_impl18 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish19 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 + %_M_node20 = getelementptr inbounds nuw %"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 @@ -1919,18 +1818,18 @@ if.then14: ; preds = %cond.end 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 + %_M_impl22 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start23 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 + %_M_node24 = getelementptr inbounds nuw %"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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish26 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 + %_M_node27 = getelementptr inbounds nuw %"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 + %add.ptr29 = getelementptr inbounds nuw 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 @@ -1938,11 +1837,11 @@ 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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size33 = getelementptr inbounds nuw %"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 + %_M_impl34 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size35 = getelementptr inbounds nuw %"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 @@ -1956,10 +1855,10 @@ if.else31: ; preds = %entry %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 + %add.ptr42 = getelementptr inbounds nuw 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 + %loadedv43 = trunc i8 %26 to i1 + br i1 %loadedv43, label %cond.true44, label %cond.false45 cond.true44: ; preds = %if.else31 %27 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1970,48 +1869,48 @@ cond.false45: ; preds = %if.else31 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 + %add.ptr48 = getelementptr inbounds nuw 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 + %_M_impl49 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start50 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 + %_M_node51 = getelementptr inbounds nuw %"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 + %_M_impl52 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish53 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 + %_M_node54 = getelementptr inbounds nuw %"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 + %_M_impl57 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map58 = getelementptr inbounds nuw %"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 + %_M_impl59 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size60 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #10 %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 + %_M_impl61 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map62 = getelementptr inbounds nuw %"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 + %_M_impl63 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size64 = getelementptr inbounds nuw %"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 + %_M_impl66 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start67 = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #10 + %_M_impl68 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish69 = getelementptr inbounds nuw %"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.ptr70 = getelementptr inbounds nuw 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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #10 ret void } @@ -2061,11 +1960,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #10 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #10 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #10 %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 @@ -2128,12 +2027,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AS4_EEPT0_PT_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat align 2 { entry: %__first.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -2150,8 +2049,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2159,17 +2058,45 @@ if.then: ; preds = %entry %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.end3 + +if.else: ; preds = %entry + %6 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %6, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %7 = load ptr, ptr %__result.addr, align 8 + %8 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %7, ptr noundef %8) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end3 + +if.end3: ; preds = %if.end, %if.then + %9 = load ptr, ptr %__result.addr, align 8 + %10 = load i64, ptr %_Num, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %9, i64 %10 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #9 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %__to, ptr noundef %__from) #2 comdat align 2 { +entry: + %__to.addr = alloca ptr, align 8 + %__from.addr = alloca ptr, align 8 + store ptr %__to, ptr %__to.addr, align 8 + store ptr %__from, ptr %__from.addr, align 8 + %0 = load ptr, ptr %__from.addr, align 8 + %1 = load ptr, ptr %0, align 8 + %2 = load ptr, ptr %__to.addr, align 8 + store ptr %1, ptr %2, align 8 + ret void +} ; 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 { @@ -2181,11 +2108,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #10 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #10 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #10 %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 @@ -2219,12 +2146,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_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 { +define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AS4_EEPT0_PT_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 @@ -2241,8 +2168,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2253,14 +2180,29 @@ if.then: ; preds = %entry %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.end4 + +if.else: ; preds = %entry + %7 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %7, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %8 = load ptr, ptr %__result.addr, align 8 + %add.ptr3 = getelementptr inbounds ptr, ptr %8, i64 -1 + %9 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIP1AS4_EEvPT_PT0_(ptr noundef %add.ptr3, ptr noundef %9) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end4 + +if.end4: ; preds = %if.end, %if.then + %10 = load ptr, ptr %__result.addr, align 8 + %11 = load i64, ptr %_Num, align 8 + %idx.neg5 = sub i64 0, %11 + %add.ptr6 = getelementptr inbounds ptr, ptr %10, i64 %idx.neg5 + ret ptr %add.ptr6 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -2270,9 +2212,9 @@ entry: %__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 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %__tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %call = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorI1ARS0_PS0_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #10 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #10 ret ptr %call2 } @@ -2282,26 +2224,26 @@ 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #10 + %_M_last = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_cur3 = getelementptr inbounds nuw %"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 @@ -2314,7 +2256,7 @@ 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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 %0 = load ptr, ptr %_M_cur, align 8 ret ptr %0 } @@ -2322,33 +2264,44 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i10 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, 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::_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish5 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 + %_M_cur6 = getelementptr inbounds nuw %"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 + %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) #10 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_cur9 = getelementptr inbounds nuw %"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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %3, ptr %__p.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i10, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i10, align 8 br label %if.end if.else: ; preds = %entry @@ -2362,100 +2315,76 @@ if.end: ; preds = %invoke.cont, %if.th ret void terminate.lpad: ; preds = %if.else - %4 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } catch ptr null - %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #15 + %8 = extractvalue { ptr, i32 } %7, 0 + call void @__clang_call_terminate(ptr %8) #11 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.i = alloca ptr, align 8 + %__p.addr.i14 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, 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::_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %0) #10 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish5 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish3, ptr noundef %add.ptr) #10 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish7 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %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) #10 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish12 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 3 + %_M_cur13 = getelementptr inbounds nuw %"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() + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %3, ptr %__p.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i14, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i14, 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 = { 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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #10 = { nounwind } +attributes #11 = { noreturn nounwind } +attributes #12 = { builtin nounwind } +attributes #13 = { noreturn } +attributes #14 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2465,7 +2394,7 @@ attributes #17 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index f87961b2d..1036c6cdb 100644 --- a/test_cases_bc/basic_cpp_tests/stack-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/stack-2.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/stack-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -51,31 +52,19 @@ $_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 +$_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_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 +$_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m = comdat any +$_ZNSt15__new_allocatorIPPK1AED2Ev = comdat any -$_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev = comdat any - -$_ZNSaIPK1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev = comdat any +$_ZNSt15__new_allocatorIPK1AED2Ev = comdat any $_ZNSt5dequeIPK1ASaIS2_EEC2Ev = comdat any @@ -85,12 +74,8 @@ $_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 @@ -101,19 +86,11 @@ $_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 +$_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv = 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__new_allocatorIPK1AE8allocateEmPKv = comdat any $_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv = comdat any @@ -121,14 +98,10 @@ $_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 @@ -139,12 +112,8 @@ $_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 @@ -163,7 +132,9 @@ $_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 +$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_SA_S8_ = comdat any + +$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_ = comdat any $_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any @@ -171,7 +142,7 @@ $_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 +$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_SA_S8_ = comdat any $_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv = comdat any @@ -179,31 +150,24 @@ $_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 +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 { @@ -338,24 +302,8 @@ entry: 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 { +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 @@ -372,7 +320,7 @@ entry: 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #10 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 @@ -398,7 +346,7 @@ invoke.cont2: ; preds = %invoke.cont1 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 + call void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #10 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -409,7 +357,7 @@ lpad: ; preds = %invoke.cont2, %invo 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 + call void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -420,25 +368,25 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEEC2IS5_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %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 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 + %c = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -450,7 +398,7 @@ entry: 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 + %c = getelementptr inbounds nuw %"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 @@ -464,8 +412,8 @@ 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 + %c = getelementptr inbounds nuw %"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) #10 ret ptr %call } @@ -475,19 +423,19 @@ 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 + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeIPK1ASaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) #10 ret void } @@ -505,29 +453,29 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 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 + call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %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) #10 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %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) #15 + call void @__clang_call_terminate(ptr %1) #11 unreachable } @@ -535,38 +483,42 @@ terminate.lpad: ; preds = %entry 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 + %__first.indirect_addr = alloca ptr, align 8 + %__last.indirect_addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_addr, align 8 + store ptr %__last, ptr %__last.indirect_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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #10 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind noalias writable 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #10 ret void } @@ -576,14 +528,14 @@ 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_impl = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #10 + call void @_ZSt9terminatev() #11 unreachable } @@ -591,70 +543,70 @@ 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #2 comdat align 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 + %_M_node4 = getelementptr inbounds nuw %"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 + 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) #10 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map6 = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #10 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 + %_M_impl8 = getelementptr inbounds nuw %"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) #10 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first3 = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_last4 = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node5 = getelementptr inbounds nuw %"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 @@ -684,12 +636,12 @@ for.cond: ; preds = %for.inc, %entry 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #10 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 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %5, i32 1 store ptr %incdec.ptr, ptr %__n, align 8 br label %for.cond, !llvm.loop !6 @@ -700,6 +652,10 @@ for.end: ; preds = %for.cond ; 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.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -708,78 +664,82 @@ entry: 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 + call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load ptr, ptr %__p.addr.i, align 8 + %4 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %3, i64 noundef %4) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 ret void -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } +terminate.lpad: ; No predecessors! + %5 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + %6 = extractvalue { ptr, i32 } %5, 0 + call void @__clang_call_terminate(ptr %6) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %0, ptr %__p.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef %3) + br label %invoke.cont2 invoke.cont2: ; preds = %invoke.cont ret void -terminate.lpad: ; preds = %invoke.cont, %entry - %1 = landingpad { ptr, i32 } +terminate.lpad: ; preds = %entry + %4 = landingpad { ptr, i32 } catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #11 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: @@ -803,59 +763,42 @@ cond.end: ; preds = %cond.false, %cond.t } ; 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 ; 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 { +define linkonce_odr dso_local void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind noalias writable sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %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) #10 + store ptr %agg.result, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -865,67 +808,38 @@ 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_impl = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - 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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -934,10 +848,10 @@ entry: } ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 -; 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -946,16 +860,16 @@ entry: 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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #0 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 + %_M_impl = getelementptr inbounds nuw %"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) #10 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 @@ -969,7 +883,7 @@ lpad: ; preds = %entry 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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -980,14 +894,19 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 ret void } @@ -1017,30 +936,30 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size6 = getelementptr inbounds nuw %"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 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map10 = getelementptr inbounds nuw %"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 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size12 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %add.ptr14 = getelementptr inbounds nuw 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 @@ -1061,21 +980,21 @@ lpad: ; preds = %entry 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 + %14 = call ptr @__cxa_begin_catch(ptr %exn) #10 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map16 = getelementptr inbounds nuw %"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 + %_M_impl17 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size18 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #10 + %_M_impl19 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map20 = getelementptr inbounds nuw %"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 + %_M_impl21 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size22 = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -1092,34 +1011,34 @@ 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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #10 + %_M_impl26 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #10 + %_M_impl28 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start29 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl30 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start31 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish33 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 + %_M_first34 = getelementptr inbounds nuw %"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 + %add.ptr36 = getelementptr inbounds nuw ptr, ptr %23, i64 %rem + %_M_impl37 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish38 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 + %_M_cur39 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 store ptr %add.ptr36, ptr %_M_cur39, align 8 ret void @@ -1134,62 +1053,43 @@ 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 + call void @__clang_call_terminate(ptr %26) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_map = getelementptr inbounds nuw %"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 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_start = getelementptr inbounds nuw %"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) #10 + %_M_finish = getelementptr inbounds nuw %"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) #10 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_last = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 store ptr null, ptr %_M_node, align 8 ret void } @@ -1227,6 +1127,10 @@ return: ; preds = %if.end, %if.then ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i3 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %__map_alloc = alloca %"class.std::allocator.0", align 1 @@ -1235,23 +1139,34 @@ entry: 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 + call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr dead_on_unwind writable sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + store ptr %__map_alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i5 = invoke noundef ptr @_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m.exit + store ptr %__map_alloc, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #10 + ret ptr %call.i5 lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %3 = 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 + %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 + store ptr %__map_alloc, ptr %this.addr.i3, align 8 + %this1.i4 = load ptr, ptr %this.addr.i3, align 8 + call void @_ZNSt15__new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i4) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -1296,7 +1211,7 @@ invoke.cont: ; preds = %for.body for.inc: ; preds = %invoke.cont %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %4, i32 1 store ptr %incdec.ptr, ptr %__cur, align 8 br label %for.cond, !llvm.loop !8 @@ -1311,11 +1226,11 @@ lpad: ; preds = %for.body catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 + %8 = call ptr @__cxa_begin_catch(ptr %exn) #10 %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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #10 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad2 for.end: ; preds = %for.cond @@ -1348,7 +1263,7 @@ 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 + call void @__clang_call_terminate(ptr %15) #11 unreachable unreachable: ; preds = %catch @@ -1368,37 +1283,25 @@ entry: 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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_first2 = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #10 %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + %_M_last = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1407,64 +1310,62 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #17 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 +declare void @_ZSt28__throw_bad_array_new_lengthv() #7 + +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #7 ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #13 +declare noundef nonnull ptr @_Znwm(i64 noundef) #8 ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, 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::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"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 + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %call, ptr %__n.addr.i, align 8 + %0 = load ptr, ptr %__a.addr.i, align 8 + %1 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + ret ptr %call.i } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1473,28 +1374,29 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #17 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 + ret ptr %call5 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1520,114 +1422,136 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i11 = alloca ptr, align 8 + %__args.addr.i12 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur7 = getelementptr inbounds nuw %"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 %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i11, align 8 + store ptr %6, ptr %__args.addr.i12, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i11, align 8 + %8 = load ptr, ptr %__args.addr.i12, align 8 + %9 = load ptr, ptr %8, align 8 + store ptr %9, ptr %7, align 8 + %_M_impl8 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish9 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 + %_M_cur10 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 + %10 = load ptr, ptr %_M_cur10, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, 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) + %11 = 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) %11) 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 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.i = alloca ptr, align 8 + %__p.addr.i18 = alloca ptr, align 8 + %__args.addr.i19 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %call = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 %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 + 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish6 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + store ptr %_M_impl4, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i18, align 8 + store ptr %5, ptr %__args.addr.i19, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i18, align 8 + %7 = load ptr, ptr %__args.addr.i19, align 8 + %8 = load ptr, ptr %7, align 8 + store ptr %8, ptr %6, align 8 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_node11 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 + %9 = load ptr, ptr %_M_node11, align 8 + %add.ptr12 = getelementptr inbounds ptr, ptr %9, 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) #10 + %_M_impl13 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish14 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 + %10 = load ptr, ptr %_M_first, align 8 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 + %_M_cur17 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 + store ptr %10, ptr %_M_cur17, align 8 ret void } @@ -1638,40 +1562,23 @@ entry: %__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 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 8 %__tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #10 + %call = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #10 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #10 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #10 ret i64 %call } @@ -1681,13 +1588,13 @@ 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 + %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) #10 + %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #10 ret i64 %call2 } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #12 +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 { @@ -1699,15 +1606,15 @@ entry: %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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 @@ -1733,80 +1640,83 @@ entry: %__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 + %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #10 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_node1 = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 3 + %5 = load ptr, ptr %_M_node2, align 8 + %tobool = icmp ne ptr %5, null + %conv = zext i1 %tobool to i64 + %sub = sub nsw i64 %sub.ptr.div, %conv + %mul = mul nsw i64 %call, %sub %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 0 + %7 = load ptr, ptr %_M_cur, align 8 + %8 = load ptr, ptr %__x.addr, align 8 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %_M_first, align 8 + %sub.ptr.lhs.cast3 = ptrtoint ptr %7 to i64 + %sub.ptr.rhs.cast4 = ptrtoint ptr %9 to i64 + %sub.ptr.sub5 = sub i64 %sub.ptr.lhs.cast3, %sub.ptr.rhs.cast4 + %sub.ptr.div6 = sdiv exact i64 %sub.ptr.sub5, 8 + %add = add nsw i64 %mul, %sub.ptr.div6 %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 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 2 + %11 = load ptr, ptr %_M_last, align 8 + %12 = load ptr, ptr %__y.addr, align 8 + %_M_cur7 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %_M_cur7, align 8 + %sub.ptr.lhs.cast8 = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast9 = ptrtoint ptr %13 to i64 + %sub.ptr.sub10 = sub i64 %sub.ptr.lhs.cast8, %sub.ptr.rhs.cast9 + %sub.ptr.div11 = sdiv exact i64 %sub.ptr.sub10, 8 + %add12 = add nsw i64 %add, %sub.ptr.div11 + ret i64 %add12 } ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #11 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: @@ -1837,16 +1747,6 @@ return: ; preds = %if.end, %if.then 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: @@ -1860,16 +1760,16 @@ entry: %__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 + %storedv = zext i1 %__add_at_front to i8 + store i8 %storedv, 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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 + %_M_node3 = getelementptr inbounds nuw %"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 @@ -1881,8 +1781,8 @@ entry: %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 + %_M_impl5 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size = getelementptr inbounds nuw %"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 @@ -1890,19 +1790,19 @@ entry: 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 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map = getelementptr inbounds nuw %"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 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size8 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 + %loadedv = trunc i8 %9 to i1 + br i1 %loadedv, label %cond.true, label %cond.false cond.true: ; preds = %if.then %10 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1913,24 +1813,24 @@ cond.false: ; preds = %if.then 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 + %add.ptr9 = getelementptr inbounds nuw 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 + %_M_impl10 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start11 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 + %_M_node12 = getelementptr inbounds nuw %"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 + %_M_impl15 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 + %_M_node17 = getelementptr inbounds nuw %"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 + %_M_impl18 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish19 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 + %_M_node20 = getelementptr inbounds nuw %"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 @@ -1938,18 +1838,18 @@ if.then14: ; preds = %cond.end 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 + %_M_impl22 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start23 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 + %_M_node24 = getelementptr inbounds nuw %"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 + %_M_impl25 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish26 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 + %_M_node27 = getelementptr inbounds nuw %"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 + %add.ptr29 = getelementptr inbounds nuw 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 @@ -1957,11 +1857,11 @@ 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 + %_M_impl32 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size33 = getelementptr inbounds nuw %"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 + %_M_impl34 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size35 = getelementptr inbounds nuw %"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 @@ -1975,10 +1875,10 @@ if.else31: ; preds = %entry %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 + %add.ptr42 = getelementptr inbounds nuw 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 + %loadedv43 = trunc i8 %26 to i1 + br i1 %loadedv43, label %cond.true44, label %cond.false45 cond.true44: ; preds = %if.else31 %27 = load i64, ptr %__nodes_to_add.addr, align 8 @@ -1989,48 +1889,48 @@ cond.false45: ; preds = %if.else31 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 + %add.ptr48 = getelementptr inbounds nuw 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 + %_M_impl49 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start50 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 + %_M_node51 = getelementptr inbounds nuw %"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 + %_M_impl52 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish53 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 + %_M_node54 = getelementptr inbounds nuw %"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 + %_M_impl57 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map58 = getelementptr inbounds nuw %"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 + %_M_impl59 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size60 = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #10 %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 + %_M_impl61 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map62 = getelementptr inbounds nuw %"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 + %_M_impl63 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_map_size64 = getelementptr inbounds nuw %"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 + %_M_impl66 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_start67 = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #10 + %_M_impl68 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish69 = getelementptr inbounds nuw %"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.ptr70 = getelementptr inbounds nuw 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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #10 ret void } @@ -2080,11 +1980,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #10 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #10 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #10 %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 @@ -2147,12 +2047,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_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 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AS6_EEPT0_PT_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat align 2 { entry: %__first.addr = alloca ptr, align 8 %__last.addr = alloca ptr, align 8 @@ -2169,8 +2069,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2178,17 +2078,45 @@ if.then: ; preds = %entry %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.end3 + +if.else: ; preds = %entry + %6 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %6, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %7 = load ptr, ptr %__result.addr, align 8 + %8 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %7, ptr noundef %8) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end3 + +if.end3: ; preds = %if.end, %if.then + %9 = load ptr, ptr %__result.addr, align 8 + %10 = load i64, ptr %_Num, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %9, i64 %10 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #9 + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %__to, ptr noundef %__from) #2 comdat align 2 { +entry: + %__to.addr = alloca ptr, align 8 + %__from.addr = alloca ptr, align 8 + store ptr %__to, ptr %__to.addr, align 8 + store ptr %__from, ptr %__from.addr, align 8 + %0 = load ptr, ptr %__from.addr, align 8 + %1 = load ptr, ptr %0, align 8 + %2 = load ptr, ptr %__to.addr, align 8 + store ptr %1, ptr %2, align 8 + ret void +} ; 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 { @@ -2200,11 +2128,11 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #10 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #10 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #10 %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 @@ -2238,12 +2166,12 @@ entry: %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) + %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_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 { +define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AS6_EEPT0_PT_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 @@ -2260,8 +2188,8 @@ entry: %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 + %cmp = icmp sgt i64 %2, 1 + br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %3 = load ptr, ptr %__result.addr, align 8 @@ -2272,14 +2200,29 @@ if.then: ; preds = %entry %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.end4 + +if.else: ; preds = %entry + %7 = load i64, ptr %_Num, align 8 + %cmp1 = icmp eq i64 %7, 1 + br i1 %cmp1, label %if.then2, label %if.end + +if.then2: ; preds = %if.else + %8 = load ptr, ptr %__result.addr, align 8 + %add.ptr3 = getelementptr inbounds ptr, ptr %8, i64 -1 + %9 = load ptr, ptr %__first.addr, align 8 + call void @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE12__assign_oneIPPK1AS6_EEvPT_PT0_(ptr noundef %add.ptr3, ptr noundef %9) 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 +if.end: ; preds = %if.then2, %if.else + br label %if.end4 + +if.end4: ; preds = %if.end, %if.then + %10 = load ptr, ptr %__result.addr, align 8 + %11 = load i64, ptr %_Num, align 8 + %idx.neg5 = sub i64 0, %11 + %add.ptr6 = getelementptr inbounds ptr, ptr %10, i64 %idx.neg5 + ret ptr %add.ptr6 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -2288,26 +2231,26 @@ 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 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_first = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #10 + %_M_last = getelementptr inbounds nuw %"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 + %_M_cur2 = getelementptr inbounds nuw %"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 + %_M_cur3 = getelementptr inbounds nuw %"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 @@ -2320,7 +2263,7 @@ 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 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 %0 = load ptr, ptr %_M_cur, align 8 ret ptr %0 } @@ -2328,33 +2271,44 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i10 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, 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::_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"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 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish5 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 + %_M_cur6 = getelementptr inbounds nuw %"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 + %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) #10 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish8 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 + %_M_cur9 = getelementptr inbounds nuw %"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 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %3, ptr %__p.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i10, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i10, align 8 br label %if.end if.else: ; preds = %entry @@ -2368,100 +2322,76 @@ if.end: ; preds = %invoke.cont, %if.th ret void terminate.lpad: ; preds = %if.else - %4 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } catch ptr null - %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #15 + %8 = extractvalue { ptr, i32 } %7, 0 + call void @__clang_call_terminate(ptr %8) #11 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.i = alloca ptr, align 8 + %__p.addr.i14 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, 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::_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 + %_M_impl = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 + %_M_first = getelementptr inbounds nuw %"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 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %0) #10 + %_M_impl2 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish3 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 + %_M_impl4 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish5 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 + %_M_node = getelementptr inbounds nuw %"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 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish3, ptr noundef %add.ptr) #10 + %_M_impl6 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish7 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 3 + %_M_last = getelementptr inbounds nuw %"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 + %_M_impl9 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish10 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 + %_M_cur = getelementptr inbounds nuw %"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 + %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) #10 + %_M_impl11 = getelementptr inbounds nuw %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 + %_M_finish12 = getelementptr inbounds nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 3 + %_M_cur13 = getelementptr inbounds nuw %"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() + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %3, ptr %__p.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i14, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i14, 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 = { 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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #10 = { nounwind } +attributes #11 = { noreturn nounwind } +attributes #12 = { builtin nounwind } +attributes #13 = { noreturn } +attributes #14 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2471,7 +2401,7 @@ attributes #17 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index b6df0a89e..fe1705dc6 100644 --- a/test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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 } @@ -14,18 +15,19 @@ target triple = "x86_64-unknown-linux-gnu" %"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 } +%"class.std::allocator.2" = 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 } +%"class.std::tuple.5" = type { i8 } +%"struct.std::pair.7" = type { i8, i64 } +%"struct.std::__detail::_Mod_range_hashing" = type { i8 } +%"struct.std::__detail::_Select1st" = type { i8 } %"struct.std::_Index_tuple" = type { i8 } -%"struct.std::_Index_tuple.8" = type { i8 } +%"struct.std::_Index_tuple.6" = type { i8 } %"struct.std::integral_constant" = type { i8 } $_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEC2Ev = comdat any @@ -58,18 +60,10 @@ $_ZNSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_M $_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 @@ -90,27 +84,19 @@ $_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 +$_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEES6_Lb0EE10pointer_toERS6_ = comdat any -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE10deallocateERS7_PS6_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10deallocateEPS7_m = comdat any +$_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10deallocateEPS6_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 @@ -118,101 +104,69 @@ $_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiE $_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 +$_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_toERS2_ = comdat any -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev = comdat any +$_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any +$_ZNSt15__new_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 +$_ZNSt15__new_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_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEm = 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 +$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS5_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 +$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE7_M_hashEv = 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__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEmm = 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 +$_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_equalsERS2_mRKNS_16_Hash_node_valueIS4_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_indexERKNS5_16_Hash_node_valueIS3_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_traitsILb0ELb0ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE = 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_traitsILb0ELb0ELb1EEEE13_M_key_equalsERS2_RKNS_16_Hash_node_valueIS4_Lb0EEE = 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__detail10_Select1stclIRKSt4pairIKi1AEEEONS0_10__1st_typeIT_E4typeEOS9_ = 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 +$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS4_Lb0EEEm = comdat any + +$_ZNSt5tupleIJOiEEC2IJiELb1ETnNSt9enable_ifIXclsr4_TCCIXT0_EEE29__is_implicitly_constructibleIDpT_EEEbE4typeELb1EEEDpOS4_ = comdat any $_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_ = comdat any @@ -220,21 +174,11 @@ $_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 +$_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE8allocateEmPKv = comdat any $_ZNSt5tupleIJOiEEC2EOS1_ = comdat any @@ -242,21 +186,21 @@ $_ZNSt4pairIKi1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES6_IJDpT0_E $_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 +$_ZNSt4pairIKi1AEC2IJOiEJLm0EEJETpTnmJEEERSt5tupleIJDpT_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 +$_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_ = comdat any + +$_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_ = 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 +$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeERNS_21_Hash_node_code_cacheILb0EEEm = 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 @@ -270,13 +214,9 @@ $_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiES $_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 +$_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv = comdat any $_ZNSt8__detail19_Node_iterator_baseISt4pairIKi1AELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE = comdat any @@ -284,25 +224,22 @@ $_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiES $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 +@_ZSt19piecewise_construct = linkonce_odr dso_local constant %"struct.std::piecewise_construct_t" zeroinitializer, comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -437,24 +374,8 @@ entry: 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 { +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 @@ -472,21 +393,21 @@ entry: 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 + call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 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 + %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) #11 + %call3 = call ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %amap) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %ref.tmp2, i32 0, i32 0 + %coerce.dive4 = getelementptr inbounds nuw %"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 + 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) #11 + %call5 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #11 + %second = getelementptr inbounds nuw %"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 @@ -498,7 +419,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #11 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -509,7 +430,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -520,24 +441,24 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #2 comdat align 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 + %_M_h = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -549,7 +470,7 @@ entry: 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 + %_M_h = getelementptr inbounds nuw %"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 @@ -557,8 +478,8 @@ entry: 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 { +; Function Attrs: mustprogress 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) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -575,19 +496,19 @@ 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 = 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 + %_M_h = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive2 = getelementptr inbounds nuw %"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 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive4 = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -595,181 +516,151 @@ entry: 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 + %_M_cur = getelementptr inbounds nuw %"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 + call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKi1AELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %1) #11 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.i = alloca ptr, 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_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i) #11 + ret ptr %call.i } -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #2 comdat align 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 + %_M_h = getelementptr inbounds nuw %"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) #11 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 { +; 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_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #2 comdat align 2 { 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 + 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) #11 + call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %_M_single_bucket = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"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) #11 + %_M_element_count = getelementptr inbounds nuw %"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 + %_M_rehash_policy = getelementptr inbounds nuw %"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) #11 + %_M_single_bucket2 = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + 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) #11 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_nxt = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_max_load_factor = getelementptr inbounds nuw %"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 + %_M_next_resize = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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_helperILi1ESt4hashIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -787,25 +678,25 @@ entry: 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 { +; 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_traitsILb0ELb0ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #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 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 + 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) #11 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 + call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %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) #15 + call void @__clang_call_terminate(ptr %1) #12 unreachable } @@ -823,16 +714,16 @@ invoke.cont: ; preds = %entry 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_element_count = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 store ptr null, ptr %_M_nxt, align 8 ret void @@ -840,7 +731,7 @@ 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 + call void @__clang_call_terminate(ptr %3) #12 unreachable } @@ -850,18 +741,18 @@ 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -869,13 +760,13 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 ret void } @@ -899,7 +790,7 @@ 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 + %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #11 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) @@ -915,14 +806,14 @@ 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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 ; 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 { @@ -930,7 +821,7 @@ 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 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 %0 = load ptr, ptr %_M_nxt, align 8 ret ptr %0 } @@ -938,6 +829,11 @@ entry: ; 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.i3 = alloca ptr, align 8 + %__p.addr.i4 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -945,23 +841,20 @@ entry: %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 + %add.ptr = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i) #11 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call.i, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i3, align 8 + store ptr %2, ptr %__p.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i3, align 8 + %3 = load ptr, ptr %__p.addr.i4, align 8 + %4 = 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 %4) ret void } @@ -975,20 +868,12 @@ entry: 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 %__ptr = alloca ptr, align 8 @@ -996,24 +881,18 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEES6_Lb0EE10pointer_toERS6_(ptr noundef nonnull align 8 dereferenceable(24) %0) #11 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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10deallocateEPS6_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) ret void } @@ -1032,7 +911,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #11 ret ptr %call } @@ -1042,12 +921,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEES6_Lb0EE10pointer_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 @@ -1055,39 +934,25 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10deallocateEPS6_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 24 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #6 ; 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 { @@ -1125,7 +990,7 @@ entry: 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 + %_M_single_bucket = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 %cmp = icmp eq ptr %0, %_M_single_bucket ret i1 %cmp } @@ -1133,11 +998,19 @@ entry: ; 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.i8 = alloca ptr, align 8 + %this.addr.i6 = alloca ptr, align 8 + %this.addr.i4 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %__alloc = alloca %"class.std::allocator.2", align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 store ptr %this, ptr %this.addr, align 8 @@ -1145,27 +1018,41 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %0) #11 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 + store ptr %__alloc, ptr %this.addr.i, align 8 + store ptr %call2, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i8, align 8 + %this1.i9 = load ptr, ptr %this.addr.i8, align 8 %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 + store ptr %__alloc, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 %2, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 + store ptr %__alloc, ptr %this.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i4, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i5) #11 ret void -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } +lpad: ; No predecessors! + %6 = 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 + %7 = extractvalue { ptr, i32 } %6, 0 + store ptr %7, ptr %exn.slot, align 8 + %8 = extractvalue { ptr, i32 } %6, 1 + store i32 %8, ptr %ehselector.slot, align 4 + store ptr %__alloc, ptr %this.addr.i6, align 8 + %this1.i7 = load ptr, ptr %this.addr.i6, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i7) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -1177,7 +1064,7 @@ eh.resume: ; preds = %lpad } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_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 @@ -1185,99 +1072,47 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - 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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1288,6 +1123,8 @@ entry: ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 @@ -1297,7 +1134,7 @@ entry: %__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 + %ref.tmp6 = alloca %"class.std::tuple.5", align 1 %__pos = alloca %"struct.std::__detail::_Node_iterator", align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -1310,66 +1147,69 @@ entry: %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) + %3 = 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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %2, i64 noundef %3) 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) + %4 = load ptr, ptr %__h, align 8 + %5 = load i64, ptr %__bkt, align 8 + %6 = load ptr, ptr %__k.addr, align 8 + %7 = 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) %4, i64 noundef %5, ptr noundef nonnull align 4 dereferenceable(4) %6, i64 noundef %7) store ptr %call3, ptr %__node, align 8 - %9 = load ptr, ptr %__node, align 8 - %tobool = icmp ne ptr %9, null + %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 - %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 + %9 = load ptr, ptr %__node, align 8 + %add.ptr = getelementptr inbounds i8, ptr %9, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + %call.i.i = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i.i) #11 + %second = getelementptr inbounds nuw %"struct.std::pair", ptr %call.i.i, 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) + %10 = load ptr, ptr %__h, align 8 + %11 = load ptr, ptr %__k.addr, align 8 + call void @_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_(ptr dead_on_unwind writable sret(%"class.std::tuple") align 8 %ref.tmp, ptr noundef nonnull align 4 dereferenceable(4) %11) #11 + 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 %10, 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) + %12 = load ptr, ptr %__h, align 8 + %13 = load i64, ptr %__bkt, align 8 + %14 = load i64, ptr %__code, align 8 + %_M_node = getelementptr inbounds nuw %"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 + %15 = 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_nodeEmmPNS5_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %12, i64 noundef %13, i64 noundef %14, ptr noundef %15, 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 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %__pos, i32 0, i32 0 + %coerce.dive8 = getelementptr inbounds nuw %"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 + %_M_node9 = getelementptr inbounds nuw %"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 + %call10 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %__pos) #11 + %second11 = getelementptr inbounds nuw %"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 + 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) #11 br label %return lpad: ; preds = %if.end - %18 = landingpad { ptr, i32 } + %16 = 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 + %17 = extractvalue { ptr, i32 } %16, 0 + store ptr %17, ptr %exn.slot, align 8 + %18 = extractvalue { ptr, i32 } %16, 1 + store i32 %18, 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) #11 br label %eh.resume return: ; preds = %invoke.cont, %if.then - %21 = load ptr, ptr %retval, align 8 - ret ptr %21 + %19 = load ptr, ptr %retval, align 8 + ret ptr %19 eh.resume: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 @@ -1387,28 +1227,25 @@ entry: 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) + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE7_M_hashEv(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 + %call2 = call noundef i64 @_ZNKSt4hashIiEclEi(ptr noundef nonnull align 1 dereferenceable(1) %call, i32 noundef %1) #11 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 { +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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %this, 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) + %0 = load i64, ptr %__c.addr, align 8 + %_M_bucket_count = getelementptr inbounds nuw %"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_indexEmm(ptr noundef nonnull align 1 dereferenceable(1) %this1, i64 noundef %0, i64 noundef %1) ret i64 %call } @@ -1437,7 +1274,7 @@ entry: 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 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -1452,29 +1289,19 @@ return: ; preds = %if.end, %if.then } ; 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 { +define linkonce_odr dso_local void @_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_(ptr dead_on_unwind noalias writable 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 + call void @_ZNSt5tupleIJOiEEC2IJiELb1ETnNSt9enable_ifIXclsr4_TCCIXT0_EEE29__is_implicitly_constructibleIDpT_EEEbE4typeELb1EEEDpOS4_(ptr noundef nonnull align 8 dereferenceable(8) %agg.result, ptr noundef nonnull align 4 dereferenceable(4) %0) #11 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 { +; 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_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 #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__h.addr = alloca ptr, align 8 @@ -1487,10 +1314,10 @@ entry: 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 + %_M_h = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 @@ -1501,104 +1328,106 @@ entry: } ; 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 { +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_nodeEmmPNS5_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this, 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 + %__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 + %_M_rehash_policy = getelementptr inbounds nuw %"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 + %_M_rehash_policy2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_element_count = getelementptr inbounds nuw %"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 + %3 = getelementptr inbounds nuw { 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 + %5 = getelementptr inbounds nuw { 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 + %first = getelementptr inbounds nuw %"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 + %loadedv = trunc i8 %7 to i1 + br i1 %loadedv, label %if.then, label %if.end if.then: ; preds = %entry - %second = getelementptr inbounds %"struct.std::pair.9", ptr %__do_rehash, i32 0, i32 1 + %second = getelementptr inbounds nuw %"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_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) + %10 = 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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %10) 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 + %11 = load ptr, ptr %__node.addr, align 8 + %add.ptr = getelementptr inbounds i8, ptr %11, i64 8 + %12 = 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_codeERNS_21_Hash_node_code_cacheILb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 1 dereferenceable(1) %add.ptr, i64 noundef %12) + %13 = load i64, ptr %__bkt.addr, align 8 + %14 = 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 %13, ptr noundef %14) + %_M_element_count5 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %15 = load i64, ptr %_M_element_count5, align 8 + %inc = add i64 %15, 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 + %16 = 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 %16) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive6 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 + %17 = load ptr, ptr %coerce.dive6, align 8 + ret ptr %17 } ; 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.i = alloca ptr, 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_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i) #11 + ret ptr %call.i } -; 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 { +; 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_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #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::_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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_h = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"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 @@ -1613,12 +1442,12 @@ 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 + call void @__clang_call_terminate(ptr %4) #12 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 { +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_hashELb0EE7_M_hashEv(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 @@ -1649,33 +1478,21 @@ entry: 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 { +; 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_indexEmm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__c, i64 noundef %__bkt_count) #2 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 + %ref.tmp = alloca %"struct.std::__detail::_Mod_range_hashing", align 1 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 + %0 = load i64, ptr %__c.addr, align 8 + %1 = load i64, ptr %__bkt_count.addr, align 8 + %call = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, i64 noundef %0, i64 noundef %1) #11 + ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1694,15 +1511,6 @@ entry: 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: @@ -1718,10 +1526,10 @@ entry: 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw 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 @@ -1734,7 +1542,7 @@ if.then: ; preds = %entry 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 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -1743,7 +1551,8 @@ 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) + %add.ptr = getelementptr inbounds i8, ptr %8, i64 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_mRKNS_16_Hash_node_valueIS4_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 4 dereferenceable(4) %6, i64 noundef %7, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr) br i1 %call, label %if.then2, label %if.end3 if.then2: ; preds = %for.cond @@ -1753,34 +1562,35 @@ if.then2: ; preds = %for.cond 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 + %_M_nxt4 = getelementptr inbounds nuw %"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 + br i1 %tobool5, label %lor.lhs.false, label %if.then9 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 + %call6 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #11 + %add.ptr7 = getelementptr inbounds i8, ptr %call6, i64 8 + %call8 = 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_indexERKNS5_16_Hash_node_valueIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr7) #11 %13 = load i64, ptr %__bkt.addr, align 8 - %cmp = icmp ne i64 %call7, %13 - br i1 %cmp, label %if.then8, label %if.end9 + %cmp = icmp ne i64 %call8, %13 + br i1 %cmp, label %if.then9, label %if.end10 -if.then8: ; preds = %lor.lhs.false, %if.end3 +if.then9: ; preds = %lor.lhs.false, %if.end3 br label %for.end -if.end9: ; preds = %lor.lhs.false +if.end10: ; 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 +for.inc: ; preds = %if.end10 %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 + %call11 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #11 + store ptr %call11, ptr %__p, align 8 br label %for.cond, !llvm.loop !8 -for.end: ; preds = %if.then8 +for.end: ; preds = %if.then9 store ptr null, ptr %retval, align 8 br label %return @@ -1790,7 +1600,7 @@ return: ; preds = %for.end, %if.then2, } ; 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 { +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_mRKNS_16_Hash_node_valueIS4_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__c, ptr noundef nonnull align 8 dereferenceable(16) %__n) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 @@ -1803,26 +1613,22 @@ entry: %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) + %call = call noundef zeroext i1 @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE(i64 noundef %0, ptr noundef nonnull align 1 dereferenceable(1) %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) + %call2 = call noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_key_equalsERS2_RKNS_16_Hash_node_valueIS4_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 8 dereferenceable(16) %3) br label %land.end land.end: ; preds = %land.rhs, %entry - %4 = phi i1 [ false, %entry ], [ %call6, %land.rhs ] + %4 = phi i1 [ false, %entry ], [ %call2, %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 { +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_indexERKNS5_16_Hash_node_valueIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(16) %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 @@ -1830,14 +1636,14 @@ entry: 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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %1) #11 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 { +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_traitsILb0ELb0ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE(i64 noundef %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #2 comdat align 2 { entry: %.addr = alloca i64, align 8 %.addr1 = alloca ptr, align 8 @@ -1847,12 +1653,38 @@ entry: } ; 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 { +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_traitsILb0ELb0ELb1EEEE13_M_key_equalsERS2_RKNS_16_Hash_node_valueIS4_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, ptr noundef nonnull align 8 dereferenceable(16) %__n) #0 comdat align 2 { entry: + %this.addr.i5 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 + %__k.addr = alloca ptr, align 8 + %__n.addr = alloca ptr, align 8 + %ref.tmp = alloca %"struct.std::__detail::_Select1st", align 1 store ptr %this, ptr %this.addr, align 8 + store ptr %__k, ptr %__k.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 @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) + %call = 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) + %0 = load ptr, ptr %__k.addr, align 8 + %1 = load ptr, ptr %__n.addr, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i5, align 8 + %this1.i6 = load ptr, ptr %this.addr.i5, align 8 + %call.i7 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i6) #11 + %call3 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKi1AEEEONS0_10__1st_typeIT_E4typeEOS9_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %call.i7) #11 + %call4 = call noundef zeroext i1 @_ZNKSt8equal_toIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef nonnull align 4 dereferenceable(4) %0, ptr noundef nonnull align 4 dereferenceable(4) %call3) + ret i1 %call4 +} + +; 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 } @@ -1874,18 +1706,8 @@ entry: 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 { +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKi1AEEEONS0_10__1st_typeIT_E4typeEOS9_(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 @@ -1893,8 +1715,8 @@ entry: 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 + %first = getelementptr inbounds nuw %"struct.std::pair", ptr %0, i32 0, i32 0 + ret ptr %first } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1907,152 +1729,64 @@ entry: } ; 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 { +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 - 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 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #11 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 { +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: - %__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 + %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 nuw %"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 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(16) %__n, i64 noundef %__bkt_count) #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %this.addr.i6 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 + %__n.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 + %ref.tmp = alloca %"struct.std::__detail::_Mod_range_hashing", align 1 + %ref.tmp2 = alloca %"struct.std::__detail::_Select1st", align 1 store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 + store ptr %__n, ptr %__n.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) + %0 = load ptr, ptr %__n.addr, align 8 + store ptr %0, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i6, align 8 + %this1.i7 = load ptr, ptr %this.addr.i6, align 8 + %call.i8 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i7) #11 + %call3 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKi1AEEEONS0_10__1st_typeIT_E4typeEOS9_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2, ptr noundef nonnull align 8 dereferenceable(16) %call.i8) #11 + %call4 = invoke 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) %this1, ptr noundef nonnull align 4 dereferenceable(4) %call3) 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 + %1 = load i64, ptr %__bkt_count.addr, align 8 + %call5 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, i64 noundef %call4, i64 noundef %1) #11 + ret i64 %call5 -terminate.lpad: ; preds = %invoke.cont4, %invoke.cont2, %invoke.cont, %entry - %3 = landingpad { ptr, i32 } +terminate.lpad: ; preds = %entry + %2 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #15 + %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 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 { +define linkonce_odr dso_local void @_ZNSt5tupleIJOiEEC2IJiELb1ETnNSt9enable_ifIXclsr4_TCCIXT0_EEE29__is_implicitly_constructibleIDpT_EEEbE4typeELb1EEEDpOS4_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__elements) unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__elements.addr = alloca ptr, align 8 @@ -2070,12 +1804,12 @@ 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 + call void @__clang_call_terminate(ptr %2) #12 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 { +; Function Attrs: mustprogress 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 #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__head.addr = alloca ptr, align 8 @@ -2087,15 +1821,15 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_head_impl = getelementptr inbounds nuw %"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 @@ -2104,6 +1838,23 @@ entry: ; 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.i23 = alloca ptr, align 8 + %__p.addr.i24 = alloca ptr, align 8 + %__args.addr.i25 = alloca ptr, align 8 + %__args.addr2.i26 = alloca ptr, align 8 + %__args.addr4.i27 = alloca ptr, align 8 + %agg.tmp6.i = alloca %"class.std::tuple", align 8 + %__a.addr.i21 = alloca ptr, align 8 + %__p.addr.i22 = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 + %__args.addr2.i = alloca ptr, align 8 + %__args.addr4.i = alloca ptr, align 8 + %__a.addr.i18 = alloca ptr, align 8 + %__n.addr.i19 = alloca i64, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__args.addr2 = alloca ptr, align 8 @@ -2118,60 +1869,100 @@ entry: 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 %call, ptr %__a.addr.i18, align 8 + store i64 1, ptr %__n.addr.i19, align 8 + %0 = load ptr, ptr %__a.addr.i18, align 8 + %1 = load i64, ptr %__n.addr.i19, align 8 + %call.i20 = call noundef ptr @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + store ptr %call.i20, ptr %__nptr, align 8 + %2 = load ptr, ptr %__nptr, align 8 + %call7 = call noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEPT_S8_(ptr noundef %2) #11 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 + %3 = load ptr, ptr %__n, align 8 + call void @_ZNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11 %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 + %4 = load ptr, ptr %__n, align 8 + %add.ptr = getelementptr inbounds i8, ptr %4, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i) #11 + %5 = load ptr, ptr %__args.addr, align 8 + %6 = load ptr, ptr %__args.addr2, align 8 + %7 = load ptr, ptr %__args.addr4, align 8 + store ptr %call8, ptr %__a.addr.i21, align 8 + store ptr %call.i, ptr %__p.addr.i22, align 8 + store ptr %5, ptr %__args.addr.i, align 8 + store ptr %6, ptr %__args.addr2.i, align 8 + store ptr %7, ptr %__args.addr4.i, align 8 + %8 = load ptr, ptr %__a.addr.i21, align 8 + %9 = load ptr, ptr %__p.addr.i22, align 8 + %10 = load ptr, ptr %__args.addr.i, align 8 + %11 = load ptr, ptr %__args.addr2.i, align 8 + %12 = load ptr, ptr %__args.addr4.i, align 8 + store ptr %8, ptr %this.addr.i23, align 8 + store ptr %9, ptr %__p.addr.i24, align 8 + store ptr %10, ptr %__args.addr.i25, align 8 + store ptr %11, ptr %__args.addr2.i26, align 8 + store ptr %12, ptr %__args.addr4.i27, align 8 + %this5.i = load ptr, ptr %this.addr.i23, align 8 + %13 = load ptr, ptr %__p.addr.i24, align 8 + %14 = load ptr, ptr %__args.addr.i25, align 8 + %15 = load ptr, ptr %__args.addr2.i26, align 8 + call void @_ZNSt5tupleIJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %agg.tmp6.i, ptr noundef nonnull align 8 dereferenceable(8) %15) #11 + %16 = load ptr, ptr %__args.addr4.i27, align 8 + invoke void @_ZNSt4pairIKi1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES6_IJDpT0_EE(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef %agg.tmp6.i) + to label %_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESC_IJEEEEEvPT_DpOT0_.exit unwind label %lpad + +_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESC_IJEEEEEvPT_DpOT0_.exit: ; preds = %invoke.cont + br label %_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvRS7_PT_DpOT0_.exit + +_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvRS7_PT_DpOT0_.exit: ; preds = %_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESC_IJEEEEEvPT_DpOT0_.exit + br label %invoke.cont10 + +invoke.cont10: ; preds = %_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvRS7_PT_DpOT0_.exit + %17 = load ptr, ptr %__n, align 8 + ret ptr %17 lpad: ; preds = %invoke.cont, %entry - %7 = landingpad { ptr, i32 } + %18 = 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 + %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 br label %catch catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %10 = call ptr @__cxa_begin_catch(ptr %exn) #5 + %21 = call ptr @__cxa_begin_catch(ptr %exn) #11 %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 + %22 = load ptr, ptr %__nptr, align 8 + store ptr %call13, ptr %__a.addr.i, align 8 + store ptr %22, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %23 = load ptr, ptr %__a.addr.i, align 8 + %24 = load ptr, ptr %__p.addr.i, align 8 + %25 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10deallocateEPS6_m(ptr noundef nonnull align 1 dereferenceable(1) %23, ptr noundef %24, i64 noundef %25) + br label %invoke.cont14 invoke.cont14: ; preds = %invoke.cont12 - invoke void @__cxa_rethrow() #16 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad11 -lpad11: ; preds = %invoke.cont14, %invoke.cont12, %catch - %12 = landingpad { ptr, i32 } +lpad11: ; preds = %invoke.cont14, %catch + %26 = 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 + %27 = extractvalue { ptr, i32 } %26, 0 + store ptr %27, ptr %exn.slot, align 8 + %28 = extractvalue { ptr, i32 } %26, 1 + store i32 %28, ptr %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont15 unwind label %terminate.lpad @@ -2190,29 +1981,16 @@ eh.resume: ; preds = %invoke.cont15 resume { ptr, i32 } %lpad.val17 terminate.lpad: ; preds = %lpad11 - %15 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } catch ptr null - %16 = extractvalue { ptr, i32 } %15, 0 - call void @__clang_call_terminate(ptr %16) #15 + %30 = extractvalue { ptr, i32 } %29, 0 + call void @__clang_call_terminate(ptr %30) #12 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: @@ -2222,35 +2000,14 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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) + call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #11 + %0 = getelementptr inbounds i8, ptr %this1, i64 8 ret void } @@ -2258,12 +2015,13 @@ declare void @__cxa_rethrow() declare void @__cxa_end_catch() -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #12 +; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) +declare void @llvm.trap() #7 ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -2272,75 +2030,42 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 384307168202282325 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 768614336404564650 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #14 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #14 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 24 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #13 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #14 +declare void @_ZSt28__throw_bad_array_new_lengthv() #8 -; 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: noreturn +declare void @_ZSt17__throw_bad_allocv() #8 -; 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: nobuiltin allocsize(0) +declare noundef nonnull ptr @_Znwm(i64 noundef) #9 -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -2348,26 +2073,28 @@ entry: 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 + call void @_ZNSt11_Tuple_implILm0EJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) #11 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 { +; Function Attrs: mustprogress 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 #0 comdat align 2 { entry: %0 = alloca %"struct.std::piecewise_construct_t", align 1 - %__second = alloca %"class.std::tuple.7", align 1 + %__second = alloca %"class.std::tuple.5", align 1 %this.addr = alloca ptr, align 8 + %__first.indirect_addr = alloca ptr, align 8 %agg.tmp = alloca %"struct.std::_Index_tuple", align 1 - %agg.tmp3 = alloca %"struct.std::_Index_tuple.8", align 1 + %agg.tmp3 = alloca %"struct.std::_Index_tuple.6", align 1 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_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) + call void @_ZNSt4pairIKi1AEC2IJOiEJLm0EEJETpTnmJEEERSt5tupleIJDpT_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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__in.addr = alloca ptr, align 8 @@ -2375,37 +2102,18 @@ entry: 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) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %this1, ptr align 8 %0, i64 8, i1 false) 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: 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) #10 ; 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 { +define linkonce_odr dso_local void @_ZNSt4pairIKi1AEC2IJOiEJLm0EEJETpTnmJEEERSt5tupleIJDpT_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 #2 comdat align 2 { entry: %0 = alloca %"struct.std::_Index_tuple", align 1 - %1 = alloca %"struct.std::_Index_tuple.8", align 1 + %1 = alloca %"struct.std::_Index_tuple.6", align 1 %this.addr = alloca ptr, align 8 %__tuple1.addr = alloca ptr, align 8 %__tuple2.addr = alloca ptr, align 8 @@ -2413,14 +2121,14 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 8 dereferenceable(8) %2) #11 %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 + %second = getelementptr inbounds nuw %"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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %second) #11 ret void } @@ -2430,7 +2138,7 @@ 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 + %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) #11 ret ptr %call } @@ -2440,17 +2148,38 @@ 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 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #11 ret ptr %call } +; 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) #11 + 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 nuw %"struct.std::_Head_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_head_impl, align 8 + ret ptr %1 +} + ; 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 + %_M_next_resize = getelementptr inbounds nuw %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 %0 = load i64, ptr %_M_next_resize, align 8 ret i64 %0 } @@ -2488,15 +2217,15 @@ lpad: ; preds = %entry 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 + %4 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %_M_rehash_policy = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad2 lpad2: ; preds = %invoke.cont3, %catch @@ -2526,7 +2255,7 @@ 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 + call void @__clang_call_terminate(ptr %11) #12 unreachable unreachable: ; preds = %invoke.cont3 @@ -2534,7 +2263,7 @@ unreachable: ; preds = %invoke.cont3 } ; 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 { +define linkonce_odr dso_local void @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeERNS_21_Hash_node_code_cacheILb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -2556,69 +2285,70 @@ entry: 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw 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 + %_M_buckets2 = getelementptr inbounds nuw %"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 + %arrayidx3 = getelementptr inbounds nuw 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 + %_M_nxt = getelementptr inbounds nuw %"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 + %_M_nxt4 = getelementptr inbounds nuw %"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 + %_M_buckets5 = getelementptr inbounds nuw %"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 + %arrayidx6 = getelementptr inbounds nuw 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 + %_M_nxt7 = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt8 = getelementptr inbounds nuw %"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 + %_M_nxt9 = getelementptr inbounds nuw %"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 + %_M_before_begin10 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt11 = getelementptr inbounds nuw %"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 + %_M_nxt12 = getelementptr inbounds nuw %"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 + %_M_buckets15 = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #11 + %add.ptr = getelementptr inbounds i8, ptr %call, i64 8 + %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_indexERKNS5_16_Hash_node_valueIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr) #11 + %arrayidx17 = getelementptr inbounds nuw 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 + %_M_before_begin18 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_buckets19 = getelementptr inbounds nuw %"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 + %arrayidx20 = getelementptr inbounds nuw ptr, ptr %20, i64 %21 store ptr %_M_before_begin18, ptr %arrayidx20, align 8 br label %if.end21 @@ -2626,8 +2356,8 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -2635,7 +2365,7 @@ entry: 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 + call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKi1AELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) #11 ret void } @@ -2658,8 +2388,8 @@ entry: 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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -2671,37 +2401,38 @@ while.cond: ; preds = %if.end22, %entry 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 + %call3 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11 store ptr %call3, ptr %__next, align 8 %4 = load ptr, ptr %__p, align 8 + %add.ptr = getelementptr inbounds i8, ptr %4, i64 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 + %call4 = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr, i64 noundef %5) #11 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 + %arrayidx = getelementptr inbounds nuw 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 + %_M_before_begin6 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt7 = getelementptr inbounds nuw %"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 + %_M_nxt8 = getelementptr inbounds nuw %"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 + %_M_before_begin9 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt10 = getelementptr inbounds nuw %"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 + %_M_before_begin11 = getelementptr inbounds nuw %"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 + %arrayidx12 = getelementptr inbounds nuw 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 + %_M_nxt13 = getelementptr inbounds nuw %"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 @@ -2710,7 +2441,7 @@ 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 + %arrayidx16 = getelementptr inbounds nuw ptr, ptr %17, i64 %18 store ptr %16, ptr %arrayidx16, align 8 br label %if.end @@ -2722,19 +2453,19 @@ if.end: ; preds = %if.then15, %if.then 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 + %arrayidx17 = getelementptr inbounds nuw 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 + %_M_nxt18 = getelementptr inbounds nuw %"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 + %_M_nxt19 = getelementptr inbounds nuw %"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 + %arrayidx20 = getelementptr inbounds nuw 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 + %_M_nxt21 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %28, i32 0, i32 0 store ptr %25, ptr %_M_nxt21, align 8 br label %if.end22 @@ -2746,10 +2477,10 @@ if.end22: ; preds = %if.else, %if.end 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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 store ptr %31, ptr %_M_buckets, align 8 ret void } @@ -2763,7 +2494,7 @@ entry: 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 + %_M_next_resize = getelementptr inbounds nuw %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 store i64 %0, ptr %_M_next_resize, align 8 ret void } @@ -2782,9 +2513,9 @@ entry: 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 + %_M_single_bucket = getelementptr inbounds nuw %"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 + %_M_single_bucket2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 store ptr %_M_single_bucket2, ptr %retval, align 8 br label %return @@ -2802,9 +2533,16 @@ return: ; preds = %if.end, %if.then ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i9 = alloca ptr, align 8 + %this.addr.i7 = alloca ptr, align 8 + %this.addr.i5 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 + %__alloc = alloca %"class.std::allocator.2", align 1 %__ptr = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -2813,32 +2551,47 @@ entry: 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 + store ptr %__alloc, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i9, align 8 + %this1.i10 = load ptr, ptr %this.addr.i9, align 8 %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 %__alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i11 = invoke noundef ptr @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit + store ptr %call.i11, ptr %__ptr, align 8 + %3 = load ptr, ptr %__ptr, align 8 + %call3 = call noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %3) #11 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 + %5 = load i64, ptr %__bkt_count.addr, align 8 + %mul = mul i64 %5, 8 + call void @llvm.memset.p0.i64(ptr align 8 %4, i8 0, i64 %mul, i1 false) + %6 = load ptr, ptr %__p, align 8 + store ptr %__alloc, ptr %this.addr.i5, align 8 + %this1.i6 = load ptr, ptr %this.addr.i5, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i6) #11 + ret ptr %6 lpad: ; preds = %entry - %5 = landingpad { ptr, i32 } + %7 = 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 + %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 + store ptr %__alloc, ptr %this.addr.i7, align 8 + %this1.i8 = load ptr, ptr %this.addr.i7, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i8) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -2849,19 +2602,6 @@ eh.resume: ; preds = %lpad 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: @@ -2872,8 +2612,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -2882,39 +2623,40 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #17 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #14 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 + ret ptr %call5 } -; 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 @@ -2928,38 +2670,29 @@ entry: 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 + call void @_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %call) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive2 = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #6 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { cold noreturn nounwind memory(inaccessiblemem: write) } +attributes #8 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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 = { builtin nounwind } +attributes #14 = { noreturn } +attributes #15 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2969,7 +2702,7 @@ attributes #17 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !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 index a1ad3f2db..ec37bb044 100644 --- a/test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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 } @@ -14,18 +15,19 @@ target triple = "x86_64-unknown-linux-gnu" %"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 } +%"class.std::allocator.2" = 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 } +%"class.std::tuple.5" = type { i8 } +%"struct.std::pair.7" = type { i8, i64 } +%"struct.std::__detail::_Mod_range_hashing" = type { i8 } +%"struct.std::__detail::_Select1st" = type { i8 } %"struct.std::_Index_tuple" = type { i8 } -%"struct.std::_Index_tuple.8" = type { i8 } +%"struct.std::_Index_tuple.6" = type { i8 } %"struct.std::integral_constant" = type { i8 } $_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEC2Ev = comdat any @@ -56,18 +58,10 @@ $_ZNSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18 $_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 @@ -88,27 +82,19 @@ $_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 +$_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEES8_Lb0EE10pointer_toERS8_ = comdat any -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE10deallocateERS9_PS8_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10deallocateEPS9_m = comdat any +$_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10deallocateEPS8_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 @@ -116,101 +102,69 @@ $_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toI $_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 +$_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_toERS2_ = comdat any -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev = comdat any +$_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any +$_ZNSt15__new_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 +$_ZNSt15__new_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_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEm = 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 +$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS7_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 +$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE7_M_hashEv = 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__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEmm = 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 +$_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_equalsERS2_mRKNS_16_Hash_node_valueIS6_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_indexERKNS7_16_Hash_node_valueIS5_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_traitsILb0ELb0ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE = 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_traitsILb0ELb0ELb1EEEE13_M_key_equalsERS2_RKNS_16_Hash_node_valueIS6_Lb0EEE = 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__detail10_Select1stclIRKSt4pairIKiPK1AEEEONS0_10__1st_typeIT_E4typeEOSB_ = 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 +$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS6_Lb0EEEm = comdat any + +$_ZNSt5tupleIJOiEEC2IJiELb1ETnNSt9enable_ifIXclsr4_TCCIXT0_EEE29__is_implicitly_constructibleIDpT_EEEbE4typeELb1EEEDpOS4_ = comdat any $_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_ = comdat any @@ -218,21 +172,11 @@ $_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 +$_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE8allocateEmPKv = comdat any $_ZNSt5tupleIJOiEEC2EOS1_ = comdat any @@ -240,21 +184,21 @@ $_ZNSt4pairIKiPK1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES8_IJDpT0 $_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 +$_ZNSt4pairIKiPK1AEC2IJOiEJLm0EEJETpTnmJEEERSt5tupleIJDpT_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 +$_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_ = comdat any + +$_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_ = 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 +$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeERNS_21_Hash_node_code_cacheILb0EEEm = 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 @@ -268,13 +212,9 @@ $_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIi $_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 +$_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv = comdat any $_ZNSt8__detail19_Node_iterator_baseISt4pairIKiPK1AELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE = comdat any @@ -282,25 +222,22 @@ $_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIi $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 +@_ZSt19piecewise_construct = linkonce_odr dso_local constant %"struct.std::piecewise_construct_t" zeroinitializer, comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -435,24 +372,8 @@ entry: 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 { +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 @@ -470,21 +391,21 @@ entry: 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 + call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 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 + %call2 = call ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %amap) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %ref.tmp1, i32 0, i32 0 + %coerce.dive3 = getelementptr inbounds nuw %"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 + 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) #11 + %call4 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #11 + %second = getelementptr inbounds nuw %"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 @@ -497,7 +418,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #11 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -508,7 +429,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -519,24 +440,24 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #2 comdat align 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 + %_M_h = getelementptr inbounds nuw %"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) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -548,7 +469,7 @@ entry: 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 + %_M_h = getelementptr inbounds nuw %"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 @@ -563,19 +484,19 @@ 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 = 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 + %_M_h = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive2 = getelementptr inbounds nuw %"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 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive4 = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -583,181 +504,151 @@ entry: 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 + %_M_cur = getelementptr inbounds nuw %"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 + call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKiPK1AELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %1) #11 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.i = alloca ptr, 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_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i) #11 + ret ptr %call.i } -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #2 comdat align 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 + %_M_h = getelementptr inbounds nuw %"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) #11 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 { +; 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_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #2 comdat align 2 { 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 + 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) #11 + call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %_M_single_bucket = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"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) #11 + %_M_element_count = getelementptr inbounds nuw %"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 + %_M_rehash_policy = getelementptr inbounds nuw %"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) #11 + %_M_single_bucket2 = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + 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) #11 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_nxt = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_max_load_factor = getelementptr inbounds nuw %"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 + %_M_next_resize = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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_helperILi1ESt4hashIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -775,25 +666,25 @@ entry: 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 { +; 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_traitsILb0ELb0ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #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 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 + 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) #11 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 + call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %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) #15 + call void @__clang_call_terminate(ptr %1) #12 unreachable } @@ -811,16 +702,16 @@ invoke.cont: ; preds = %entry 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_element_count = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 store ptr null, ptr %_M_nxt, align 8 ret void @@ -828,7 +719,7 @@ 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 + call void @__clang_call_terminate(ptr %3) #12 unreachable } @@ -838,18 +729,18 @@ 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -857,13 +748,13 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 ret void } @@ -887,7 +778,7 @@ 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 + %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #11 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) @@ -903,14 +794,14 @@ 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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 ; 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 { @@ -918,7 +809,7 @@ 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 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 %0 = load ptr, ptr %_M_nxt, align 8 ret ptr %0 } @@ -926,6 +817,11 @@ entry: ; 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.i3 = alloca ptr, align 8 + %__p.addr.i4 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -933,23 +829,20 @@ entry: %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 + %add.ptr = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i) #11 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call.i, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i3, align 8 + store ptr %2, ptr %__p.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i3, align 8 + %3 = load ptr, ptr %__p.addr.i4, align 8 + %4 = 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 %4) ret void } @@ -963,20 +856,12 @@ entry: 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 %__ptr = alloca ptr, align 8 @@ -984,24 +869,18 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEES8_Lb0EE10pointer_toERS8_(ptr noundef nonnull align 8 dereferenceable(24) %0) #11 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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10deallocateEPS8_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) ret void } @@ -1020,7 +899,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #11 ret ptr %call } @@ -1030,12 +909,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEES8_Lb0EE10pointer_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 @@ -1043,39 +922,25 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10deallocateEPS8_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 24 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #6 ; 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 { @@ -1113,7 +978,7 @@ entry: 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 + %_M_single_bucket = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 %cmp = icmp eq ptr %0, %_M_single_bucket ret i1 %cmp } @@ -1121,11 +986,19 @@ entry: ; 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.i8 = alloca ptr, align 8 + %this.addr.i6 = alloca ptr, align 8 + %this.addr.i4 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %__alloc = alloca %"class.std::allocator.2", align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 store ptr %this, ptr %this.addr, align 8 @@ -1133,27 +1006,41 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %0) #11 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 + store ptr %__alloc, ptr %this.addr.i, align 8 + store ptr %call2, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i8, align 8 + %this1.i9 = load ptr, ptr %this.addr.i8, align 8 %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 + store ptr %__alloc, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 %2, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 + store ptr %__alloc, ptr %this.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i4, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i5) #11 ret void -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } +lpad: ; No predecessors! + %6 = 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 + %7 = extractvalue { ptr, i32 } %6, 0 + store ptr %7, ptr %exn.slot, align 8 + %8 = extractvalue { ptr, i32 } %6, 1 + store i32 %8, ptr %ehselector.slot, align 4 + store ptr %__alloc, ptr %this.addr.i6, align 8 + %this1.i7 = load ptr, ptr %this.addr.i6, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i7) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -1165,7 +1052,7 @@ eh.resume: ; preds = %lpad } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_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 @@ -1173,99 +1060,47 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - 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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #13 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1276,6 +1111,8 @@ entry: ; 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: + %this.addr.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 @@ -1285,7 +1122,7 @@ entry: %__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 + %ref.tmp6 = alloca %"class.std::tuple.5", align 1 %__pos = alloca %"struct.std::__detail::_Node_iterator", align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -1298,66 +1135,69 @@ entry: %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) + %3 = 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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %2, i64 noundef %3) 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) + %4 = load ptr, ptr %__h, align 8 + %5 = load i64, ptr %__bkt, align 8 + %6 = load ptr, ptr %__k.addr, align 8 + %7 = 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) %4, i64 noundef %5, ptr noundef nonnull align 4 dereferenceable(4) %6, i64 noundef %7) store ptr %call3, ptr %__node, align 8 - %9 = load ptr, ptr %__node, align 8 - %tobool = icmp ne ptr %9, null + %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 - %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 + %9 = load ptr, ptr %__node, align 8 + %add.ptr = getelementptr inbounds i8, ptr %9, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + %call.i.i = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i.i) #11 + %second = getelementptr inbounds nuw %"struct.std::pair", ptr %call.i.i, 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) + %10 = load ptr, ptr %__h, align 8 + %11 = load ptr, ptr %__k.addr, align 8 + call void @_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_(ptr dead_on_unwind writable sret(%"class.std::tuple") align 8 %ref.tmp, ptr noundef nonnull align 4 dereferenceable(4) %11) #11 + 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 %10, 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) + %12 = load ptr, ptr %__h, align 8 + %13 = load i64, ptr %__bkt, align 8 + %14 = load i64, ptr %__code, align 8 + %_M_node = getelementptr inbounds nuw %"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 + %15 = 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_nodeEmmPNS7_10_Hash_nodeIS5_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %12, i64 noundef %13, i64 noundef %14, ptr noundef %15, 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 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %__pos, i32 0, i32 0 + %coerce.dive8 = getelementptr inbounds nuw %"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 + %_M_node9 = getelementptr inbounds nuw %"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 + %call10 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %__pos) #11 + %second11 = getelementptr inbounds nuw %"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 + 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) #11 br label %return lpad: ; preds = %if.end - %18 = landingpad { ptr, i32 } + %16 = 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 + %17 = extractvalue { ptr, i32 } %16, 0 + store ptr %17, ptr %exn.slot, align 8 + %18 = extractvalue { ptr, i32 } %16, 1 + store i32 %18, 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) #11 br label %eh.resume return: ; preds = %invoke.cont, %if.then - %21 = load ptr, ptr %retval, align 8 - ret ptr %21 + %19 = load ptr, ptr %retval, align 8 + ret ptr %19 eh.resume: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 @@ -1375,28 +1215,25 @@ entry: 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) + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE7_M_hashEv(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 + %call2 = call noundef i64 @_ZNKSt4hashIiEclEi(ptr noundef nonnull align 1 dereferenceable(1) %call, i32 noundef %1) #11 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 { +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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %this, 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) + %0 = load i64, ptr %__c.addr, align 8 + %_M_bucket_count = getelementptr inbounds nuw %"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_indexEmm(ptr noundef nonnull align 1 dereferenceable(1) %this1, i64 noundef %0, i64 noundef %1) ret i64 %call } @@ -1425,7 +1262,7 @@ entry: 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 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -1440,29 +1277,19 @@ return: ; preds = %if.end, %if.then } ; 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 { +define linkonce_odr dso_local void @_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_(ptr dead_on_unwind noalias writable 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 + call void @_ZNSt5tupleIJOiEEC2IJiELb1ETnNSt9enable_ifIXclsr4_TCCIXT0_EEE29__is_implicitly_constructibleIDpT_EEEbE4typeELb1EEEDpOS4_(ptr noundef nonnull align 8 dereferenceable(8) %agg.result, ptr noundef nonnull align 4 dereferenceable(4) %0) #11 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 { +; 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_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 #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__h.addr = alloca ptr, align 8 @@ -1475,10 +1302,10 @@ entry: 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 + %_M_h = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 @@ -1489,104 +1316,106 @@ entry: } ; 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 { +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_nodeEmmPNS7_10_Hash_nodeIS5_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this, 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 + %__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 + %_M_rehash_policy = getelementptr inbounds nuw %"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 + %_M_rehash_policy2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_element_count = getelementptr inbounds nuw %"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 + %3 = getelementptr inbounds nuw { 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 + %5 = getelementptr inbounds nuw { 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 + %first = getelementptr inbounds nuw %"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 + %loadedv = trunc i8 %7 to i1 + br i1 %loadedv, label %if.then, label %if.end if.then: ; preds = %entry - %second = getelementptr inbounds %"struct.std::pair.9", ptr %__do_rehash, i32 0, i32 1 + %second = getelementptr inbounds nuw %"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_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) + %10 = 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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %10) 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 + %11 = load ptr, ptr %__node.addr, align 8 + %add.ptr = getelementptr inbounds i8, ptr %11, i64 8 + %12 = 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_codeERNS_21_Hash_node_code_cacheILb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 1 dereferenceable(1) %add.ptr, i64 noundef %12) + %13 = load i64, ptr %__bkt.addr, align 8 + %14 = 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 %13, ptr noundef %14) + %_M_element_count5 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %15 = load i64, ptr %_M_element_count5, align 8 + %inc = add i64 %15, 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 + %16 = 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 %16) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive6 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 + %17 = load ptr, ptr %coerce.dive6, align 8 + ret ptr %17 } ; 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.i = alloca ptr, 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_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i) #11 + ret ptr %call.i } -; 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 { +; 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_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #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::_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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_h = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"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 @@ -1601,12 +1430,12 @@ 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 + call void @__clang_call_terminate(ptr %4) #12 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 { +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_hashELb0EE7_M_hashEv(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 @@ -1637,33 +1466,21 @@ entry: 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 { +; 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_indexEmm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__c, i64 noundef %__bkt_count) #2 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 + %ref.tmp = alloca %"struct.std::__detail::_Mod_range_hashing", align 1 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 + %0 = load i64, ptr %__c.addr, align 8 + %1 = load i64, ptr %__bkt_count.addr, align 8 + %call = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, i64 noundef %0, i64 noundef %1) #11 + ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1682,15 +1499,6 @@ entry: 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: @@ -1706,10 +1514,10 @@ entry: 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw 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 @@ -1722,7 +1530,7 @@ if.then: ; preds = %entry 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 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -1731,7 +1539,8 @@ 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) + %add.ptr = getelementptr inbounds i8, ptr %8, i64 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_mRKNS_16_Hash_node_valueIS6_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 4 dereferenceable(4) %6, i64 noundef %7, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr) br i1 %call, label %if.then2, label %if.end3 if.then2: ; preds = %for.cond @@ -1741,34 +1550,35 @@ if.then2: ; preds = %for.cond 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 + %_M_nxt4 = getelementptr inbounds nuw %"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 + br i1 %tobool5, label %lor.lhs.false, label %if.then9 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 + %call6 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #11 + %add.ptr7 = getelementptr inbounds i8, ptr %call6, i64 8 + %call8 = 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_indexERKNS7_16_Hash_node_valueIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr7) #11 %13 = load i64, ptr %__bkt.addr, align 8 - %cmp = icmp ne i64 %call7, %13 - br i1 %cmp, label %if.then8, label %if.end9 + %cmp = icmp ne i64 %call8, %13 + br i1 %cmp, label %if.then9, label %if.end10 -if.then8: ; preds = %lor.lhs.false, %if.end3 +if.then9: ; preds = %lor.lhs.false, %if.end3 br label %for.end -if.end9: ; preds = %lor.lhs.false +if.end10: ; 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 +for.inc: ; preds = %if.end10 %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 + %call11 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #11 + store ptr %call11, ptr %__p, align 8 br label %for.cond, !llvm.loop !8 -for.end: ; preds = %if.then8 +for.end: ; preds = %if.then9 store ptr null, ptr %retval, align 8 br label %return @@ -1778,7 +1588,7 @@ return: ; preds = %for.end, %if.then2, } ; 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 { +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_mRKNS_16_Hash_node_valueIS6_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__c, ptr noundef nonnull align 8 dereferenceable(16) %__n) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 @@ -1791,26 +1601,22 @@ entry: %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) + %call = call noundef zeroext i1 @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE(i64 noundef %0, ptr noundef nonnull align 1 dereferenceable(1) %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) + %call2 = call noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_key_equalsERS2_RKNS_16_Hash_node_valueIS6_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 8 dereferenceable(16) %3) br label %land.end land.end: ; preds = %land.rhs, %entry - %4 = phi i1 [ false, %entry ], [ %call6, %land.rhs ] + %4 = phi i1 [ false, %entry ], [ %call2, %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 { +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_indexERKNS7_16_Hash_node_valueIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(16) %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 @@ -1818,14 +1624,14 @@ entry: 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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %1) #11 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 { +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_traitsILb0ELb0ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE(i64 noundef %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #2 comdat align 2 { entry: %.addr = alloca i64, align 8 %.addr1 = alloca ptr, align 8 @@ -1835,13 +1641,39 @@ entry: } ; 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 { +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_traitsILb0ELb0ELb1EEEE13_M_key_equalsERS2_RKNS_16_Hash_node_valueIS6_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, ptr noundef nonnull align 8 dereferenceable(16) %__n) #0 comdat align 2 { entry: + %this.addr.i5 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 + %__k.addr = alloca ptr, align 8 + %__n.addr = alloca ptr, align 8 + %ref.tmp = alloca %"struct.std::__detail::_Select1st", align 1 store ptr %this, ptr %this.addr, align 8 + store ptr %__k, ptr %__k.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 @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call + %call = 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) + %0 = load ptr, ptr %__k.addr, align 8 + %1 = load ptr, ptr %__n.addr, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i5, align 8 + %this1.i6 = load ptr, ptr %this.addr.i5, align 8 + %call.i7 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i6) #11 + %call3 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKiPK1AEEEONS0_10__1st_typeIT_E4typeEOSB_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %call.i7) #11 + %call4 = call noundef zeroext i1 @_ZNKSt8equal_toIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef nonnull align 4 dereferenceable(4) %0, ptr noundef nonnull align 4 dereferenceable(4) %call3) + ret i1 %call4 +} + +; 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 @@ -1862,18 +1694,8 @@ entry: 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 { +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKiPK1AEEEONS0_10__1st_typeIT_E4typeEOSB_(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 @@ -1881,8 +1703,8 @@ entry: 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 + %first = getelementptr inbounds nuw %"struct.std::pair", ptr %0, i32 0, i32 0 + ret ptr %first } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1895,152 +1717,64 @@ entry: } ; 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 { +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 - 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 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #11 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 { +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: - %__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 + %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 nuw %"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 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(16) %__n, i64 noundef %__bkt_count) #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %this.addr.i6 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 + %__n.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 + %ref.tmp = alloca %"struct.std::__detail::_Mod_range_hashing", align 1 + %ref.tmp2 = alloca %"struct.std::__detail::_Select1st", align 1 store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 + store ptr %__n, ptr %__n.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) + %0 = load ptr, ptr %__n.addr, align 8 + store ptr %0, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i6, align 8 + %this1.i7 = load ptr, ptr %this.addr.i6, align 8 + %call.i8 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i7) #11 + %call3 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKiPK1AEEEONS0_10__1st_typeIT_E4typeEOSB_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2, ptr noundef nonnull align 8 dereferenceable(16) %call.i8) #11 + %call4 = invoke 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) %this1, ptr noundef nonnull align 4 dereferenceable(4) %call3) 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 + %1 = load i64, ptr %__bkt_count.addr, align 8 + %call5 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, i64 noundef %call4, i64 noundef %1) #11 + ret i64 %call5 -terminate.lpad: ; preds = %invoke.cont4, %invoke.cont2, %invoke.cont, %entry - %3 = landingpad { ptr, i32 } +terminate.lpad: ; preds = %entry + %2 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #15 + %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 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 { +define linkonce_odr dso_local void @_ZNSt5tupleIJOiEEC2IJiELb1ETnNSt9enable_ifIXclsr4_TCCIXT0_EEE29__is_implicitly_constructibleIDpT_EEEbE4typeELb1EEEDpOS4_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__elements) unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__elements.addr = alloca ptr, align 8 @@ -2058,12 +1792,12 @@ 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 + call void @__clang_call_terminate(ptr %2) #12 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 { +; Function Attrs: mustprogress 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 #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__head.addr = alloca ptr, align 8 @@ -2075,15 +1809,15 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_head_impl = getelementptr inbounds nuw %"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 @@ -2092,6 +1826,23 @@ entry: ; 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.i23 = alloca ptr, align 8 + %__p.addr.i24 = alloca ptr, align 8 + %__args.addr.i25 = alloca ptr, align 8 + %__args.addr2.i26 = alloca ptr, align 8 + %__args.addr4.i27 = alloca ptr, align 8 + %agg.tmp6.i = alloca %"class.std::tuple", align 8 + %__a.addr.i21 = alloca ptr, align 8 + %__p.addr.i22 = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 + %__args.addr2.i = alloca ptr, align 8 + %__args.addr4.i = alloca ptr, align 8 + %__a.addr.i18 = alloca ptr, align 8 + %__n.addr.i19 = alloca i64, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__args.addr2 = alloca ptr, align 8 @@ -2106,60 +1857,100 @@ entry: 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 %call, ptr %__a.addr.i18, align 8 + store i64 1, ptr %__n.addr.i19, align 8 + %0 = load ptr, ptr %__a.addr.i18, align 8 + %1 = load i64, ptr %__n.addr.i19, align 8 + %call.i20 = call noundef ptr @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + store ptr %call.i20, ptr %__nptr, align 8 + %2 = load ptr, ptr %__nptr, align 8 + %call7 = call noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEPT_SA_(ptr noundef %2) #11 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 + %3 = load ptr, ptr %__n, align 8 + call void @_ZNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11 %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 + %4 = load ptr, ptr %__n, align 8 + %add.ptr = getelementptr inbounds i8, ptr %4, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1.i) #11 + %5 = load ptr, ptr %__args.addr, align 8 + %6 = load ptr, ptr %__args.addr2, align 8 + %7 = load ptr, ptr %__args.addr4, align 8 + store ptr %call8, ptr %__a.addr.i21, align 8 + store ptr %call.i, ptr %__p.addr.i22, align 8 + store ptr %5, ptr %__args.addr.i, align 8 + store ptr %6, ptr %__args.addr2.i, align 8 + store ptr %7, ptr %__args.addr4.i, align 8 + %8 = load ptr, ptr %__a.addr.i21, align 8 + %9 = load ptr, ptr %__p.addr.i22, align 8 + %10 = load ptr, ptr %__args.addr.i, align 8 + %11 = load ptr, ptr %__args.addr2.i, align 8 + %12 = load ptr, ptr %__args.addr4.i, align 8 + store ptr %8, ptr %this.addr.i23, align 8 + store ptr %9, ptr %__p.addr.i24, align 8 + store ptr %10, ptr %__args.addr.i25, align 8 + store ptr %11, ptr %__args.addr2.i26, align 8 + store ptr %12, ptr %__args.addr4.i27, align 8 + %this5.i = load ptr, ptr %this.addr.i23, align 8 + %13 = load ptr, ptr %__p.addr.i24, align 8 + %14 = load ptr, ptr %__args.addr.i25, align 8 + %15 = load ptr, ptr %__args.addr2.i26, align 8 + call void @_ZNSt5tupleIJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %agg.tmp6.i, ptr noundef nonnull align 8 dereferenceable(8) %15) #11 + %16 = load ptr, ptr %__args.addr4.i27, align 8 + invoke void @_ZNSt4pairIKiPK1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES8_IJDpT0_EE(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef %agg.tmp6.i) + to label %_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESE_IJEEEEEvPT_DpOT0_.exit unwind label %lpad + +_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESE_IJEEEEEvPT_DpOT0_.exit: ; preds = %invoke.cont + br label %_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvRS9_PT_DpOT0_.exit + +_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvRS9_PT_DpOT0_.exit: ; preds = %_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESE_IJEEEEEvPT_DpOT0_.exit + br label %invoke.cont10 + +invoke.cont10: ; preds = %_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvRS9_PT_DpOT0_.exit + %17 = load ptr, ptr %__n, align 8 + ret ptr %17 lpad: ; preds = %invoke.cont, %entry - %7 = landingpad { ptr, i32 } + %18 = 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 + %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 br label %catch catch: ; preds = %lpad %exn = load ptr, ptr %exn.slot, align 8 - %10 = call ptr @__cxa_begin_catch(ptr %exn) #5 + %21 = call ptr @__cxa_begin_catch(ptr %exn) #11 %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 + %22 = load ptr, ptr %__nptr, align 8 + store ptr %call13, ptr %__a.addr.i, align 8 + store ptr %22, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %23 = load ptr, ptr %__a.addr.i, align 8 + %24 = load ptr, ptr %__p.addr.i, align 8 + %25 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10deallocateEPS8_m(ptr noundef nonnull align 1 dereferenceable(1) %23, ptr noundef %24, i64 noundef %25) + br label %invoke.cont14 invoke.cont14: ; preds = %invoke.cont12 - invoke void @__cxa_rethrow() #16 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad11 -lpad11: ; preds = %invoke.cont14, %invoke.cont12, %catch - %12 = landingpad { ptr, i32 } +lpad11: ; preds = %invoke.cont14, %catch + %26 = 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 + %27 = extractvalue { ptr, i32 } %26, 0 + store ptr %27, ptr %exn.slot, align 8 + %28 = extractvalue { ptr, i32 } %26, 1 + store i32 %28, ptr %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont15 unwind label %terminate.lpad @@ -2178,29 +1969,16 @@ eh.resume: ; preds = %invoke.cont15 resume { ptr, i32 } %lpad.val17 terminate.lpad: ; preds = %lpad11 - %15 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } catch ptr null - %16 = extractvalue { ptr, i32 } %15, 0 - call void @__clang_call_terminate(ptr %16) #15 + %30 = extractvalue { ptr, i32 } %29, 0 + call void @__clang_call_terminate(ptr %30) #12 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: @@ -2210,35 +1988,14 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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) + call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #11 + %0 = getelementptr inbounds i8, ptr %this1, i64 8 ret void } @@ -2246,12 +2003,13 @@ declare void @__cxa_rethrow() declare void @__cxa_end_catch() -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #12 +; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) +declare void @llvm.trap() #7 ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -2260,75 +2018,42 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 384307168202282325 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 768614336404564650 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #14 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #14 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 24 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #13 +declare void @_ZSt28__throw_bad_array_new_lengthv() #8 -; 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: noreturn +declare void @_ZSt17__throw_bad_allocv() #8 -; 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: nobuiltin allocsize(0) +declare noundef nonnull ptr @_Znwm(i64 noundef) #9 -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -2336,26 +2061,28 @@ entry: 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 + call void @_ZNSt11_Tuple_implILm0EJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) #11 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 { +; Function Attrs: mustprogress 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 #0 comdat align 2 { entry: %0 = alloca %"struct.std::piecewise_construct_t", align 1 - %__second = alloca %"class.std::tuple.7", align 1 + %__second = alloca %"class.std::tuple.5", align 1 %this.addr = alloca ptr, align 8 + %__first.indirect_addr = alloca ptr, align 8 %agg.tmp = alloca %"struct.std::_Index_tuple", align 1 - %agg.tmp3 = alloca %"struct.std::_Index_tuple.8", align 1 + %agg.tmp3 = alloca %"struct.std::_Index_tuple.6", align 1 store ptr %this, ptr %this.addr, align 8 + store ptr %__first, ptr %__first.indirect_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) + call void @_ZNSt4pairIKiPK1AEC2IJOiEJLm0EEJETpTnmJEEERSt5tupleIJDpT_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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__in.addr = alloca ptr, align 8 @@ -2363,37 +2090,18 @@ entry: 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) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %this1, ptr align 8 %0, i64 8, i1 false) 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: 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) #10 ; 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 { +define linkonce_odr dso_local void @_ZNSt4pairIKiPK1AEC2IJOiEJLm0EEJETpTnmJEEERSt5tupleIJDpT_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 #2 comdat align 2 { entry: %0 = alloca %"struct.std::_Index_tuple", align 1 - %1 = alloca %"struct.std::_Index_tuple.8", align 1 + %1 = alloca %"struct.std::_Index_tuple.6", align 1 %this.addr = alloca ptr, align 8 %__tuple1.addr = alloca ptr, align 8 %__tuple2.addr = alloca ptr, align 8 @@ -2401,12 +2109,12 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 8 dereferenceable(8) %2) #11 %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 + %second = getelementptr inbounds nuw %"struct.std::pair", ptr %this2, i32 0, i32 1 store ptr null, ptr %second, align 8 ret void } @@ -2417,7 +2125,7 @@ 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 + %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) #11 ret ptr %call } @@ -2427,17 +2135,38 @@ 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 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #11 ret ptr %call } +; 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) #11 + 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 nuw %"struct.std::_Head_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_head_impl, align 8 + ret ptr %1 +} + ; 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 + %_M_next_resize = getelementptr inbounds nuw %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 %0 = load i64, ptr %_M_next_resize, align 8 ret i64 %0 } @@ -2475,15 +2204,15 @@ lpad: ; preds = %entry 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 + %4 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %_M_rehash_policy = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad2 lpad2: ; preds = %invoke.cont3, %catch @@ -2513,7 +2242,7 @@ 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 + call void @__clang_call_terminate(ptr %11) #12 unreachable unreachable: ; preds = %invoke.cont3 @@ -2521,7 +2250,7 @@ unreachable: ; preds = %invoke.cont3 } ; 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 { +define linkonce_odr dso_local void @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeERNS_21_Hash_node_code_cacheILb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -2543,69 +2272,70 @@ entry: 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw 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 + %_M_buckets2 = getelementptr inbounds nuw %"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 + %arrayidx3 = getelementptr inbounds nuw 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 + %_M_nxt = getelementptr inbounds nuw %"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 + %_M_nxt4 = getelementptr inbounds nuw %"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 + %_M_buckets5 = getelementptr inbounds nuw %"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 + %arrayidx6 = getelementptr inbounds nuw 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 + %_M_nxt7 = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt8 = getelementptr inbounds nuw %"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 + %_M_nxt9 = getelementptr inbounds nuw %"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 + %_M_before_begin10 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt11 = getelementptr inbounds nuw %"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 + %_M_nxt12 = getelementptr inbounds nuw %"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 + %_M_buckets15 = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #11 + %add.ptr = getelementptr inbounds i8, ptr %call, i64 8 + %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_indexERKNS7_16_Hash_node_valueIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr) #11 + %arrayidx17 = getelementptr inbounds nuw 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 + %_M_before_begin18 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_buckets19 = getelementptr inbounds nuw %"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 + %arrayidx20 = getelementptr inbounds nuw ptr, ptr %20, i64 %21 store ptr %_M_before_begin18, ptr %arrayidx20, align 8 br label %if.end21 @@ -2613,8 +2343,8 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -2622,7 +2352,7 @@ entry: 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 + call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKiPK1AELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) #11 ret void } @@ -2645,8 +2375,8 @@ entry: 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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -2658,37 +2388,38 @@ while.cond: ; preds = %if.end22, %entry 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 + %call3 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11 store ptr %call3, ptr %__next, align 8 %4 = load ptr, ptr %__p, align 8 + %add.ptr = getelementptr inbounds i8, ptr %4, i64 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 + %call4 = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr, i64 noundef %5) #11 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 + %arrayidx = getelementptr inbounds nuw 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 + %_M_before_begin6 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt7 = getelementptr inbounds nuw %"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 + %_M_nxt8 = getelementptr inbounds nuw %"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 + %_M_before_begin9 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt10 = getelementptr inbounds nuw %"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 + %_M_before_begin11 = getelementptr inbounds nuw %"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 + %arrayidx12 = getelementptr inbounds nuw 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 + %_M_nxt13 = getelementptr inbounds nuw %"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 @@ -2697,7 +2428,7 @@ 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 + %arrayidx16 = getelementptr inbounds nuw ptr, ptr %17, i64 %18 store ptr %16, ptr %arrayidx16, align 8 br label %if.end @@ -2709,19 +2440,19 @@ if.end: ; preds = %if.then15, %if.then 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 + %arrayidx17 = getelementptr inbounds nuw 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 + %_M_nxt18 = getelementptr inbounds nuw %"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 + %_M_nxt19 = getelementptr inbounds nuw %"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 + %arrayidx20 = getelementptr inbounds nuw 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 + %_M_nxt21 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %28, i32 0, i32 0 store ptr %25, ptr %_M_nxt21, align 8 br label %if.end22 @@ -2733,10 +2464,10 @@ if.end22: ; preds = %if.else, %if.end 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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 store ptr %31, ptr %_M_buckets, align 8 ret void } @@ -2750,7 +2481,7 @@ entry: 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 + %_M_next_resize = getelementptr inbounds nuw %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 store i64 %0, ptr %_M_next_resize, align 8 ret void } @@ -2769,9 +2500,9 @@ entry: 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 + %_M_single_bucket = getelementptr inbounds nuw %"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 + %_M_single_bucket2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 store ptr %_M_single_bucket2, ptr %retval, align 8 br label %return @@ -2789,9 +2520,16 @@ return: ; preds = %if.end, %if.then ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i9 = alloca ptr, align 8 + %this.addr.i7 = alloca ptr, align 8 + %this.addr.i5 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 + %__alloc = alloca %"class.std::allocator.2", align 1 %__ptr = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -2800,32 +2538,47 @@ entry: 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 + store ptr %__alloc, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i9, align 8 + %this1.i10 = load ptr, ptr %this.addr.i9, align 8 %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 %__alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i11 = invoke noundef ptr @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit + store ptr %call.i11, ptr %__ptr, align 8 + %3 = load ptr, ptr %__ptr, align 8 + %call3 = call noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %3) #11 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 + %5 = load i64, ptr %__bkt_count.addr, align 8 + %mul = mul i64 %5, 8 + call void @llvm.memset.p0.i64(ptr align 8 %4, i8 0, i64 %mul, i1 false) + %6 = load ptr, ptr %__p, align 8 + store ptr %__alloc, ptr %this.addr.i5, align 8 + %this1.i6 = load ptr, ptr %this.addr.i5, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i6) #11 + ret ptr %6 lpad: ; preds = %entry - %5 = landingpad { ptr, i32 } + %7 = 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 + %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 + store ptr %__alloc, ptr %this.addr.i7, align 8 + %this1.i8 = load ptr, ptr %this.addr.i7, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i8) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -2836,19 +2589,6 @@ eh.resume: ; preds = %lpad 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: @@ -2859,8 +2599,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -2869,39 +2610,40 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #17 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #14 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 + ret ptr %call5 } -; 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 { +; Function Attrs: mustprogress 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 #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 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 @@ -2915,38 +2657,29 @@ entry: 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 + call void @_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %call) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive2 = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #6 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { cold noreturn nounwind memory(inaccessiblemem: write) } +attributes #8 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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 = { builtin nounwind } +attributes #14 = { noreturn } +attributes #15 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2956,7 +2689,7 @@ attributes #17 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !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 index ffb8868c8..b6e127fa0 100644 --- a/test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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 } @@ -11,14 +12,16 @@ target triple = "x86_64-unknown-linux-gnu" %"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 } +%"class.std::allocator.2" = type { i8 } %"struct.std::__detail::_AllocNode" = type { ptr } %"struct.std::integral_constant" = type { i8 } +%"struct.std::__detail::_ConvertToValueType" = type { i8 } +%"struct.std::__detail::_Identity" = 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 } +%"struct.std::pair.5" = type { i8, i64 } +%"struct.std::__detail::_Mod_range_hashing" = type { i8 } $_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EEC2Ev = comdat any @@ -46,18 +49,10 @@ $_ZNSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_rang $_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 @@ -78,27 +73,19 @@ $_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 +$_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeIPK1ALb0EEES5_Lb0EE10pointer_toERS5_ = comdat any -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE10deallocateERS6_PS5_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE10deallocateEPS6_m = comdat any +$_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE10deallocateEPS5_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 @@ -106,25 +93,15 @@ $_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hash $_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 +$_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_toERS2_ = comdat any -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev = comdat any +$_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any +$_ZNSt15__new_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 +$_ZNSt15__new_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 @@ -132,101 +109,105 @@ $_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4has $_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 +$_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_constantIbLb1EE = 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 +$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE20_M_insert_unique_auxIRKS2_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_RKT0_ = comdat any -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERKS3_ = comdat any +$_ZNKSt8__detail19_ConvertToValueTypeINS_9_IdentityEPK1AEclIRKS4_EEOT_SA_ = 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 +$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE16_M_insert_uniqueIRKS2_SI_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_OT0_RKT1_ = 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 +$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE14_S_forward_keyERKS2_ = comdat any -$_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE = comdat any +$_ZNKSt8__detail9_IdentityclIRKPK1AEEOT_S8_ = comdat any -$_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IS5_bLb1EEEOT_OT0_ = 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_traitsILb0ELb1ELb1EEEE4sizeEv = 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_traitsILb0ELb1ELb1EEEE22__small_size_thresholdEv = 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_traitsILb0ELb1ELb1EEEE5beginEv = 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 +$_ZNSt8__detailneERKNS_19_Node_iterator_baseIPK1ALb0EEES6_ = 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_traitsILb0ELb1ELb1EEEE3endEv = 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__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE16_M_key_equals_trIS3_EEbRKT_RKNS_16_Hash_node_valueIS3_Lb0EEE = comdat any -$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_9_IdentityELb1EE7_M_cgetEv = comdat any +$_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IRS5_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISA_SB_EEEbE4typeELb1EEEOSA_OSB_ = comdat any -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev = comdat any +$_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEppEv = comdat any -$_ZNKSt4hashIPK1AEclES2_ = comdat any +$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_hash_code_trIS3_EEmRKT_ = comdat any -$_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIPK1AELb1EE7_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_traitsILb0ELb1ELb1EEEE15_M_bucket_indexEm = 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 +$_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_find_node_trIS2_EEPNS4_10_Hash_nodeIS2_Lb0EEEmRKT_m = comdat any -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev = comdat any +$_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE = comdat any -$_ZNKSt8__detail18_Mod_range_hashingclEmm = comdat any +$_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IS5_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS9_SA_EEEbE4typeELb1EEEOS9_OSA_ = comdat any -$_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv = comdat any +$_ZNSt8__detail12_NodeBuilderINS_9_IdentityEE8_S_buildIRKPK1AS8_NS_10_AllocNodeISaINS_10_Hash_nodeIS6_Lb0EEEEEEEEPNT1_11__node_typeEOT_OT0_RKSE_ = 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 +$_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 -$_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 +$_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_nodeEmmPNS4_10_Hash_nodeIS2_Lb0EEEm = 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 +$_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 -$_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 +$_ZNSt8__detail22_Hashtable_hash_traitsISt4hashIPK1AEE22__small_size_thresholdEv = 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 +$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EE7_M_cgetEv = comdat any -$_ZNSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv = comdat any +$_ZNK9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv = comdat any -$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EE7_M_cgetEv = comdat any +$_ZNK9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv = 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 +$_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EE7_M_incrEv = comdat any -$_ZNKSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv = comdat any +$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE7_M_hashEv = comdat any -$_ZNKSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv = comdat any +$_ZNKSt4hashIPK1AEclES2_ = comdat any -$_ZNK9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv = comdat any +$_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIPK1AELb1EE7_M_cgetEv = comdat any -$_ZNK9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv = comdat any +$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEmm = comdat any -$_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE = comdat any +$_ZNKSt8__detail18_Mod_range_hashingclEmm = comdat any -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE16_M_allocate_nodeIJRKS4_EEEPS5_DpOT_ = 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_traitsILb0ELb1ELb1EEEE22_M_find_before_node_trIS2_EEPNS4_15_Hash_node_baseEmRKT_m = comdat any -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE8allocateERS6_m = comdat any +$_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE12_M_equals_trIS3_EEbRKT_mRKNS_16_Hash_node_valueIS3_Lb0EEE = comdat any -$_ZSt12__to_addressINSt8__detail10_Hash_nodeIPK1ALb0EEEEPT_S7_ = 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_indexERKNS4_16_Hash_node_valueIS2_Lb0EEE = comdat any -$_ZNSt8__detail10_Hash_nodeIPK1ALb0EEC2Ev = comdat any +$_ZNSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE = comdat any + +$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS3_Lb0EEEm = comdat any + +$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERKS3_ = comdat any -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE9constructIS4_JRKS4_EEEvRS6_PT_DpOT0_ = comdat any +$_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE = comdat any + +$_ZNKSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEclIJRKS4_EEEPS5_DpOT_ = comdat any -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE8allocateEmPKv = comdat any +$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE16_M_allocate_nodeIJRKS4_EEEPS5_DpOT_ = comdat any -$_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE11_M_max_sizeEv = comdat any +$_ZSt12__to_addressINSt8__detail10_Hash_nodeIPK1ALb0EEEEPT_S7_ = comdat any -$_ZNSt8__detail21_Hash_node_value_baseIPK1AEC2Ev = comdat any +$_ZNSt8__detail10_Hash_nodeIPK1ALb0EEC2Ev = comdat any -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE9constructIS5_JRKS5_EEEvPT_DpOT0_ = comdat any +$_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE8allocateEmPKv = 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 +$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeERNS_21_Hash_node_code_cacheILb0EEEm = 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 @@ -238,34 +219,25 @@ $_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashI $_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 +$_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 }] +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -400,24 +372,8 @@ entry: 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 { +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 @@ -434,28 +390,28 @@ entry: 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 + call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #11 + %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #12 to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #11 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 + %0 = getelementptr inbounds nuw { 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 + %2 = getelementptr inbounds nuw { 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 + %call3 = call ptr @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %aset) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %it, i32 0, i32 0 + %coerce.dive4 = getelementptr inbounds nuw %"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 + %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK1ALb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #11 %4 = load ptr, ptr %call5, align 8 store ptr %4, ptr %aptr, align 8 %5 = load ptr, ptr %aptr, align 8 @@ -468,7 +424,7 @@ invoke.cont1: ; preds = %invoke.cont 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 + call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #11 %8 = load i32, ptr %retval, align 4 ret i32 %8 @@ -479,7 +435,7 @@ lpad: ; preds = %invoke.cont1, %invo 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 + call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -490,29 +446,29 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_h = getelementptr inbounds nuw %"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) #11 ret void } ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 +declare noundef nonnull ptr @_Znwm(i64 noundef) #4 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -522,20 +478,17 @@ entry: %retval = alloca %"struct.std::pair", align 8 %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 + %tmp.coerce = alloca { ptr, i8 }, 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 + %_M_h = getelementptr inbounds nuw %"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 + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval, ptr align 8 %tmp.coerce, i64 9, i1 false) + %1 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -545,13 +498,13 @@ 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 = 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 + %_M_h = getelementptr inbounds nuw %"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) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive2 = getelementptr inbounds nuw %"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 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive3, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive4, align 8 ret ptr %0 } @@ -559,172 +512,145 @@ entry: ; 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.i.i = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %_M_cur = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i.i, align 8 + %this1.i.i = load ptr, ptr %this.addr.i.i, align 8 + %call.i.i = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1.i.i) #11 + ret ptr %call.i.i } -; 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_h = getelementptr inbounds nuw %"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) #11 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 { +; 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_traitsILb0ELb1ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #2 comdat align 2 { 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 + 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) #11 + call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %_M_single_bucket = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"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) #11 + %_M_element_count = getelementptr inbounds nuw %"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 + %_M_rehash_policy = getelementptr inbounds nuw %"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) #11 + %_M_single_bucket2 = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + 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) #11 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_nxt = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_max_load_factor = getelementptr inbounds nuw %"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 + %_M_next_resize = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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_helperILi1ESt4hashIPK1AELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 ret void } @@ -742,25 +668,25 @@ entry: 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 { +; 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_traitsILb0ELb1ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #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 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 + 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) #11 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 + call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %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) #16 + call void @__clang_call_terminate(ptr %1) #13 unreachable } @@ -778,16 +704,16 @@ invoke.cont: ; preds = %entry 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_element_count = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 store ptr null, ptr %_M_nxt, align 8 ret void @@ -795,7 +721,7 @@ 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 + call void @__clang_call_terminate(ptr %3) #13 unreachable } @@ -805,18 +731,18 @@ 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %_M_bucket_count = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #5 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #13 unreachable } @@ -824,13 +750,13 @@ 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { 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 + call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 ret void } @@ -854,7 +780,7 @@ 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 + %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #11 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) @@ -870,14 +796,14 @@ 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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"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 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 ; 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 { @@ -885,7 +811,7 @@ 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 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 %0 = load ptr, ptr %_M_nxt, align 8 ret ptr %0 } @@ -893,6 +819,11 @@ entry: ; 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.i3 = alloca ptr, align 8 + %__p.addr.i4 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -900,23 +831,20 @@ entry: %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 + %add.ptr = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1.i) #11 + store ptr %call, ptr %__a.addr.i, align 8 + store ptr %call.i, ptr %__p.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load ptr, ptr %__p.addr.i, align 8 + store ptr %1, ptr %this.addr.i3, align 8 + store ptr %2, ptr %__p.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i3, align 8 + %3 = load ptr, ptr %__p.addr.i4, align 8 + %4 = 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 %4) ret void } @@ -930,20 +858,12 @@ entry: 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 %__ptr = alloca ptr, align 8 @@ -951,24 +871,18 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeIPK1ALb0EEES5_Lb0EE10pointer_toERS5_(ptr noundef nonnull align 8 dereferenceable(16) %0) #11 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 + store ptr %call2, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) ret void } @@ -987,7 +901,7 @@ 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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #11 ret ptr %call } @@ -997,12 +911,12 @@ 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 + %_M_storage = getelementptr inbounds nuw %"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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPNSt8__detail10_Hash_nodeIPK1ALb0EEES5_Lb0EE10pointer_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 @@ -1010,39 +924,25 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 16 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #14 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #11 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #7 ; 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 { @@ -1080,7 +980,7 @@ entry: 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 + %_M_single_bucket = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 %cmp = icmp eq ptr %0, %_M_single_bucket ret i1 %cmp } @@ -1088,11 +988,19 @@ entry: ; 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.i8 = alloca ptr, align 8 + %this.addr.i6 = alloca ptr, align 8 + %this.addr.i4 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %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 + %__alloc = alloca %"class.std::allocator.2", align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 store ptr %this, ptr %this.addr, align 8 @@ -1100,27 +1008,41 @@ entry: 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 + %call = call noundef ptr @_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %0) #11 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 + store ptr %__alloc, ptr %this.addr.i, align 8 + store ptr %call2, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i8, align 8 + %this1.i9 = load ptr, ptr %this.addr.i8, align 8 %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 + store ptr %__alloc, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 %2, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) + br label %invoke.cont invoke.cont: ; preds = %entry - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 + store ptr %__alloc, ptr %this.addr.i4, align 8 + %this1.i5 = load ptr, ptr %this.addr.i4, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i5) #11 ret void -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } +lpad: ; No predecessors! + %6 = 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 + %7 = extractvalue { ptr, i32 } %6, 0 + store ptr %7, ptr %exn.slot, align 8 + %8 = extractvalue { ptr, i32 } %6, 1 + store i32 %8, ptr %ehselector.slot, align 4 + store ptr %__alloc, ptr %this.addr.i6, align 8 + %this1.i7 = load ptr, ptr %this.addr.i6, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i7) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -1132,7 +1054,7 @@ eh.resume: ; preds = %lpad } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt19__ptr_traits_ptr_toIPPNSt8__detail15_Hash_node_baseES2_Lb0EE10pointer_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 @@ -1140,99 +1062,47 @@ entry: 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - 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 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #14 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1249,6 +1119,7 @@ entry: %__h = alloca ptr, align 8 %__node_gen = alloca %"struct.std::__detail::_AllocNode", align 8 %agg.tmp = alloca %"struct.std::integral_constant", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__v, ptr %__v.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 @@ -1258,17 +1129,16 @@ entry: 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 + %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_constantIbLb1EE(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) + store { ptr, i8 } %call2, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval, ptr align 8 %tmp.coerce, i64 9, i1 false) + %3 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %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) #8 + ; 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: @@ -1278,179 +1148,406 @@ entry: 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 { +; Function Attrs: mustprogress 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 #2 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 + %_M_h = getelementptr inbounds nuw %"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 { +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_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__arg, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen) #0 comdat align 2 { 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 + %__arg.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 + %ref.tmp = alloca %"struct.std::__detail::_ConvertToValueType", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__v, ptr %__v.addr, align 8 + store ptr %__arg, ptr %__arg.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 + %1 = load ptr, ptr %__arg.addr, align 8 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail19_ConvertToValueTypeINS_9_IdentityEPK1AEclIRKS4_EEOT_SA_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %1) #11 + %2 = load ptr, ptr %__node_gen.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_traitsILb0ELb1ELb1EEEE20_M_insert_unique_auxIRKS2_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_RKT0_(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(8) %call, ptr noundef nonnull align 8 dereferenceable(8) %2) + store { ptr, i8 } %call2, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval, ptr align 8 %tmp.coerce, i64 9, i1 false) + %3 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %3 } ; 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 { +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_traitsILb0ELb1ELb1EEEE20_M_insert_unique_auxIRKS2_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_RKT0_(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__arg, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen) #0 comdat align 2 { entry: + %retval = alloca %"struct.std::pair", align 8 %this.addr = alloca ptr, align 8 + %__arg.addr = alloca ptr, align 8 + %__node_gen.addr = alloca ptr, align 8 + %ref.tmp = alloca %"struct.std::__detail::_Identity", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__arg, ptr %__arg.addr, align 8 + store ptr %__node_gen, ptr %__node_gen.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 + %0 = load ptr, ptr %__arg.addr, align 8 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail9_IdentityclIRKPK1AEEOT_S8_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %0) #11 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE14_S_forward_keyERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %call) + %1 = load ptr, ptr %__arg.addr, align 8 + %2 = load ptr, ptr %__node_gen.addr, align 8 + %call3 = 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_traitsILb0ELb1ELb1EEEE16_M_insert_uniqueIRKS2_SI_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_OT0_RKT1_(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(8) %call2, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) + store { ptr, i8 } %call3, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval, ptr align 8 %tmp.coerce, i64 9, i1 false) + %3 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %3 } ; 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 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail19_ConvertToValueTypeINS_9_IdentityEPK1AEclIRKS4_EEOT_SA_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 + %__k.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 + store ptr %__k, ptr %__k.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 + %0 = load ptr, ptr %__k.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 { +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_traitsILb0ELb1ELb1EEEE16_M_insert_uniqueIRKS2_SI_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_OT0_RKT1_(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k, ptr noundef nonnull align 8 dereferenceable(8) %__v, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %retval = alloca %"struct.std::pair", align 8 %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 + %__v.addr = alloca ptr, align 8 + %__node_gen.addr = alloca ptr, align 8 + %__it = alloca %"struct.std::__detail::_Node_iterator", align 8 + %ref.tmp = alloca %"struct.std::__detail::_Node_iterator", align 8 + %ref.tmp11 = alloca i8, align 1 + %__code = alloca i64, align 8 + %__bkt = alloca i64, align 8 + %__node = alloca ptr, align 8 + %ref.tmp22 = alloca %"struct.std::__detail::_Node_iterator", align 8 + %ref.tmp23 = alloca i8, align 1 + %__node26 = 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.tmp32 = alloca i8, align 1 + store ptr %this, ptr %this.addr, align 8 + store ptr %__k, ptr %__k.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 + %call = 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_traitsILb0ELb1ELb1EEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) #11 + %call2 = call noundef i64 @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22__small_size_thresholdEv() #11 + %cmp = icmp ule i64 %call, %call2 + br i1 %cmp, label %if.then, label %if.end13 + +if.then: ; preds = %entry + %call3 = 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) %this1) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %__it, i32 0, i32 0 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 + store ptr %call3, ptr %coerce.dive4, align 8 + br label %for.cond + +for.cond: ; preds = %for.inc, %if.then + %call5 = 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_traitsILb0ELb1ELb1EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) #11 + %coerce.dive6 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %ref.tmp, i32 0, i32 0 + %coerce.dive7 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive6, i32 0, i32 0 + store ptr %call5, ptr %coerce.dive7, align 8 + %call8 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPK1ALb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %__it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #11 + br i1 %call8, label %for.body, label %for.end + +for.body: ; preds = %for.cond + %0 = load ptr, ptr %__k.addr, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %__it, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur, align 8 + %add.ptr = getelementptr inbounds i8, ptr %1, i64 8 + %call9 = call noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE16_M_key_equals_trIS3_EEbRKT_RKNS_16_Hash_node_valueIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %add.ptr) + br i1 %call9, label %if.then10, label %if.end + +if.then10: ; preds = %for.body + store i8 0, ptr %ref.tmp11, align 1 + call void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IRS5_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISA_SB_EEEbE4typeELb1EEEOSA_OSB_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__it, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp11) + br label %return + +if.end: ; preds = %for.body + br label %for.inc + +for.inc: ; preds = %if.end + %call12 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %__it) #11 + br label %for.cond, !llvm.loop !8 + +for.end: ; preds = %for.cond + br label %if.end13 + +if.end13: ; preds = %for.end, %entry + %2 = load ptr, ptr %__k.addr, align 8 + %call14 = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_hash_code_trIS3_EEmRKT_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %2) + store i64 %call14, ptr %__code, align 8 + %3 = load i64, ptr %__code, align 8 + %call15 = 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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %3) + store i64 %call15, ptr %__bkt, align 8 + %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_traitsILb0ELb1ELb1EEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) #11 + %call17 = call noundef i64 @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22__small_size_thresholdEv() #11 + %cmp18 = icmp ugt i64 %call16, %call17 + br i1 %cmp18, label %if.then19, label %if.end25 + +if.then19: ; preds = %if.end13 + %4 = load i64, ptr %__bkt, align 8 + %5 = load ptr, ptr %__k.addr, align 8 + %6 = load i64, ptr %__code, align 8 + %call20 = 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_traitsILb0ELb1ELb1EEEE15_M_find_node_trIS2_EEPNS4_10_Hash_nodeIS2_Lb0EEEmRKT_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %4, ptr noundef nonnull align 8 dereferenceable(8) %5, i64 noundef %6) + store ptr %call20, ptr %__node, align 8 + %7 = load ptr, ptr %__node, align 8 + %tobool = icmp ne ptr %7, null + br i1 %tobool, label %if.then21, label %if.end24 + +if.then21: ; preds = %if.then19 + %8 = load ptr, ptr %__node, align 8 + call void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp22, ptr noundef %8) #11 + store i8 0, ptr %ref.tmp23, align 1 + call void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IS5_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS9_SA_EEEbE4typeELb1EEEOS9_OSA_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp22, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp23) + br label %return + +if.end24: ; preds = %if.then19 + br label %if.end25 + +if.end25: ; preds = %if.end24, %if.end13 + %9 = load ptr, ptr %__k.addr, align 8 + %10 = load ptr, ptr %__v.addr, align 8 + %11 = load ptr, ptr %__node_gen.addr, align 8 + %call27 = call noundef ptr @_ZNSt8__detail12_NodeBuilderINS_9_IdentityEE8_S_buildIRKPK1AS8_NS_10_AllocNodeISaINS_10_Hash_nodeIS6_Lb0EEEEEEEEPNT1_11__node_typeEOT_OT0_RKSE_(ptr noundef nonnull align 8 dereferenceable(8) %9, 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) %__node26, ptr noundef %call27, ptr noundef %this1) + %12 = load i64, ptr %__bkt, align 8 + %13 = load i64, ptr %__code, align 8 + %_M_node = getelementptr inbounds nuw %"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 %__node26, i32 0, i32 1 + %14 = load ptr, ptr %_M_node, align 8 + %call28 = 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_nodeEmmPNS4_10_Hash_nodeIS2_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %12, i64 noundef %13, ptr noundef %14, i64 noundef 1) + to label %invoke.cont unwind label %lpad + +invoke.cont: ; preds = %if.end25 + %coerce.dive29 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %__pos, i32 0, i32 0 + %coerce.dive30 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive29, i32 0, i32 0 + store ptr %call28, ptr %coerce.dive30, align 8 + %_M_node31 = getelementptr inbounds nuw %"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 %__node26, i32 0, i32 1 + store ptr null, ptr %_M_node31, align 8 + store i8 1, ptr %ref.tmp32, align 1 + invoke void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IRS5_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISA_SB_EEEbE4typeELb1EEEOSA_OSB_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__pos, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp32) + to label %invoke.cont33 unwind label %lpad + +invoke.cont33: ; 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) %__node26) #11 + br label %return + +lpad: ; preds = %invoke.cont, %if.end25 + %15 = landingpad { ptr, i32 } + cleanup + %16 = extractvalue { ptr, i32 } %15, 0 + store ptr %16, ptr %exn.slot, align 8 + %17 = extractvalue { ptr, i32 } %15, 1 + store i32 %17, 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) %__node26) #11 + br label %eh.resume + +return: ; preds = %invoke.cont33, %if.then21, %if.then10 + %18 = load { ptr, i8 }, ptr %retval, align 8 + ret { ptr, i8 } %18 + +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.val34 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 + resume { ptr, i32 } %lpad.val34 +} + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE14_S_forward_keyERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %__k) #2 comdat align 2 { +entry: + %__k.addr = alloca ptr, align 8 + store ptr %__k, ptr %__k.addr, align 8 + %0 = load ptr, ptr %__k.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 @_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 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_traitsILb0ELb1ELb1EEEE4sizeEv(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_element_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %0 = load i64, ptr %_M_element_count, align 8 + ret i64 %0 +} + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef i64 @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22__small_size_thresholdEv() #2 comdat align 2 { +entry: + %call = call noundef i64 @_ZNSt8__detail22_Hashtable_hash_traitsISt4hashIPK1AEE22__small_size_thresholdEv() #11 + ret i64 %call +} + +; 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) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive2 = getelementptr inbounds nuw %"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: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPK1ALb0EEES6_(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_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur, align 8 + %2 = load ptr, ptr %__y.addr, align 8 + %_M_cur1 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %_M_cur1, align 8 + %cmp = icmp ne ptr %1, %3 + ret i1 %cmp +} + +; 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_traitsILb0ELb1ELb1EEEE3endEv(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 void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef null) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive2 = getelementptr inbounds nuw %"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: 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_traitsILb0ELb1ELb1EEEE16_M_key_equals_trIS3_EEbRKT_RKNS_16_Hash_node_valueIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k, ptr noundef nonnull align 8 dereferenceable(8) %__n) #0 comdat align 2 { +entry: + %this.addr.i5 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %this.addr = alloca ptr, align 8 + %__k.addr = alloca ptr, align 8 + %__n.addr = alloca ptr, align 8 + %ref.tmp = alloca %"struct.std::__detail::_Identity", align 1 + store ptr %this, ptr %this.addr, align 8 + store ptr %__k, ptr %__k.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 @_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) + %0 = load ptr, ptr %__k.addr, align 8 + %1 = load ptr, ptr %__n.addr, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i5, align 8 + %this1.i6 = load ptr, ptr %this.addr.i5, align 8 + %call.i7 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1.i6) #11 + %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail9_IdentityclIRKPK1AEEOT_S8_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %call.i7) #11 + %call4 = call noundef zeroext i1 @_ZNKSt8equal_toIPK1AEclERKS2_S5_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %call3) + ret i1 %call4 +} + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IRS5_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISA_SB_EEEbE4typeELb1EEEOSA_OSB_(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 #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 + %first = getelementptr inbounds nuw %"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 nuw %"struct.std::pair", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %__y.addr, align 8 + %2 = load i8, ptr %1, align 1 + %loadedv = trunc i8 %2 to i1 + %storedv = zext i1 %loadedv to i8 + store i8 %storedv, 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 @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEppEv(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 void @_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EE7_M_incrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #11 + 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_hash_code_trIS3_EEmRKT_(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) + %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_hashELb0EE7_M_hashEv(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 + %call2 = call noundef i64 @_ZNKSt4hashIPK1AEclES2_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %1) #11 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 { +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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %this, 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) + %0 = load i64, ptr %__c.addr, align 8 + %_M_bucket_count = getelementptr inbounds nuw %"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_indexEmm(ptr noundef nonnull align 1 dereferenceable(1) %this1, i64 noundef %0, i64 noundef %1) 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 { +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_traitsILb0ELb1ELb1EEEE15_M_find_node_trIS2_EEPNS4_10_Hash_nodeIS2_Lb0EEEmRKT_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 @@ -1466,7 +1563,7 @@ entry: %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) + %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_traitsILb0ELb1ELb1EEEE22_M_find_before_node_trIS2_EEPNS4_15_Hash_node_baseEmRKT_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 @@ -1474,7 +1571,7 @@ entry: 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 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -1488,8 +1585,8 @@ return: ; preds = %if.end, %if.then 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -1497,12 +1594,12 @@ entry: 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 + call void @_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IS5_bTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS9_SA_EEEbE4typeELb1EEEOS9_OSA_(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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1511,35 +1608,35 @@ entry: 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 + %first = getelementptr inbounds nuw %"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 + %second = getelementptr inbounds nuw %"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 + %loadedv = trunc i8 %2 to i1 + %storedv = zext i1 %loadedv to i8 + store i8 %storedv, 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt8__detail12_NodeBuilderINS_9_IdentityEE8_S_buildIRKPK1AS8_NS_10_AllocNodeISaINS_10_Hash_nodeIS6_Lb0EEEEEEEEPNT1_11__node_typeEOT_OT0_RKSE_(ptr noundef nonnull align 8 dereferenceable(8) %__k, ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen) #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) + %__k.addr = alloca ptr, align 8 + %.addr = alloca ptr, align 8 + %__node_gen.addr = alloca ptr, align 8 + store ptr %__k, ptr %__k.addr, align 8 + store ptr %0, ptr %.addr, align 8 + store ptr %__node_gen, ptr %__node_gen.addr, align 8 + %1 = load ptr, ptr %__node_gen.addr, align 8 + %2 = load ptr, ptr %__k.addr, align 8 + %call = call noundef ptr @_ZNKSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEclIJRKS4_EEEPS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) 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 { +; 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_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 #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 @@ -1548,124 +1645,100 @@ entry: 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 + %_M_h = getelementptr inbounds nuw %"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 + %_M_node = getelementptr inbounds nuw %"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 { +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_nodeEmmPNS4_10_Hash_nodeIS2_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this, 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 + %__do_rehash = alloca %"struct.std::pair.5", 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 + %_M_rehash_policy = getelementptr inbounds nuw %"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 + %_M_rehash_policy2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_element_count = getelementptr inbounds nuw %"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 + %3 = getelementptr inbounds nuw { 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 + %5 = getelementptr inbounds nuw { 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 + %first = getelementptr inbounds nuw %"struct.std::pair.5", 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 + %loadedv = trunc i8 %7 to i1 + br i1 %loadedv, label %if.then, label %if.end if.then: ; preds = %entry - %second = getelementptr inbounds %"struct.std::pair.7", ptr %__do_rehash, i32 0, i32 1 + %second = getelementptr inbounds nuw %"struct.std::pair.5", 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) + %10 = 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_indexEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %10) 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 + %11 = load ptr, ptr %__node.addr, align 8 + %add.ptr = getelementptr inbounds i8, ptr %11, i64 8 + %12 = 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_codeERNS_21_Hash_node_code_cacheILb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 1 dereferenceable(1) %add.ptr, i64 noundef %12) + %13 = load i64, ptr %__bkt.addr, align 8 + %14 = 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 %13, ptr noundef %14) + %_M_element_count5 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %15 = load i64, ptr %_M_element_count5, align 8 + %inc = add i64 %15, 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 + %16 = 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 %16) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive6 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 + %17 = load ptr, ptr %coerce.dive6, align 8 + ret ptr %17 } -; 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 { +; 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_traitsILb0ELb1ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #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::_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 + %_M_node = getelementptr inbounds nuw %"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 + %_M_h = getelementptr inbounds nuw %"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 + %_M_node2 = getelementptr inbounds nuw %"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 @@ -1680,12 +1753,46 @@ 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 + call void @__clang_call_terminate(ptr %4) #13 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 { +define linkonce_odr dso_local noundef i64 @_ZNSt8__detail22_Hashtable_hash_traitsISt4hashIPK1AEE22__small_size_thresholdEv() #2 comdat align 2 { +entry: + ret i64 0 +} + +; 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 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 @@ -1693,8 +1800,42 @@ entry: ret ptr %this1 } +; 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) #11 + 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 nuw %"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 void @_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EE7_M_incrEv(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 nuw %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 8 + %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #11 + %_M_cur2 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + store ptr %call, ptr %_M_cur2, align 8 + ret void +} + ; 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 { +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_hashELb0EE7_M_hashEv(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 @@ -1725,33 +1866,21 @@ entry: 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 { +; 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_indexEmm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__c, i64 noundef %__bkt_count) #2 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 + %ref.tmp = alloca %"struct.std::__detail::_Mod_range_hashing", align 1 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 + %0 = load i64, ptr %__c.addr, align 8 + %1 = load i64, ptr %__bkt_count.addr, align 8 + %call = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, i64 noundef %0, i64 noundef %1) #11 + ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable @@ -1770,17 +1899,8 @@ entry: 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 { +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_traitsILb0ELb1ELb1EEEE22_M_find_before_node_trIS2_EEPNS4_15_Hash_node_baseEmRKT_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 @@ -1794,10 +1914,10 @@ entry: 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw 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 @@ -1810,7 +1930,7 @@ if.then: ; preds = %entry 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 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -1819,7 +1939,8 @@ 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) + %add.ptr = getelementptr inbounds i8, ptr %8, i64 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_traitsILb0ELb1ELb1EEEE12_M_equals_trIS3_EEbRKT_mRKNS_16_Hash_node_valueIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %7, ptr noundef nonnull align 8 dereferenceable(8) %add.ptr) br i1 %call, label %if.then2, label %if.end3 if.then2: ; preds = %for.cond @@ -1829,34 +1950,35 @@ if.then2: ; preds = %for.cond 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 + %_M_nxt4 = getelementptr inbounds nuw %"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 + br i1 %tobool5, label %lor.lhs.false, label %if.then9 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 + %call6 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #11 + %add.ptr7 = getelementptr inbounds i8, ptr %call6, i64 8 + %call8 = 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_indexERKNS4_16_Hash_node_valueIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(8) %add.ptr7) #11 %13 = load i64, ptr %__bkt.addr, align 8 - %cmp = icmp ne i64 %call7, %13 - br i1 %cmp, label %if.then8, label %if.end9 + %cmp = icmp ne i64 %call8, %13 + br i1 %cmp, label %if.then9, label %if.end10 -if.then8: ; preds = %lor.lhs.false, %if.end3 +if.then9: ; preds = %lor.lhs.false, %if.end3 br label %for.end -if.end9: ; preds = %lor.lhs.false +if.end10: ; 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 +for.inc: ; preds = %if.end10 %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 + %call11 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %15) #11 + store ptr %call11, ptr %__p, align 8 + br label %for.cond, !llvm.loop !9 -for.end: ; preds = %if.then8 +for.end: ; preds = %if.then9 store ptr null, ptr %retval, align 8 br label %return @@ -1866,7 +1988,7 @@ return: ; preds = %for.end, %if.then2, } ; 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 { +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_traitsILb0ELb1ELb1EEEE12_M_equals_trIS3_EEbRKT_mRKNS_16_Hash_node_valueIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k, i64 noundef %__c, ptr noundef nonnull align 8 dereferenceable(8) %__n) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 @@ -1879,26 +2001,22 @@ entry: %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) + %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_traitsILb0ELb1ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE(i64 noundef %0, ptr noundef nonnull align 1 dereferenceable(1) %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) + %call2 = call noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE16_M_key_equals_trIS3_EEbRKT_RKNS_16_Hash_node_valueIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) br label %land.end land.end: ; preds = %land.rhs, %entry - %4 = phi i1 [ false, %entry ], [ %call6, %land.rhs ] + %4 = phi i1 [ false, %entry ], [ %call2, %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 { +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_indexERKNS4_16_Hash_node_valueIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 @@ -1906,14 +2024,14 @@ entry: 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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0, i64 noundef %1) #11 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 { +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_traitsILb0ELb1ELb1EEEE9_S_equalsEmRKNS_21_Hash_node_code_cacheILb0EEE(i64 noundef %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #2 comdat align 2 { entry: %.addr = alloca i64, align 8 %.addr1 = alloca ptr, align 8 @@ -1922,165 +2040,102 @@ entry: 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 { +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_indexERKNS_16_Hash_node_valueIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__n, i64 noundef %__bkt_count) #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %this.addr.i6 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 + %__n.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 + %ref.tmp = alloca %"struct.std::__detail::_Mod_range_hashing", align 1 + %ref.tmp2 = alloca %"struct.std::__detail::_Identity", align 1 store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 + store ptr %__n, ptr %__n.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) + %0 = load ptr, ptr %__n.addr, align 8 + store ptr %0, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i6, align 8 + %this1.i7 = load ptr, ptr %this.addr.i6, align 8 + %call.i8 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1.i7) #11 + %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail9_IdentityclIRKPK1AEEOT_S8_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2, ptr noundef nonnull align 8 dereferenceable(8) %call.i8) #11 + %call4 = invoke 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) %call3) 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 + %1 = load i64, ptr %__bkt_count.addr, align 8 + %call5 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, i64 noundef %call4, i64 noundef %1) #11 + ret i64 %call5 -terminate.lpad: ; preds = %invoke.cont2, %invoke.cont, %entry - %3 = landingpad { ptr, i32 } +terminate.lpad: ; preds = %entry + %2 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #16 + %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 8 dereferenceable(8) ptr @_ZNKSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +; 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 ptr @_ZNKSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call + %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_hashELb0EE7_M_hashEv(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) #11 + ret i64 %call2 } ; 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 { +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 #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 - %_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 + %_M_cur = getelementptr inbounds nuw %"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 noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEclIJRKS4_EEEPS5_DpOT_(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 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 @_ZNK9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 + %_M_h = getelementptr inbounds nuw %"struct.std::__detail::_AllocNode", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_h, align 8 + %1 = load ptr, ptr %__args.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: 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.i18 = alloca ptr, align 8 + %__p.addr.i19 = alloca ptr, align 8 + %__args.addr.i20 = alloca ptr, align 8 + %__a.addr.i16 = alloca ptr, align 8 + %__p.addr.i17 = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 + %__a.addr.i13 = alloca ptr, align 8 + %__n.addr.i14 = alloca i64, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__nptr = alloca ptr, align 8 @@ -2091,55 +2146,81 @@ entry: 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 %call, ptr %__a.addr.i13, align 8 + store i64 1, ptr %__n.addr.i14, align 8 + %0 = load ptr, ptr %__a.addr.i13, align 8 + %1 = load i64, ptr %__n.addr.i14, align 8 + %call.i15 = call noundef ptr @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) + store ptr %call.i15, ptr %__nptr, align 8 + %2 = load ptr, ptr %__nptr, align 8 + %call3 = call noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeIPK1ALb0EEEEPT_S7_(ptr noundef %2) #11 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 + %3 = load ptr, ptr %__n, align 8 + call void @_ZNSt8__detail10_Hash_nodeIPK1ALb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #11 %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 + %add.ptr = getelementptr inbounds i8, ptr %4, i64 8 + store ptr %add.ptr, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %call.i = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1.i) #11 + %5 = load ptr, ptr %__args.addr, align 8 + store ptr %call4, ptr %__a.addr.i16, align 8 + store ptr %call.i, ptr %__p.addr.i17, align 8 + store ptr %5, ptr %__args.addr.i, align 8 + %6 = load ptr, ptr %__a.addr.i16, align 8 + %7 = load ptr, ptr %__p.addr.i17, align 8 + %8 = load ptr, ptr %__args.addr.i, align 8 + store ptr %6, ptr %this.addr.i18, align 8 + store ptr %7, ptr %__p.addr.i19, align 8 + store ptr %8, ptr %__args.addr.i20, align 8 + %this1.i21 = load ptr, ptr %this.addr.i18, align 8 + %9 = load ptr, ptr %__p.addr.i19, align 8 + %10 = load ptr, ptr %__args.addr.i20, align 8 + %11 = load ptr, ptr %10, align 8 + store ptr %11, ptr %9, align 8 + %12 = load ptr, ptr %__n, align 8 + ret ptr %12 lpad: ; preds = %entry - %5 = landingpad { ptr, i32 } + %13 = 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 + %14 = extractvalue { ptr, i32 } %13, 0 + store ptr %14, ptr %exn.slot, align 8 + %15 = extractvalue { ptr, i32 } %13, 1 + store i32 %15, 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 + %16 = call ptr @__cxa_begin_catch(ptr %exn) #11 %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 + %17 = load ptr, ptr %__nptr, align 8 + store ptr %call8, ptr %__a.addr.i, align 8 + store ptr %17, ptr %__p.addr.i, align 8 + store i64 1, ptr %__n.addr.i, align 8 + %18 = load ptr, ptr %__a.addr.i, align 8 + %19 = load ptr, ptr %__p.addr.i, align 8 + %20 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %18, ptr noundef %19, i64 noundef %20) + br label %invoke.cont9 invoke.cont9: ; preds = %invoke.cont7 - invoke void @__cxa_rethrow() #17 + invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad6 -lpad6: ; preds = %invoke.cont9, %invoke.cont7, %catch - %10 = landingpad { ptr, i32 } +lpad6: ; preds = %invoke.cont9, %catch + %21 = 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 + %22 = extractvalue { ptr, i32 } %21, 0 + store ptr %22, ptr %exn.slot, align 8 + %23 = extractvalue { ptr, i32 } %21, 1 + store i32 %23, ptr %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont10 unwind label %terminate.lpad @@ -2158,29 +2239,16 @@ eh.resume: ; preds = %invoke.cont10 resume { ptr, i32 } %lpad.val12 terminate.lpad: ; preds = %lpad6 - %13 = landingpad { ptr, i32 } + %24 = landingpad { ptr, i32 } catch ptr null - %14 = extractvalue { ptr, i32 } %13, 0 - call void @__clang_call_terminate(ptr %14) #16 + %25 = extractvalue { ptr, i32 } %24, 0 + call void @__clang_call_terminate(ptr %25) #13 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: @@ -2190,29 +2258,14 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt8__detail10_Hash_nodeIPK1ALb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #11 + %0 = getelementptr inbounds i8, ptr %this1, i64 8 ret void } @@ -2220,12 +2273,13 @@ declare void @__cxa_rethrow() declare void @__cxa_end_catch() -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #13 +; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) +declare void @llvm.trap() #9 ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -2234,60 +2288,36 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 576460752303423487 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #17 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 1152921504606846975 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #18 - ret ptr %call2 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #15 + unreachable -; 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 +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 16 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; 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 -} +declare void @_ZSt28__throw_bad_array_new_lengthv() #10 -; 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: noreturn +declare void @_ZSt17__throw_bad_allocv() #10 ; 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 { @@ -2295,7 +2325,7 @@ 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 + %_M_next_resize = getelementptr inbounds nuw %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 %0 = load i64, ptr %_M_next_resize, align 8 ret i64 %0 } @@ -2333,15 +2363,15 @@ lpad: ; preds = %entry 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 + %4 = call ptr @__cxa_begin_catch(ptr %exn) #11 + %_M_rehash_policy = getelementptr inbounds nuw %"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 + invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad2 lpad2: ; preds = %invoke.cont3, %catch @@ -2371,7 +2401,7 @@ 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 + call void @__clang_call_terminate(ptr %11) #13 unreachable unreachable: ; preds = %invoke.cont3 @@ -2379,7 +2409,7 @@ unreachable: ; preds = %invoke.cont3 } ; 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 { +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_codeERNS_21_Hash_node_code_cacheILb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -2401,69 +2431,70 @@ entry: 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 + %_M_buckets = getelementptr inbounds nuw %"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 + %arrayidx = getelementptr inbounds nuw 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 + %_M_buckets2 = getelementptr inbounds nuw %"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 + %arrayidx3 = getelementptr inbounds nuw 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 + %_M_nxt = getelementptr inbounds nuw %"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 + %_M_nxt4 = getelementptr inbounds nuw %"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 + %_M_buckets5 = getelementptr inbounds nuw %"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 + %arrayidx6 = getelementptr inbounds nuw 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 + %_M_nxt7 = getelementptr inbounds nuw %"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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt8 = getelementptr inbounds nuw %"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 + %_M_nxt9 = getelementptr inbounds nuw %"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 + %_M_before_begin10 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt11 = getelementptr inbounds nuw %"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 + %_M_nxt12 = getelementptr inbounds nuw %"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 + %_M_buckets15 = getelementptr inbounds nuw %"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 + %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #11 + %add.ptr = getelementptr inbounds i8, ptr %call, i64 8 + %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_indexERKNS4_16_Hash_node_valueIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(8) %add.ptr) #11 + %arrayidx17 = getelementptr inbounds nuw 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 + %_M_before_begin18 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_buckets19 = getelementptr inbounds nuw %"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 + %arrayidx20 = getelementptr inbounds nuw ptr, ptr %20, i64 %21 store ptr %_M_before_begin18, ptr %arrayidx20, align 8 br label %if.end21 @@ -2490,8 +2521,8 @@ entry: 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 + %_M_before_begin = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt = getelementptr inbounds nuw %"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 @@ -2503,37 +2534,38 @@ while.cond: ; preds = %if.end22, %entry 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 + %call3 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #11 store ptr %call3, ptr %__next, align 8 %4 = load ptr, ptr %__p, align 8 + %add.ptr = getelementptr inbounds i8, ptr %4, i64 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 + %call4 = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKNS_16_Hash_node_valueIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %add.ptr, i64 noundef %5) #11 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 + %arrayidx = getelementptr inbounds nuw 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 + %_M_before_begin6 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt7 = getelementptr inbounds nuw %"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 + %_M_nxt8 = getelementptr inbounds nuw %"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 + %_M_before_begin9 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_M_nxt10 = getelementptr inbounds nuw %"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 + %_M_before_begin11 = getelementptr inbounds nuw %"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 + %arrayidx12 = getelementptr inbounds nuw 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 + %_M_nxt13 = getelementptr inbounds nuw %"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 @@ -2542,7 +2574,7 @@ 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 + %arrayidx16 = getelementptr inbounds nuw ptr, ptr %17, i64 %18 store ptr %16, ptr %arrayidx16, align 8 br label %if.end @@ -2554,34 +2586,34 @@ if.end: ; preds = %if.then15, %if.then 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 + %arrayidx17 = getelementptr inbounds nuw 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 + %_M_nxt18 = getelementptr inbounds nuw %"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 + %_M_nxt19 = getelementptr inbounds nuw %"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 + %arrayidx20 = getelementptr inbounds nuw 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 + %_M_nxt21 = getelementptr inbounds nuw %"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 + br label %while.cond, !llvm.loop !10 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 + %_M_bucket_count = getelementptr inbounds nuw %"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 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 store ptr %31, ptr %_M_buckets, align 8 ret void } @@ -2595,7 +2627,7 @@ entry: 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 + %_M_next_resize = getelementptr inbounds nuw %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 store i64 %0, ptr %_M_next_resize, align 8 ret void } @@ -2614,9 +2646,9 @@ entry: 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 + %_M_single_bucket = getelementptr inbounds nuw %"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 + %_M_single_bucket2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 store ptr %_M_single_bucket2, ptr %retval, align 8 br label %return @@ -2634,9 +2666,16 @@ return: ; preds = %if.end, %if.then ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 + %this.addr.i9 = alloca ptr, align 8 + %this.addr.i7 = alloca ptr, align 8 + %this.addr.i5 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 + %__alloc = alloca %"class.std::allocator.2", align 1 %__ptr = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -2645,32 +2684,47 @@ entry: 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 + store ptr %__alloc, ptr %this.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i9, align 8 + %this1.i10 = load ptr, ptr %this.addr.i9, align 8 %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 %__alloc, ptr %__a.addr.i, align 8 + store i64 %0, ptr %__n.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + %2 = load i64, ptr %__n.addr.i, align 8 + %call.i11 = invoke noundef ptr @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %2, ptr noundef null) + to label %_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit unwind label %lpad + +_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m.exit + store ptr %call.i11, ptr %__ptr, align 8 + %3 = load ptr, ptr %__ptr, align 8 + %call3 = call noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %3) #11 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 + %5 = load i64, ptr %__bkt_count.addr, align 8 + %mul = mul i64 %5, 8 + call void @llvm.memset.p0.i64(ptr align 8 %4, i8 0, i64 %mul, i1 false) + %6 = load ptr, ptr %__p, align 8 + store ptr %__alloc, ptr %this.addr.i5, align 8 + %this1.i6 = load ptr, ptr %this.addr.i5, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i6) #11 + ret ptr %6 lpad: ; preds = %entry - %5 = landingpad { ptr, i32 } + %7 = 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 + %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 + store ptr %__alloc, ptr %this.addr.i7, align 8 + %this1.i8 = load ptr, ptr %this.addr.i7, align 8 + call void @_ZNSt15__new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i8) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -2681,19 +2735,6 @@ eh.resume: ; preds = %lpad 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: @@ -2704,8 +2745,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_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.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -2714,71 +2756,47 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 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 -} + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end -; 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 -} +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #15 + unreachable -; 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 -} +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #15 + unreachable -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) } +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 +} + +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { cold noreturn nounwind memory(inaccessiblemem: write) } +attributes #10 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { nounwind } +attributes #12 = { builtin allocsize(0) } +attributes #13 = { noreturn nounwind } +attributes #14 = { builtin nounwind } +attributes #15 = { noreturn } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -2788,8 +2806,9 @@ attributes #18 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} !9 = distinct !{!9, !7} +!10 = distinct !{!10, !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 index c3207efdb..2ce25753b 100644 --- a/test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.Data = type { i32, i32, i32, %struct.Point } %struct.Point = type { i32, i32 } @@ -22,13 +22,13 @@ entry: %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 + %p = getelementptr inbounds nuw %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 + %p2 = getelementptr inbounds nuw %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 @@ -38,8 +38,8 @@ entry: ; 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 #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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -50,4 +50,4 @@ attributes #2 = { builtin allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc b/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc index 0816d57a1..e28ff1d34 100644 --- a/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc @@ -1,16 +1,16 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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 @@ -26,16 +26,10 @@ $_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 @@ -50,22 +44,14 @@ $_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m = comdat any $_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev = comdat any -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any +$_ZNSt15__new_allocatorI1AE10deallocateEPS0_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 +$_ZNSt15__new_allocatorI1AED2Ev = 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 @@ -90,21 +76,11 @@ $_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 +$_ZNSt15__new_allocatorI1AE8allocateEmPKv = comdat any $_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_ = comdat any @@ -114,35 +90,24 @@ $_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 +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 { @@ -277,24 +242,8 @@ entry: 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 { +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 @@ -309,13 +258,13 @@ entry: 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 + call void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #8 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #8 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorI1ASaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %vec, i64 noundef 0) #8 store ptr %call, ptr %aptr, align 8 %0 = load ptr, ptr %aptr, align 8 %1 = load ptr, ptr %ptr, align 8 @@ -327,7 +276,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #8 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -338,7 +287,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #8 br label %eh.resume eh.resume: ; preds = %lpad @@ -349,66 +298,84 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #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 #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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.i = alloca ptr, align 8 + %__p.addr.i9 = alloca ptr, align 8 + %__args.addr.i10 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_impl4 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish5 = getelementptr inbounds nuw %"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 %_M_impl3, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i9, align 8 + store ptr %6, ptr %__args.addr.i10, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i9, align 8 + %8 = load ptr, ptr %__args.addr.i10, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8 + %_M_impl6 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish7 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 + %9 = load ptr, ptr %_M_finish7, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, 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 + %call = call ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + %coerce.dive = getelementptr inbounds nuw %"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) + %10 = load ptr, ptr %__x.addr, align 8 + %coerce.dive8 = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 + %11 = 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 %11, ptr noundef nonnull align 8 dereferenceable(8) %10) br label %if.end if.end: ; preds = %if.else, %if.then @@ -425,98 +392,95 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw %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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %__first.addr.i = alloca ptr, align 8 + %__last.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %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) #8 + store ptr %0, ptr %__first.addr.i, align 8 + store ptr %1, ptr %__last.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %2 = load ptr, ptr %__first.addr.i, align 8 + %3 = load ptr, ptr %__last.addr.i, align 8 + invoke void @_ZSt8_DestroyIP1AEvT_S2_(ptr noundef %2, ptr noundef %3) + to label %_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E.exit unwind label %terminate.lpad + +_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E.exit + call void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 ret void terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + %_M_impl = getelementptr inbounds nuw %"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) #8 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_start = getelementptr inbounds nuw %"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 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_end_of_storage = getelementptr inbounds nuw %"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: @@ -531,35 +495,20 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #8 + call void @_ZSt9terminatev() #9 unreachable } @@ -567,20 +516,20 @@ 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #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 %"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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start4 = getelementptr inbounds nuw %"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 @@ -590,15 +539,15 @@ entry: 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 + %_M_impl5 = getelementptr inbounds nuw %"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) #8 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 + call void @__clang_call_terminate(ptr %4) #9 unreachable } @@ -628,6 +577,9 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -640,72 +592,57 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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) + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 %2, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 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) + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #8 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #10 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -713,25 +650,15 @@ entry: 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: + %this.addr.i = alloca ptr, align 8 + %__p.addr.i22 = alloca ptr, align 8 + %__args.addr.i23 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %__position = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -742,78 +669,90 @@ entry: %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 + %coerce.dive = getelementptr inbounds nuw %"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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %call3 = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + %coerce.dive4 = getelementptr inbounds nuw %"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 + %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) #8 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 + %_M_impl7 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw %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 %_M_impl7, ptr %__a.addr.i, align 8 + store ptr %add.ptr, ptr %__p.addr.i, align 8 + store ptr %6, ptr %__args.addr.i, align 8 + %7 = load ptr, ptr %__a.addr.i, align 8 + %8 = load ptr, ptr %__p.addr.i, align 8 + %9 = load ptr, ptr %__args.addr.i, align 8 + store ptr %7, ptr %this.addr.i, align 8 + store ptr %8, ptr %__p.addr.i22, align 8 + store ptr %9, ptr %__args.addr.i23, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %10 = load ptr, ptr %__p.addr.i22, align 8 + %11 = load ptr, ptr %__args.addr.i23, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8 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 + %12 = 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) #8 + %13 = load ptr, ptr %call8, align 8 + %14 = 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) #8 + %call10 = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull align 1 dereferenceable(1) %call9) #8 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 + %15 = load ptr, ptr %__new_finish, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %15, 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 + %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #8 + %16 = load ptr, ptr %call11, align 8 + %17 = load ptr, ptr %__old_finish, align 8 + %18 = 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) #8 + %call13 = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef nonnull align 1 dereferenceable(1) %call12) #8 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 + %19 = load ptr, ptr %__old_start, align 8 + %_M_impl14 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl14, i32 0, i32 2 + %20 = load ptr, ptr %_M_end_of_storage, align 8 + %21 = load ptr, ptr %__old_start, align 8 + %sub.ptr.lhs.cast = ptrtoint ptr %20 to i64 + %sub.ptr.rhs.cast = ptrtoint ptr %21 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 + call void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %19, i64 noundef %sub.ptr.div) + %22 = load ptr, ptr %__new_start, align 8 + %_M_impl15 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl15, i32 0, i32 0 + store ptr %22, ptr %_M_start16, align 8 + %23 = load ptr, ptr %__new_finish, align 8 + %_M_impl17 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish18 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl17, i32 0, i32 1 + store ptr %23, ptr %_M_finish18, align 8 + %24 = load ptr, ptr %__new_start, align 8 + %25 = load i64, ptr %__len, align 8 + %add.ptr19 = getelementptr inbounds nuw %class.A, ptr %24, i64 %25 + %_M_impl20 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage21 = getelementptr inbounds nuw %"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 } @@ -825,39 +764,23 @@ 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 - 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #8 + %coerce.dive = getelementptr inbounds nuw %"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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -873,8 +796,8 @@ entry: 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 + %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + %call2 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 %sub = sub i64 %call, %call2 %0 = load i64, ptr %__n.addr, align 8 %cmp = icmp ult i64 %sub, %0 @@ -882,30 +805,30 @@ entry: if.then: ; preds = %entry %1 = load ptr, ptr %__s.addr, align 8 - call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #13 + call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #11 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 + %call3 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + %call4 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 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 + %call6 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 %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 + %call8 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 %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 + %call10 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 br label %cond.end cond.false: ; preds = %lor.lhs.false @@ -925,10 +848,10 @@ entry: 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #8 %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 + %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #8 %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 @@ -944,10 +867,10 @@ 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 - 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #8 + %coerce.dive = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -955,6 +878,8 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 @@ -965,16 +890,20 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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) + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %3, ptr noundef null) 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 ] + %cond = phi ptr [ %call.i, %cond.true ], [ null, %cond.false ] ret ptr %cond } @@ -985,7 +914,6 @@ entry: %__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 @@ -994,7 +922,7 @@ entry: %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 + %call = call noundef ptr @_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #8 ret ptr %call } @@ -1004,7 +932,7 @@ 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 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 ret ptr %_M_current } @@ -1014,8 +942,8 @@ 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 + %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) #8 + %call2 = call noundef i64 @_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #8 ret i64 %call2 } @@ -1025,11 +953,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 @@ -1039,7 +967,7 @@ entry: } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #10 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #6 ; 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 { @@ -1074,26 +1002,34 @@ return: ; preds = %if.end, %if.then ; 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: + %this.addr.i3 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i3, align 8 + %this1.i4 = load ptr, ptr %this.addr.i3, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #9 unreachable } @@ -1103,20 +1039,10 @@ 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_impl = getelementptr inbounds nuw %"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: @@ -1148,33 +1074,14 @@ return: ; preds = %if.end, %if.then } ; 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 { +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 #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 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"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 @@ -1182,21 +1089,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1205,46 +1100,39 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable + +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #10 +declare void @_ZSt28__throw_bad_array_new_lengthv() #6 -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #11 +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #6 -; 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: nobuiltin allocsize(0) +declare noundef nonnull ptr @_Znwm(i64 noundef) #7 ; 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 { @@ -1258,13 +1146,13 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %0) #8 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %1) #8 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %2) #8 %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 + %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) #8 ret ptr %call3 } @@ -1294,15 +1182,15 @@ 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 + call void @_ZSt19__relocate_object_aI1AS0_SaIS0_EEvPT_PT0_RT1_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 1 dereferenceable(1) %5) #8 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 + %incdec.ptr = getelementptr inbounds nuw %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 + %incdec.ptr1 = getelementptr inbounds nuw %class.A, ptr %7, i32 1 store ptr %incdec.ptr1, ptr %__cur, align 8 br label %for.cond, !llvm.loop !6 @@ -1323,6 +1211,16 @@ entry: ; 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: + %this.addr.i5 = alloca ptr, align 8 + %__p.addr.i6 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__p.addr.i3 = alloca ptr, align 8 + %__args.addr.i4 = alloca ptr, align 8 + %__a.addr.i1 = alloca ptr, align 8 + %__p.addr.i2 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %__dest.addr = alloca ptr, align 8 %__orig.addr = alloca ptr, align 8 %__alloc.addr = alloca ptr, align 8 @@ -1332,104 +1230,57 @@ entry: %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 + store ptr %0, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i3, align 8 + store ptr %5, ptr %__args.addr.i4, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i3, align 8 + %7 = load ptr, ptr %__args.addr.i4, align 8 + call void @_ZN1AC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8 + %8 = load ptr, ptr %__alloc.addr, align 8 + %9 = load ptr, ptr %__orig.addr, align 8 + store ptr %8, ptr %__a.addr.i1, align 8 + store ptr %9, ptr %__p.addr.i2, align 8 + %10 = load ptr, ptr %__a.addr.i1, align 8 + %11 = load ptr, ptr %__p.addr.i2, align 8 + store ptr %10, ptr %this.addr.i5, align 8 + store ptr %11, ptr %__p.addr.i6, align 8 + %this1.i7 = load ptr, ptr %this.addr.i5, align 8 + %12 = load ptr, ptr %__p.addr.i6, align 8 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 { +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 #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 - 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() + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, 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 = { 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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nounwind } +attributes #9 = { noreturn nounwind } +attributes #10 = { builtin nounwind } +attributes #11 = { noreturn } +attributes #12 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1439,6 +1290,6 @@ attributes #14 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index a039f70f2..d59f5994d 100644 --- a/test_cases_bc/basic_cpp_tests/vector-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/vector-2.cpp.bc @@ -1,15 +1,15 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/vector-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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 @@ -25,16 +25,10 @@ $_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 @@ -49,22 +43,14 @@ $_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 +$_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_ = comdat any +$_ZNSt15__new_allocatorIP1AED2Ev = 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 @@ -87,21 +73,11 @@ $_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 +$_ZNSt15__new_allocatorIP1AE8allocateEmPKv = comdat any $_ZSt12__relocate_aIPP1AS2_SaIS1_EET0_T_S5_S4_RT1_ = comdat any @@ -111,23 +87,20 @@ $_ZSt12__niter_baseIPP1AET_S3_ = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 { @@ -262,24 +235,8 @@ entry: 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 { +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 @@ -294,18 +251,18 @@ entry: 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 + call void @_ZNSt6vectorIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #9 + %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #10 to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #9 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 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP1ASaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %vec, i64 noundef 0) #9 %0 = load ptr, ptr %call2, align 8 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 @@ -318,7 +275,7 @@ invoke.cont1: ; preds = %invoke.cont 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 + call void @_ZNSt6vectorIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #9 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -329,7 +286,7 @@ lpad: ; preds = %invoke.cont1, %invo 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 + call void @_ZNSt6vectorIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -340,71 +297,90 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt6vectorIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt12_Vector_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 ret void } ; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 +declare noundef nonnull ptr @_Znwm(i64 noundef) #4 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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.i = alloca ptr, align 8 + %__p.addr.i9 = alloca ptr, align 8 + %__args.addr.i10 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_impl4 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish5 = getelementptr inbounds nuw %"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 %_M_impl3, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i9, align 8 + store ptr %6, ptr %__args.addr.i10, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i9, align 8 + %8 = load ptr, ptr %__args.addr.i10, align 8 + %9 = load ptr, ptr %8, align 8 + store ptr %9, ptr %7, align 8 + %_M_impl6 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish7 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 + %10 = load ptr, ptr %_M_finish7, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, 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 + %call = call ptr @_ZNSt6vectorIP1ASaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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) + %11 = load ptr, ptr %__x.addr, align 8 + %coerce.dive8 = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 + %12 = 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 %12, ptr noundef nonnull align 8 dereferenceable(8) %11) br label %if.end if.end: ; preds = %if.else, %if.then @@ -419,98 +395,95 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt6vectorIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %__first.addr.i = alloca ptr, align 8 + %__last.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %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) #9 + store ptr %0, ptr %__first.addr.i, align 8 + store ptr %1, ptr %__last.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %2 = load ptr, ptr %__first.addr.i, align 8 + %3 = load ptr, ptr %__last.addr.i, align 8 + invoke void @_ZSt8_DestroyIPP1AEvT_S3_(ptr noundef %2, ptr noundef %3) + to label %_ZSt8_DestroyIPP1AS1_EvT_S3_RSaIT0_E.exit unwind label %terminate.lpad + +_ZSt8_DestroyIPP1AS1_EvT_S3_RSaIT0_E.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZSt8_DestroyIPP1AS1_EvT_S3_RSaIT0_E.exit + call void @_ZNSt12_Vector_baseIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 ret void terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #14 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #11 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt12_Vector_baseIP1ASaIS1_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_start = getelementptr inbounds nuw %"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 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_end_of_storage = getelementptr inbounds nuw %"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: @@ -525,35 +498,20 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #5 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #11 unreachable } @@ -561,20 +519,20 @@ 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #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 %"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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start4 = getelementptr inbounds nuw %"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 @@ -584,15 +542,15 @@ entry: 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 + %_M_impl5 = getelementptr inbounds nuw %"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) #9 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 + call void @__clang_call_terminate(ptr %4) #11 unreachable } @@ -622,6 +580,9 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -634,72 +595,57 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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) + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 %2, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 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) + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #12 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #6 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -707,25 +653,15 @@ entry: 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: + %this.addr.i = alloca ptr, align 8 + %__p.addr.i22 = alloca ptr, align 8 + %__args.addr.i23 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %__position = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -736,78 +672,91 @@ entry: %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 + %coerce.dive = getelementptr inbounds nuw %"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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %call3 = call ptr @_ZNSt6vectorIP1ASaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %coerce.dive4 = getelementptr inbounds nuw %"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 + %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) #9 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 + %_M_impl7 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 %_M_impl7, ptr %__a.addr.i, align 8 + store ptr %add.ptr, ptr %__p.addr.i, align 8 + store ptr %6, ptr %__args.addr.i, align 8 + %7 = load ptr, ptr %__a.addr.i, align 8 + %8 = load ptr, ptr %__p.addr.i, align 8 + %9 = load ptr, ptr %__args.addr.i, align 8 + store ptr %7, ptr %this.addr.i, align 8 + store ptr %8, ptr %__p.addr.i22, align 8 + store ptr %9, ptr %__args.addr.i23, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %10 = load ptr, ptr %__p.addr.i22, align 8 + %11 = load ptr, ptr %__args.addr.i23, align 8 + %12 = load ptr, ptr %11, align 8 + store ptr %12, ptr %10, align 8 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 + %13 = 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) #9 + %14 = load ptr, ptr %call8, align 8 + %15 = 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) #9 + %call10 = call noundef ptr @_ZNSt6vectorIP1ASaIS1_EE11_S_relocateEPS1_S4_S4_RS2_(ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef nonnull align 1 dereferenceable(1) %call9) #9 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 + %16 = load ptr, ptr %__new_finish, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %16, 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 + %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #9 + %17 = load ptr, ptr %call11, align 8 + %18 = load ptr, ptr %__old_finish, align 8 + %19 = 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) #9 + %call13 = call noundef ptr @_ZNSt6vectorIP1ASaIS1_EE11_S_relocateEPS1_S4_S4_RS2_(ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull align 1 dereferenceable(1) %call12) #9 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 + %20 = load ptr, ptr %__old_start, align 8 + %_M_impl14 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl14, i32 0, i32 2 + %21 = load ptr, ptr %_M_end_of_storage, align 8 + %22 = load ptr, ptr %__old_start, align 8 + %sub.ptr.lhs.cast = ptrtoint ptr %21 to i64 + %sub.ptr.rhs.cast = ptrtoint ptr %22 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 + call void @_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %20, i64 noundef %sub.ptr.div) + %23 = load ptr, ptr %__new_start, align 8 + %_M_impl15 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl15, i32 0, i32 0 + store ptr %23, ptr %_M_start16, align 8 + %24 = load ptr, ptr %__new_finish, align 8 + %_M_impl17 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish18 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl17, i32 0, i32 1 + store ptr %24, ptr %_M_finish18, align 8 + %25 = load ptr, ptr %__new_start, align 8 + %26 = load i64, ptr %__len, align 8 + %add.ptr19 = getelementptr inbounds nuw ptr, ptr %25, i64 %26 + %_M_impl20 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage21 = getelementptr inbounds nuw %"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 } @@ -819,31 +768,14 @@ 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 - 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"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: @@ -856,8 +788,8 @@ entry: 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 + %call = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %call2 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 %sub = sub i64 %call, %call2 %0 = load i64, ptr %__n.addr, align 8 %cmp = icmp ult i64 %sub, %0 @@ -865,30 +797,30 @@ entry: if.then: ; preds = %entry %1 = load ptr, ptr %__s.addr, align 8 - call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #15 + call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #13 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 + %call3 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %call4 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 + %call6 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 %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 + %call8 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 %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 + %call10 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 br label %cond.end cond.false: ; preds = %lor.lhs.false @@ -908,10 +840,10 @@ entry: 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #9 %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 + %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #9 %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 @@ -927,10 +859,10 @@ 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 - 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -938,6 +870,8 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 @@ -948,16 +882,20 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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) + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %3, ptr noundef null) 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 ] + %cond = phi ptr [ %call.i, %cond.true ], [ null, %cond.false ] ret ptr %cond } @@ -968,7 +906,6 @@ entry: %__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 @@ -977,7 +914,7 @@ entry: %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 + %call = call noundef ptr @_ZSt12__relocate_aIPP1AS2_SaIS1_EET0_T_S5_S4_RT1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #9 ret ptr %call } @@ -987,7 +924,7 @@ 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 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 ret ptr %_M_current } @@ -997,8 +934,8 @@ 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 + %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) #9 + %call2 = call noundef i64 @_ZNSt6vectorIP1ASaIS1_EE11_S_max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %call) #9 ret i64 %call2 } @@ -1008,11 +945,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 @@ -1022,7 +959,7 @@ entry: } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #11 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 ; 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 { @@ -1057,26 +994,34 @@ return: ; preds = %if.end, %if.then ; 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: + %this.addr.i3 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i3, align 8 + %this1.i4 = load ptr, ptr %this.addr.i3, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #14 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #11 unreachable } @@ -1086,20 +1031,10 @@ 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_impl = getelementptr inbounds nuw %"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: @@ -1131,33 +1066,14 @@ return: ; preds = %if.end, %if.then } ; 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 { +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 #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 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"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 @@ -1165,21 +1081,9 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1188,43 +1092,36 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #15 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #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) #16 - ret ptr %call2 +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #13 + unreachable + +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #10 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 +declare void @_ZSt28__throw_bad_array_new_lengthv() #7 -; 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: noreturn +declare void @_ZSt17__throw_bad_allocv() #7 ; 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 { @@ -1238,51 +1135,51 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #9 %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 + %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) #9 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 { +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) %__alloc) #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 + %__alloc.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 + store ptr %__alloc, ptr %__alloc.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 %__count, align 8 - %3 = load i64, ptr %__count, align 8 - %cmp = icmp sgt i64 %3, 0 + %2 = load i64, ptr %__count, align 8 + %cmp = icmp sgt i64 %2, 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) + %3 = load ptr, ptr %__result.addr, align 8 + %4 = load ptr, ptr %__first.addr, align 8 + %5 = load i64, ptr %__count, align 8 + %mul = mul i64 %5, 8 + 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 - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %__count, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %7, i64 %8 + %6 = load ptr, ptr %__result.addr, align 8 + %7 = load i64, ptr %__count, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 ret ptr %add.ptr } @@ -1296,32 +1193,22 @@ entry: } ; 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) } +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #8 + +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { nounwind } +attributes #10 = { builtin allocsize(0) } +attributes #11 = { noreturn nounwind } +attributes #12 = { builtin nounwind } +attributes #13 = { noreturn } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1331,4 +1218,4 @@ attributes #16 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc b/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc index bec4ea835..bda72c01f 100644 --- a/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -11,7 +12,6 @@ target triple = "x86_64-unknown-linux-gnu" %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 @@ -21,7 +21,7 @@ $_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 +$_ZN9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv = comdat any @@ -31,16 +31,10 @@ $_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 @@ -55,22 +49,14 @@ $_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m = comdat any $_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev = comdat any -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any +$_ZNSt15__new_allocatorI1AE10deallocateEPS0_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 +$_ZNSt15__new_allocatorI1AED2Ev = 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 @@ -93,19 +79,9 @@ $_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 +$_ZNSt15__new_allocatorI1AE8allocateEmPKv = comdat any $_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_ = comdat any @@ -115,37 +91,26 @@ $_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 +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 { @@ -280,24 +245,8 @@ entry: 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 { +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 @@ -314,17 +263,17 @@ entry: 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 + call void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #8 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #8 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 + %call = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %vec) #8 + %coerce.dive = getelementptr inbounds nuw %"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 + call void @_ZN9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #8 + %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #8 store ptr %call1, ptr %aptr, align 8 %0 = load ptr, ptr %aptr, align 8 %1 = load ptr, ptr %ptr, align 8 @@ -336,7 +285,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #8 %3 = load i32, ptr %retval, align 4 ret i32 %3 @@ -347,7 +296,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #8 br label %eh.resume eh.resume: ; preds = %lpad @@ -358,66 +307,84 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #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 #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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.i = alloca ptr, align 8 + %__p.addr.i9 = alloca ptr, align 8 + %__args.addr.i10 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_impl4 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish5 = getelementptr inbounds nuw %"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 %_M_impl3, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i9, align 8 + store ptr %6, ptr %__args.addr.i10, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i9, align 8 + %8 = load ptr, ptr %__args.addr.i10, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8 + %_M_impl6 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish7 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 + %9 = load ptr, ptr %_M_finish7, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, 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 + %call = call ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + %coerce.dive = getelementptr inbounds nuw %"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) + %10 = load ptr, ptr %__x.addr, align 8 + %coerce.dive8 = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 + %11 = 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 %11, ptr noundef nonnull align 8 dereferenceable(8) %10) br label %if.end if.end: ; preds = %if.else, %if.then @@ -433,25 +400,25 @@ 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 - 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #8 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__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 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #8 %1 = load ptr, ptr %call, align 8 store ptr %1, ptr %_M_current, align 8 ret void @@ -463,95 +430,92 @@ 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 + %_M_current = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %__first.addr.i = alloca ptr, align 8 + %__last.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %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) #8 + store ptr %0, ptr %__first.addr.i, align 8 + store ptr %1, ptr %__last.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %2 = load ptr, ptr %__first.addr.i, align 8 + %3 = load ptr, ptr %__last.addr.i, align 8 + invoke void @_ZSt8_DestroyIP1AEvT_S2_(ptr noundef %2, ptr noundef %3) + to label %_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E.exit unwind label %terminate.lpad + +_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E.exit + call void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 ret void terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + %_M_impl = getelementptr inbounds nuw %"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) #8 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_start = getelementptr inbounds nuw %"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 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_end_of_storage = getelementptr inbounds nuw %"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: @@ -566,35 +530,20 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #8 + call void @_ZSt9terminatev() #9 unreachable } @@ -602,20 +551,20 @@ 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #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 %"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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start4 = getelementptr inbounds nuw %"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 @@ -625,15 +574,15 @@ entry: 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 + %_M_impl5 = getelementptr inbounds nuw %"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) #8 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 + call void @__clang_call_terminate(ptr %4) #9 unreachable } @@ -663,6 +612,9 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -675,72 +627,57 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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) + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 %2, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 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) + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #8 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AE10deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #10 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 -} +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -748,25 +685,15 @@ entry: 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: + %this.addr.i = alloca ptr, align 8 + %__p.addr.i22 = alloca ptr, align 8 + %__args.addr.i23 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %__position = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -777,78 +704,90 @@ entry: %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 + %coerce.dive = getelementptr inbounds nuw %"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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %call3 = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + %coerce.dive4 = getelementptr inbounds nuw %"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 + %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) #8 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 + %_M_impl7 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw %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 %_M_impl7, ptr %__a.addr.i, align 8 + store ptr %add.ptr, ptr %__p.addr.i, align 8 + store ptr %6, ptr %__args.addr.i, align 8 + %7 = load ptr, ptr %__a.addr.i, align 8 + %8 = load ptr, ptr %__p.addr.i, align 8 + %9 = load ptr, ptr %__args.addr.i, align 8 + store ptr %7, ptr %this.addr.i, align 8 + store ptr %8, ptr %__p.addr.i22, align 8 + store ptr %9, ptr %__args.addr.i23, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %10 = load ptr, ptr %__p.addr.i22, align 8 + %11 = load ptr, ptr %__args.addr.i23, align 8 + call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8 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 + %12 = 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) #8 + %13 = load ptr, ptr %call8, align 8 + %14 = 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) #8 + %call10 = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull align 1 dereferenceable(1) %call9) #8 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 + %15 = load ptr, ptr %__new_finish, align 8 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %15, 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 + %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #8 + %16 = load ptr, ptr %call11, align 8 + %17 = load ptr, ptr %__old_finish, align 8 + %18 = 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) #8 + %call13 = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef nonnull align 1 dereferenceable(1) %call12) #8 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 + %19 = load ptr, ptr %__old_start, align 8 + %_M_impl14 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl14, i32 0, i32 2 + %20 = load ptr, ptr %_M_end_of_storage, align 8 + %21 = load ptr, ptr %__old_start, align 8 + %sub.ptr.lhs.cast = ptrtoint ptr %20 to i64 + %sub.ptr.rhs.cast = ptrtoint ptr %21 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 + call void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %19, i64 noundef %sub.ptr.div) + %22 = load ptr, ptr %__new_start, align 8 + %_M_impl15 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl15, i32 0, i32 0 + store ptr %22, ptr %_M_start16, align 8 + %23 = load ptr, ptr %__new_finish, align 8 + %_M_impl17 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish18 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl17, i32 0, i32 1 + store ptr %23, ptr %_M_finish18, align 8 + %24 = load ptr, ptr %__new_start, align 8 + %25 = load i64, ptr %__len, align 8 + %add.ptr19 = getelementptr inbounds nuw %class.A, ptr %24, i64 %25 + %_M_impl20 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage21 = getelementptr inbounds nuw %"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 } @@ -860,39 +799,23 @@ 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 - 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #8 + %coerce.dive = getelementptr inbounds nuw %"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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -908,8 +831,8 @@ entry: 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 + %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + %call2 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 %sub = sub i64 %call, %call2 %0 = load i64, ptr %__n.addr, align 8 %cmp = icmp ult i64 %sub, %0 @@ -917,30 +840,30 @@ entry: if.then: ; preds = %entry %1 = load ptr, ptr %__s.addr, align 8 - call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #13 + call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #11 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 + %call3 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 + %call4 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 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 + %call6 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 %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 + %call8 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 %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 + %call10 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #8 br label %cond.end cond.false: ; preds = %lor.lhs.false @@ -960,10 +883,10 @@ entry: 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #8 %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 + %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #8 %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 @@ -975,6 +898,8 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 @@ -985,16 +910,20 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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) + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %3, ptr noundef null) 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 ] + %cond = phi ptr [ %call.i, %cond.true ], [ null, %cond.false ] ret ptr %cond } @@ -1005,7 +934,6 @@ entry: %__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 @@ -1014,7 +942,7 @@ entry: %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 + %call = call noundef ptr @_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #8 ret ptr %call } @@ -1024,7 +952,7 @@ 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 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 ret ptr %_M_current } @@ -1034,8 +962,8 @@ 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 + %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) #8 + %call2 = call noundef i64 @_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #8 ret i64 %call2 } @@ -1045,11 +973,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 @@ -1059,7 +987,7 @@ entry: } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #10 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #6 ; 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 { @@ -1094,26 +1022,34 @@ return: ; preds = %if.end, %if.then ; 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: + %this.addr.i3 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i3, align 8 + %this1.i4 = load ptr, ptr %this.addr.i3, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #9 unreachable } @@ -1123,20 +1059,10 @@ 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_impl = getelementptr inbounds nuw %"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: @@ -1167,41 +1093,10 @@ return: ; preds = %if.end, %if.then 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1210,46 +1105,39 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #11 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 +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #11 + unreachable + +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #12 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #10 +declare void @_ZSt28__throw_bad_array_new_lengthv() #6 -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #11 +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #6 -; 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: nobuiltin allocsize(0) +declare noundef nonnull ptr @_Znwm(i64 noundef) #7 ; 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 { @@ -1263,13 +1151,13 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %0) #8 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %1) #8 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %2) #8 %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 + %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) #8 ret ptr %call3 } @@ -1299,15 +1187,15 @@ 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 + call void @_ZSt19__relocate_object_aI1AS0_SaIS0_EEvPT_PT0_RT1_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 1 dereferenceable(1) %5) #8 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 + %incdec.ptr = getelementptr inbounds nuw %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 + %incdec.ptr1 = getelementptr inbounds nuw %class.A, ptr %7, i32 1 store ptr %incdec.ptr1, ptr %__cur, align 8 br label %for.cond, !llvm.loop !6 @@ -1328,6 +1216,16 @@ entry: ; 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: + %this.addr.i5 = alloca ptr, align 8 + %__p.addr.i6 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__p.addr.i3 = alloca ptr, align 8 + %__args.addr.i4 = alloca ptr, align 8 + %__a.addr.i1 = alloca ptr, align 8 + %__p.addr.i2 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %__dest.addr = alloca ptr, align 8 %__orig.addr = alloca ptr, align 8 %__alloc.addr = alloca ptr, align 8 @@ -1337,119 +1235,72 @@ entry: %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 + store ptr %0, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store ptr %2, ptr %__args.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load ptr, ptr %__args.addr.i, align 8 + store ptr %3, ptr %this.addr.i, align 8 + store ptr %4, ptr %__p.addr.i3, align 8 + store ptr %5, ptr %__args.addr.i4, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %6 = load ptr, ptr %__p.addr.i3, align 8 + %7 = load ptr, ptr %__args.addr.i4, align 8 + call void @_ZN1AC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8 + %8 = load ptr, ptr %__alloc.addr, align 8 + %9 = load ptr, ptr %__orig.addr, align 8 + store ptr %8, ptr %__a.addr.i1, align 8 + store ptr %9, ptr %__p.addr.i2, align 8 + %10 = load ptr, ptr %__a.addr.i1, align 8 + %11 = load ptr, ptr %__p.addr.i2, align 8 + store ptr %10, ptr %this.addr.i5, align 8 + store ptr %11, ptr %__p.addr.i6, align 8 + %this1.i7 = load ptr, ptr %this.addr.i5, align 8 + %12 = load ptr, ptr %__p.addr.i6, align 8 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 { +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 #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 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +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 #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 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nounwind } +attributes #9 = { noreturn nounwind } +attributes #10 = { builtin nounwind } +attributes #11 = { noreturn } +attributes #12 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1459,6 +1310,6 @@ attributes #14 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index f2a09d727..634f5d7d6 100644 --- a/test_cases_bc/basic_cpp_tests/vector-4.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/vector-4.cpp.bc @@ -1,9 +1,10 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/vector-4.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +module asm ".globl _ZSt21ios_base_library_initv" -%"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" } @@ -11,7 +12,6 @@ target triple = "x86_64-unknown-linux-gnu" %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 @@ -21,7 +21,7 @@ $_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 +$_ZN9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEC2IPS3_vEERKNS0_IT_S8_EE = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEdeEv = comdat any @@ -31,16 +31,10 @@ $_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 @@ -55,26 +49,18 @@ $_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 +$_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m = comdat any -$_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev = comdat any +$_ZNSt15__new_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 @@ -95,19 +81,9 @@ $_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 +$_ZNSt15__new_allocatorIPK1AE8allocateEmPKv = comdat any $_ZSt12__relocate_aIPPK1AS3_SaIS2_EET0_T_S6_S5_RT1_ = comdat any @@ -123,23 +99,20 @@ $_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEdeEv = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @.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 { @@ -274,24 +247,8 @@ entry: 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 { +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 @@ -309,18 +266,18 @@ entry: 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 + call void @_ZNSt6vectorIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #9 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 + %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %vec) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + call void @_ZN9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEC2IPS3_vEERKNS0_IT_S8_EE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp1) #9 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #9 %0 = load ptr, ptr %call2, align 8 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 @@ -333,7 +290,7 @@ invoke.cont: ; preds = %entry 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 + call void @_ZNSt6vectorIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #9 %4 = load i32, ptr %retval, align 4 ret i32 %4 @@ -344,7 +301,7 @@ lpad: ; preds = %invoke.cont, %entry 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 + call void @_ZNSt6vectorIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -355,23 +312,23 @@ eh.resume: ; preds = %lpad 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZNSt12_Vector_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -397,25 +354,25 @@ 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 - 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEC2IPS3_vEERKNS0_IT_S8_EE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__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 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #9 %1 = load ptr, ptr %call, align 8 store ptr %1, ptr %_M_current, align 8 ret void @@ -427,95 +384,92 @@ 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 + %_M_current = getelementptr inbounds nuw %"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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %__first.addr.i = alloca ptr, align 8 + %__last.addr.i = alloca ptr, align 8 + %.addr.i = alloca ptr, 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %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) #9 + store ptr %0, ptr %__first.addr.i, align 8 + store ptr %1, ptr %__last.addr.i, align 8 + store ptr %call, ptr %.addr.i, align 8 + %2 = load ptr, ptr %__first.addr.i, align 8 + %3 = load ptr, ptr %__last.addr.i, align 8 + invoke void @_ZSt8_DestroyIPPK1AEvT_S4_(ptr noundef %2, ptr noundef %3) + to label %_ZSt8_DestroyIPPK1AS2_EvT_S4_RSaIT0_E.exit unwind label %terminate.lpad + +_ZSt8_DestroyIPPK1AS2_EvT_S4_RSaIT0_E.exit: ; preds = %entry + br label %invoke.cont + +invoke.cont: ; preds = %_ZSt8_DestroyIPPK1AS2_EvT_S4_RSaIT0_E.exit + call void @_ZNSt12_Vector_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 ret void terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #13 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #10 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #2 comdat align 2 { 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 + %_M_impl = getelementptr inbounds nuw %"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) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i2 = alloca ptr, align 8 + %this.addr.i = alloca ptr, 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 void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i2, align 8 + %this1.i3 = load ptr, ptr %this.addr.i2, align 8 + call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 { +; Function Attrs: mustprogress 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 #2 comdat align 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 + %_M_start = getelementptr inbounds nuw %"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 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_end_of_storage = getelementptr inbounds nuw %"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: @@ -530,35 +484,20 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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 +; Function Attrs: noinline noreturn nounwind uwtable +define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #4 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #9 + call void @_ZSt9terminatev() #10 unreachable } @@ -566,20 +505,20 @@ 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #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 %"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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start4 = getelementptr inbounds nuw %"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 @@ -589,15 +528,15 @@ entry: 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 + %_M_impl5 = getelementptr inbounds nuw %"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) #9 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 + call void @__clang_call_terminate(ptr %4) #10 unreachable } @@ -627,6 +566,9 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -639,72 +581,57 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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) + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store ptr %1, ptr %__p.addr.i, align 8 + store i64 %2, ptr %__n.addr.i, align 8 + %3 = load ptr, ptr %__a.addr.i, align 8 + %4 = load ptr, ptr %__p.addr.i, align 8 + %5 = load i64, ptr %__n.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4, i64 noundef %5) 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 { +; Function Attrs: mustprogress 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 #2 comdat align 2 { entry: + %this.addr.i = alloca ptr, 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 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) + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + call void @_ZNSt15__new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1.i) #9 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 { +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPK1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, 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 %__t, ptr %__t.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 - call void @_ZdlPv(ptr noundef %0) #5 + %1 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %1, 8 + call void @_ZdlPvm(ptr noundef %0, i64 noundef %mul) #11 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt15__new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -715,69 +642,78 @@ entry: ; 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.i = alloca ptr, align 8 + %__p.addr.i10 = alloca ptr, align 8 + %__args.addr.i11 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"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 + %_M_impl3 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_impl4 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish5 = getelementptr inbounds nuw %"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 %_M_impl3, ptr %__a.addr.i, align 8 + store ptr %2, ptr %__p.addr.i, align 8 + store ptr %3, ptr %__args.addr.i, align 8 + %4 = load ptr, ptr %__a.addr.i, align 8 + %5 = load ptr, ptr %__p.addr.i, align 8 + %6 = load ptr, ptr %__args.addr.i, align 8 + store ptr %4, ptr %this.addr.i, align 8 + store ptr %5, ptr %__p.addr.i10, align 8 + store ptr %6, ptr %__args.addr.i11, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %7 = load ptr, ptr %__p.addr.i10, align 8 + %8 = load ptr, ptr %__args.addr.i11, align 8 + %9 = load ptr, ptr %8, align 8 + store ptr %9, ptr %7, align 8 + %_M_impl6 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish7 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 + %10 = load ptr, ptr %_M_finish7, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, 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 + %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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) + %11 = load ptr, ptr %__args.addr, align 8 + %coerce.dive8 = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 + %12 = 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 %12, ptr noundef nonnull align 8 dereferenceable(8) %11) 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 + %call9 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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: + %this.addr.i = alloca ptr, align 8 + %__p.addr.i22 = alloca ptr, align 8 + %__args.addr.i23 = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 + %__p.addr.i = alloca ptr, align 8 + %__args.addr.i = alloca ptr, align 8 %__position = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -788,78 +724,91 @@ entry: %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 + %coerce.dive = getelementptr inbounds nuw %"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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %call3 = call ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %coerce.dive4 = getelementptr inbounds nuw %"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 + %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) #9 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 + %_M_impl7 = getelementptr inbounds nuw %"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 + %add.ptr = getelementptr inbounds nuw 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 %_M_impl7, ptr %__a.addr.i, align 8 + store ptr %add.ptr, ptr %__p.addr.i, align 8 + store ptr %6, ptr %__args.addr.i, align 8 + %7 = load ptr, ptr %__a.addr.i, align 8 + %8 = load ptr, ptr %__p.addr.i, align 8 + %9 = load ptr, ptr %__args.addr.i, align 8 + store ptr %7, ptr %this.addr.i, align 8 + store ptr %8, ptr %__p.addr.i22, align 8 + store ptr %9, ptr %__args.addr.i23, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %10 = load ptr, ptr %__p.addr.i22, align 8 + %11 = load ptr, ptr %__args.addr.i23, align 8 + %12 = load ptr, ptr %11, align 8 + store ptr %12, ptr %10, align 8 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 + %13 = 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) #9 + %14 = load ptr, ptr %call8, align 8 + %15 = 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) #9 + %call10 = call noundef ptr @_ZNSt6vectorIPK1ASaIS2_EE11_S_relocateEPS2_S5_S5_RS3_(ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef nonnull align 1 dereferenceable(1) %call9) #9 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 + %16 = load ptr, ptr %__new_finish, align 8 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %16, 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 + %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #9 + %17 = load ptr, ptr %call11, align 8 + %18 = load ptr, ptr %__old_finish, align 8 + %19 = 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) #9 + %call13 = call noundef ptr @_ZNSt6vectorIPK1ASaIS2_EE11_S_relocateEPS2_S5_S5_RS3_(ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull align 1 dereferenceable(1) %call12) #9 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 + %20 = load ptr, ptr %__old_start, align 8 + %_M_impl14 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl14, i32 0, i32 2 + %21 = load ptr, ptr %_M_end_of_storage, align 8 + %22 = load ptr, ptr %__old_start, align 8 + %sub.ptr.lhs.cast = ptrtoint ptr %21 to i64 + %sub.ptr.rhs.cast = ptrtoint ptr %22 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 + call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %20, i64 noundef %sub.ptr.div) + %23 = load ptr, ptr %__new_start, align 8 + %_M_impl15 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start16 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl15, i32 0, i32 0 + store ptr %23, ptr %_M_start16, align 8 + %24 = load ptr, ptr %__new_finish, align 8 + %_M_impl17 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish18 = getelementptr inbounds nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl17, i32 0, i32 1 + store ptr %24, ptr %_M_finish18, align 8 + %25 = load ptr, ptr %__new_start, align 8 + %26 = load i64, ptr %__len, align 8 + %add.ptr19 = getelementptr inbounds nuw ptr, ptr %25, i64 %26 + %_M_impl20 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_end_of_storage21 = getelementptr inbounds nuw %"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 } @@ -871,10 +820,10 @@ 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 - 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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) #9 + %coerce.dive = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 %0 = load ptr, ptr %coerce.dive, align 8 ret ptr %0 } @@ -887,33 +836,16 @@ entry: %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 + %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %coerce.dive = getelementptr inbounds nuw %"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 + %call3 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEmiEl(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2, i64 noundef 1) #9 + %coerce.dive4 = getelementptr inbounds nuw %"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 + %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) #9 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: @@ -926,8 +858,8 @@ entry: 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 + %call = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %call2 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 %sub = sub i64 %call, %call2 %0 = load i64, ptr %__n.addr, align 8 %cmp = icmp ult i64 %sub, %0 @@ -935,30 +867,30 @@ entry: if.then: ; preds = %entry %1 = load ptr, ptr %__s.addr, align 8 - call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #14 + call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #12 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 + %call3 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 + %call4 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 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 + %call6 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 %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 + %call8 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 %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 + %call10 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #9 br label %cond.end cond.false: ; preds = %lor.lhs.false @@ -978,10 +910,10 @@ entry: 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 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #9 %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 + %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #9 %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 @@ -993,6 +925,8 @@ entry: ; 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: + %__a.addr.i = alloca ptr, align 8 + %__n.addr.i = alloca i64, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1003,16 +937,20 @@ entry: 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 + %_M_impl = getelementptr inbounds nuw %"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) + store ptr %_M_impl, ptr %__a.addr.i, align 8 + store i64 %1, ptr %__n.addr.i, align 8 + %2 = load ptr, ptr %__a.addr.i, align 8 + %3 = load i64, ptr %__n.addr.i, align 8 + %call.i = call noundef ptr @_ZNSt15__new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %3, ptr noundef null) 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 ] + %cond = phi ptr [ %call.i, %cond.true ], [ null, %cond.false ] ret ptr %cond } @@ -1023,7 +961,6 @@ entry: %__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 @@ -1032,7 +969,7 @@ entry: %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 + %call = call noundef ptr @_ZSt12__relocate_aIPPK1AS3_SaIS2_EET0_T_S6_S5_RT1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #9 ret ptr %call } @@ -1042,7 +979,7 @@ 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 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 ret ptr %_M_current } @@ -1052,8 +989,8 @@ 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 + %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) #9 + %call2 = call noundef i64 @_ZNSt6vectorIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #9 ret i64 %call2 } @@ -1063,11 +1000,11 @@ 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 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_finish = getelementptr inbounds nuw %"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 + %_M_impl2 = getelementptr inbounds nuw %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 + %_M_start = getelementptr inbounds nuw %"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 @@ -1077,7 +1014,7 @@ entry: } ; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #10 +declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #6 ; 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 { @@ -1112,26 +1049,34 @@ return: ; preds = %if.end, %if.then ; 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: + %this.addr.i3 = alloca ptr, align 8 + %this.addr.i = alloca ptr, align 8 + %__a.addr.i = alloca ptr, align 8 %__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 + store ptr %0, ptr %__a.addr.i, align 8 + %1 = load ptr, ptr %__a.addr.i, align 8 + store ptr %1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + store ptr %this1.i, ptr %this.addr.i3, align 8 + %this1.i4 = load ptr, ptr %this.addr.i3, align 8 + store i64 1152921504606846975, 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 + %2 = load i64, ptr %call1, align 8 + ret i64 %2 terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #13 + %4 = extractvalue { ptr, i32 } %3, 0 + call void @__clang_call_terminate(ptr %4) #10 unreachable } @@ -1141,20 +1086,10 @@ 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_impl = getelementptr inbounds nuw %"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: @@ -1185,41 +1120,10 @@ return: ; preds = %if.end, %if.then 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt15__new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { entry: + %this.addr.i = alloca ptr, align 8 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca ptr, align 8 @@ -1228,46 +1132,39 @@ entry: 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 + store ptr %this1, ptr %this.addr.i, align 8 + %this1.i = load ptr, ptr %this.addr.i, align 8 + %cmp = icmp ugt i64 %1, 1152921504606846975 + br i1 %cmp, label %if.then, label %if.end4 if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #14 + %2 = load i64, ptr %__n.addr, align 8 + %cmp2 = icmp ugt i64 %2, 2305843009213693951 + br i1 %cmp2, label %if.then3, label %if.end + +if.then3: ; preds = %if.then + call void @_ZSt28__throw_bad_array_new_lengthv() #12 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 +if.end: ; preds = %if.then + call void @_ZSt17__throw_bad_allocv() #12 + unreachable + +if.end4: ; preds = %entry + %3 = load i64, ptr %__n.addr, align 8 + %mul = mul i64 %3, 8 + %call5 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #13 + ret ptr %call5 } ; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #10 +declare void @_ZSt28__throw_bad_array_new_lengthv() #6 -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #11 +; Function Attrs: noreturn +declare void @_ZSt17__throw_bad_allocv() #6 -; 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: nobuiltin allocsize(0) +declare noundef nonnull ptr @_Znwm(i64 noundef) #7 ; 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 { @@ -1281,51 +1178,51 @@ entry: 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 + %call = call noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %0) #9 %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %1) #5 + %call1 = call noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %1) #9 %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %2) #5 + %call2 = call noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %2) #9 %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 + %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) #9 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 { +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) %__alloc) #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 + %__alloc.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 + store ptr %__alloc, ptr %__alloc.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 %__count, align 8 - %3 = load i64, ptr %__count, align 8 - %cmp = icmp sgt i64 %3, 0 + %2 = load i64, ptr %__count, align 8 + %cmp = icmp sgt i64 %2, 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) + %3 = load ptr, ptr %__result.addr, align 8 + %4 = load ptr, ptr %__first.addr, align 8 + %5 = load i64, ptr %__count, align 8 + %mul = mul i64 %5, 8 + 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 - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %__count, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %7, i64 %8 + %6 = load ptr, ptr %__result.addr, align 8 + %7 = load i64, ptr %__count, align 8 + %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 ret ptr %add.ptr } @@ -1339,17 +1236,17 @@ entry: } ; 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 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #8 -; 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 { +; Function Attrs: mustprogress 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 #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 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"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 @@ -1366,14 +1263,14 @@ entry: 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 + %_M_current = getelementptr inbounds nuw %"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 + 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) #9 + %coerce.dive = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 %2 = load ptr, ptr %coerce.dive, align 8 ret ptr %2 } @@ -1384,34 +1281,25 @@ 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 + %_M_current = getelementptr inbounds nuw %"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) } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { noinline noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { nounwind } +attributes #10 = { noreturn nounwind } +attributes #11 = { builtin nounwind } +attributes #12 = { noreturn } +attributes #13 = { builtin allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -1421,4 +1309,4 @@ attributes #15 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 25e1091c1..ef9d82c20 100644 --- a/test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.F = type { %class.K } %class.K = type { ptr } @@ -18,24 +18,24 @@ $_ZN1K5faterEv = comdat any $_ZTV1F = comdat any -$_ZTS1F = comdat any +$_ZTI1F = comdat any -$_ZTS1K = comdat any +$_ZTS1F = comdat any $_ZTI1K = comdat any -$_ZTI1F = comdat any +$_ZTS1K = 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 +@_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 +@_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1K = linkonce_odr dso_local constant [3 x i8] c"1K\00", comdat, align 1 @_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 @@ -49,11 +49,11 @@ entry: %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 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 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 + call void @_ZN1FC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 store ptr %call, ptr %k, align 8 - call void @_ZN1FC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %f) #7 + call void @_ZN1FC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %f) #6 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 @@ -79,19 +79,19 @@ 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 +; Function Attrs: mustprogress 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 + call void @_ZN1KC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #6 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1F, i32 0, 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 { +define linkonce_odr dso_local noundef ptr @_ZN1F8getinputEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #3 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -100,7 +100,7 @@ entry: } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZN1F3fooEPPc(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %q) #3 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %q.addr = alloca ptr, align 8 @@ -115,20 +115,20 @@ entry: ret ptr %2 } -declare i32 @printf(ptr noundef, ...) #5 +declare i32 @printf(ptr noundef, ...) #4 -; Function Attrs: noinline nounwind optnone uwtable +; Function Attrs: mustprogress 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1K, i32 0, 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 { +define linkonce_odr dso_local noundef ptr @_ZN1K5faterEv(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 @@ -136,14 +136,13 @@ entry: 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 #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"="+cmov,+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"="+cmov,+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 } +attributes #3 = { 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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -153,4 +152,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 330010d40..514446d81 100644 --- 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 @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-diamond-inheritance-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %class.D = type { %class.B, %class.C } %class.B = type { %class.A } @@ -38,24 +38,24 @@ $_ZTT1D = comdat any $_ZTC1D0_1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTC1D8_1C = comdat any -$_ZTS1C = comdat any - $_ZTI1C = comdat any -$_ZTS1D = comdat any +$_ZTS1C = comdat any $_ZTI1D = comdat any +$_ZTS1D = comdat any + $_ZTV1A = comdat any @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @@ -78,19 +78,19 @@ $_ZTV1A = comdat any @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 +@_ZTT1D = linkonce_odr dso_local unnamed_addr constant [7 x ptr] [ptr getelementptr inbounds inrange(-40, 48) ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, i32 0, i32 5), ptr getelementptr inbounds inrange(-40, 32) ({ [9 x ptr] }, ptr @_ZTC1D0_1B, i32 0, i32 0, i32 5), ptr getelementptr inbounds inrange(-40, 32) ({ [9 x ptr] }, ptr @_ZTC1D0_1B, i32 0, i32 0, i32 5), ptr getelementptr inbounds inrange(-40, 32) ({ [9 x ptr], [6 x ptr] }, ptr @_ZTC1D8_1C, i32 0, i32 0, i32 5), ptr getelementptr inbounds inrange(-32, 16) ({ [9 x ptr], [6 x ptr] }, ptr @_ZTC1D8_1C, i32 0, i32 1, i32 4), ptr getelementptr inbounds inrange(-40, 48) ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, i32 0, i32 5), ptr getelementptr inbounds inrange(-40, 32) ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, 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 +@_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 +@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 +@_ZTS1C = linkonce_odr dso_local constant [3 x i8] c"1C\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 +@_ZTS1D = linkonce_odr dso_local constant [3 x i8] c"1D\00", comdat, align 1 @_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 @@ -256,7 +256,7 @@ entry: 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 + call void @_ZN1DC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %d) #4 %0 = icmp eq ptr %d, null br i1 %0, label %cast.end, label %cast.notnull @@ -333,35 +333,35 @@ cast.end10: ; preds = %cast.notnull8, %cas 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1DC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #4 + call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef getelementptr inbounds ([7 x ptr], ptr @_ZTT1D, i64 0, i64 1)) #4 %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 + call void @_ZN1CC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef getelementptr inbounds ([7 x ptr], ptr @_ZTT1D, i64 0, i64 3)) #4 + store ptr getelementptr inbounds inrange(-40, 48) ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, i32 0, i32 5), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-40, 48) ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, 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 + store ptr getelementptr inbounds inrange(-40, 32) ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %vtt) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %vtt.addr = alloca ptr, align 8 @@ -381,8 +381,8 @@ entry: 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1CC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %vtt) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %vtt.addr = alloca ptr, align 8 @@ -514,12 +514,11 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -529,4 +528,4 @@ attributes #5 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index 6af1332ab..cef1f46eb 100644 --- a/test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1BC1Ev = comdat any @@ -13,13 +13,13 @@ $_ZTV1B = comdat any $_ZTT1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -29,13 +29,13 @@ $_ZTV1A = comdat any @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 +@_ZTT1B = linkonce_odr dso_local unnamed_addr constant [2 x ptr] [ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4), ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4)], 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 +@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -183,8 +183,8 @@ entry: 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #5 + call void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #6 %0 = icmp eq ptr %call, null br i1 %0, label %cast.end, label %cast.notnull @@ -210,25 +210,25 @@ cast.end: ; preds = %cast.notnull, %entr ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #6 + store ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -246,14 +246,13 @@ entry: 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { builtin allocsize(0) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -263,4 +262,4 @@ attributes #7 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index ae07e82d7..e04b0cf1c 100644 --- a/test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1AC2Ev = comdat any @@ -15,18 +15,18 @@ $_ZTv0_n24_N1B1fEPi = comdat any $_ZTV1A = comdat any -$_ZTS1A = comdat any - $_ZTI1A = comdat any +$_ZTS1A = comdat any + $_ZTV1B = comdat any $_ZTT1B = comdat any -$_ZTS1B = comdat any - $_ZTI1B = comdat any +$_ZTS1B = 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 @@ -35,14 +35,14 @@ $_ZTI1B = comdat any @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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 +@_ZTT1B = linkonce_odr dso_local unnamed_addr constant [2 x ptr] [ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4), ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4)], 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 +@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global [0 x ptr] +@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 ; Function Attrs: mustprogress noinline optnone uwtable define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { @@ -191,8 +191,8 @@ entry: 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 + %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 @@ -201,8 +201,8 @@ entry: %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 + %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 + call void @_ZN1BC1Ev(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 @@ -216,25 +216,25 @@ entry: ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 + store ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4), ptr %this1, align 8 ret void } @@ -273,31 +273,30 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZTv0_n24_N1B1fEPi(ptr noundef %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 %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) + %vtable = load ptr, ptr %this1, align 8 + %0 = getelementptr inbounds i8, ptr %vtable, i64 -24 + %1 = load i64, ptr %0, align 8 + %2 = getelementptr inbounds i8, ptr %this1, i64 %1 + %3 = load ptr, ptr %i.addr, align 8 + tail call void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %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 = { 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -307,4 +306,4 @@ attributes #8 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 index c9fbf12e6..e98d875dc 100644 --- a/test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc' +source_filename = "/root/testsss/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-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1BC1Ev = comdat any @@ -23,13 +23,13 @@ $_ZTV1B = comdat any $_ZTT1B = comdat any -$_ZTS1B = comdat any +$_ZTI1B = comdat any -$_ZTS1A = comdat any +$_ZTS1B = comdat any $_ZTI1A = comdat any -$_ZTI1B = comdat any +$_ZTS1A = comdat any $_ZTV1A = comdat any @@ -41,13 +41,13 @@ $_ZTV1A = comdat any @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 +@_ZTT1B = linkonce_odr dso_local unnamed_addr constant [2 x ptr] [ptr getelementptr inbounds inrange(-40, 16) ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 5), ptr getelementptr inbounds inrange(-40, 16) ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 5)], 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 +@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global [0 x 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 +@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr] +@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_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 @@ -197,8 +197,8 @@ entry: 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 + %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 @@ -230,25 +230,25 @@ cast.end: ; preds = %cast.notnull, %entr ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 2 { 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 + call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 + store ptr getelementptr inbounds inrange(-40, 16) ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 5), ptr %this1, align 8 + store ptr getelementptr inbounds inrange(-40, 16) ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #2 comdat align 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 + store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %this1, align 8 ret void } @@ -321,48 +321,47 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZTv0_n24_N1B1fEPi(ptr noundef %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 %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) + %vtable = load ptr, ptr %this1, align 8 + %0 = getelementptr inbounds i8, ptr %vtable, i64 -24 + %1 = load i64, ptr %0, align 8 + %2 = getelementptr inbounds i8, ptr %this1, i64 %1 + %3 = load ptr, ptr %i.addr, align 8 + tail call void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3) 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 { +define linkonce_odr dso_local void @_ZTv0_n32_N1B1gEPf(ptr noundef %this, ptr noundef %j) unnamed_addr #5 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) + %vtable = load ptr, ptr %this1, align 8 + %0 = getelementptr inbounds i8, ptr %vtable, i64 -32 + %1 = load i64, ptr %0, align 8 + %2 = getelementptr inbounds i8, ptr %this1, i64 %1 + %3 = load ptr, ptr %j.addr, align 8 + tail call void @_ZN1B1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %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 = { 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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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"="+cmov,+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} @@ -372,4 +371,4 @@ attributes #8 = { nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/cond-swap.c.bc b/test_cases_bc/complex_tests/cond-swap.c.bc index 70cc2a1d8..5374741cc 100644 --- a/test_cases_bc/complex_tests/cond-swap.c.bc +++ b/test_cases_bc/complex_tests/cond-swap.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/cond-swap.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/cond-swap.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap(ptr noundef %a, ptr noundef %b, i32 noundef %flag) #0 { @@ -58,7 +58,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -68,4 +68,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-array.c.bc b/test_cases_bc/complex_tests/swap-array.c.bc index 6c198b2de..cb72f496e 100644 --- a/test_cases_bc/complex_tests/swap-array.c.bc +++ b/test_cases_bc/complex_tests/swap-array.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-array.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-array.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { @@ -50,7 +50,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -60,4 +60,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-funcptr.c.bc b/test_cases_bc/complex_tests/swap-funcptr.c.bc index f59ceaa36..4c7be0e5a 100644 --- a/test_cases_bc/complex_tests/swap-funcptr.c.bc +++ b/test_cases_bc/complex_tests/swap-funcptr.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-funcptr.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-funcptr.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p = dso_local global ptr null, align 8 @@ -49,7 +49,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -59,4 +59,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-funcptr1.c.bc b/test_cases_bc/complex_tests/swap-funcptr1.c.bc index 699f3e4d5..75f3a4774 100644 --- a/test_cases_bc/complex_tests/swap-funcptr1.c.bc +++ b/test_cases_bc/complex_tests/swap-funcptr1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-funcptr1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-funcptr1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p = dso_local global ptr null, align 8 @@ -59,7 +59,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -69,4 +69,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-funcptr2.c.bc b/test_cases_bc/complex_tests/swap-funcptr2.c.bc index 33060114c..f05ff0486 100644 --- a/test_cases_bc/complex_tests/swap-funcptr2.c.bc +++ b/test_cases_bc/complex_tests/swap-funcptr2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-funcptr2.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-funcptr2.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p = dso_local global ptr null, align 8 @@ -59,7 +59,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -69,4 +69,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-global.c.bc b/test_cases_bc/complex_tests/swap-global.c.bc index 0718c40a1..85c0f8bb5 100644 --- a/test_cases_bc/complex_tests/swap-global.c.bc +++ b/test_cases_bc/complex_tests/swap-global.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-global.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-global.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p1 = dso_local global ptr null, align 8 @p2 = dso_local global ptr null, align 8 @@ -46,7 +46,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -56,4 +56,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-global1.c.bc b/test_cases_bc/complex_tests/swap-global1.c.bc index 6655fd9d1..e8e0bc3cb 100644 --- a/test_cases_bc/complex_tests/swap-global1.c.bc +++ b/test_cases_bc/complex_tests/swap-global1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-global1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-global1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p1 = dso_local global ptr null, align 8 @p2 = dso_local global ptr null, align 8 @@ -38,7 +38,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -48,4 +48,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-global2.c.bc b/test_cases_bc/complex_tests/swap-global2.c.bc index 1ef0d240b..45fc827fc 100644 --- a/test_cases_bc/complex_tests/swap-global2.c.bc +++ b/test_cases_bc/complex_tests/swap-global2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-global2.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-global2.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p1 = dso_local global ptr null, align 8 @p2 = dso_local global ptr null, align 8 @@ -45,7 +45,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -55,4 +55,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-heap.c.bc b/test_cases_bc/complex_tests/swap-heap.c.bc index 95edf1492..bf637e3ec 100644 --- a/test_cases_bc/complex_tests/swap-heap.c.bc +++ b/test_cases_bc/complex_tests/swap-heap.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-heap.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-heap.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @ga = dso_local global [20 x i8] zeroinitializer, align 16 @@ -70,8 +70,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -81,4 +81,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-heap1.c.bc b/test_cases_bc/complex_tests/swap-heap1.c.bc index 74bca53ee..7f94405ad 100644 --- a/test_cases_bc/complex_tests/swap-heap1.c.bc +++ b/test_cases_bc/complex_tests/swap-heap1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-heap1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-heap1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @ga = dso_local global [20 x i8] zeroinitializer, align 16 @@ -73,8 +73,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -84,4 +84,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-heap2.c.bc b/test_cases_bc/complex_tests/swap-heap2.c.bc index 088341592..061627a75 100644 --- a/test_cases_bc/complex_tests/swap-heap2.c.bc +++ b/test_cases_bc/complex_tests/swap-heap2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-heap2.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-heap2.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @ga = dso_local global [20 x i8] zeroinitializer, align 16 @@ -77,8 +77,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -88,4 +88,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-heap3.c.bc b/test_cases_bc/complex_tests/swap-heap3.c.bc index 38157dc96..189751f0b 100644 --- a/test_cases_bc/complex_tests/swap-heap3.c.bc +++ b/test_cases_bc/complex_tests/swap-heap3.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-heap3.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-heap3.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @ga = dso_local global [20 x i8] zeroinitializer, align 16 @@ -77,8 +77,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -88,4 +88,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-heap4.c.bc b/test_cases_bc/complex_tests/swap-heap4.c.bc index 0ff321ad3..f89d61aa6 100644 --- a/test_cases_bc/complex_tests/swap-heap4.c.bc +++ b/test_cases_bc/complex_tests/swap-heap4.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-heap4.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-heap4.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @ga = dso_local global [20 x i8] zeroinitializer, align 16 @@ -82,8 +82,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -93,4 +93,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-indirect.c.bc b/test_cases_bc/complex_tests/swap-indirect.c.bc index c3ac4b9be..9dbbdb61a 100644 --- a/test_cases_bc/complex_tests/swap-indirect.c.bc +++ b/test_cases_bc/complex_tests/swap-indirect.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-indirect.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-indirect.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { @@ -63,7 +63,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -73,4 +73,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-indirect1.c.bc b/test_cases_bc/complex_tests/swap-indirect1.c.bc index 45c864421..e80304d77 100644 --- a/test_cases_bc/complex_tests/swap-indirect1.c.bc +++ b/test_cases_bc/complex_tests/swap-indirect1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-indirect1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-indirect1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap1(ptr noundef %a, ptr noundef %b) #0 { @@ -70,7 +70,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -80,4 +80,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-indirect2.c.bc b/test_cases_bc/complex_tests/swap-indirect2.c.bc index 863f9c7e5..5ff14a8b4 100644 --- a/test_cases_bc/complex_tests/swap-indirect2.c.bc +++ b/test_cases_bc/complex_tests/swap-indirect2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-indirect2.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-indirect2.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap1(ptr noundef %a, ptr noundef %b) #0 { @@ -86,7 +86,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -96,4 +96,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-recursion.c.bc b/test_cases_bc/complex_tests/swap-recursion.c.bc index 7b3a8000b..2f78450b7 100644 --- a/test_cases_bc/complex_tests/swap-recursion.c.bc +++ b/test_cases_bc/complex_tests/swap-recursion.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-recursion.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-recursion.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @n = internal global i32 0, align 4 @@ -75,7 +75,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -85,4 +85,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-struct.c.bc b/test_cases_bc/complex_tests/swap-struct.c.bc index f970c3063..50caa1b9d 100644 --- a/test_cases_bc/complex_tests/swap-struct.c.bc +++ b/test_cases_bc/complex_tests/swap-struct.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-struct.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-struct.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.ptrstruct = type { ptr, ptr } @@ -35,24 +35,24 @@ entry: %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 + %p1 = getelementptr inbounds nuw %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 + %p2 = getelementptr inbounds nuw %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 + %p12 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 0 + %p23 = getelementptr inbounds nuw %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 + %p24 = getelementptr inbounds nuw %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 + %p15 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -62,4 +62,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-struct1.c.bc b/test_cases_bc/complex_tests/swap-struct1.c.bc index 68eb7be18..6e61ea525 100644 --- a/test_cases_bc/complex_tests/swap-struct1.c.bc +++ b/test_cases_bc/complex_tests/swap-struct1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-struct1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-struct1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.ptrstruct = type { ptr, ptr } @@ -12,18 +12,18 @@ entry: %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 + %p1 = getelementptr inbounds nuw %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 + %p2 = getelementptr inbounds nuw %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 + %p11 = getelementptr inbounds nuw %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 + %p22 = getelementptr inbounds nuw %struct.ptrstruct, ptr %6, i32 0, i32 1 store ptr %5, ptr %p22, align 8 ret void } @@ -37,22 +37,22 @@ entry: %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 + %p1 = getelementptr inbounds nuw %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 + %p2 = getelementptr inbounds nuw %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 + %p22 = getelementptr inbounds nuw %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 + %p13 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -62,4 +62,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap-structindirect.c.bc b/test_cases_bc/complex_tests/swap-structindirect.c.bc index e4c4bc0d3..fc56781e7 100644 --- a/test_cases_bc/complex_tests/swap-structindirect.c.bc +++ b/test_cases_bc/complex_tests/swap-structindirect.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap-structindirect.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap-structindirect.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.ptrstruct = type { i32, ptr, ptr } @@ -16,18 +16,18 @@ entry: %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 + %p1 = getelementptr inbounds nuw %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 + %p2 = getelementptr inbounds nuw %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 + %p11 = getelementptr inbounds nuw %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 + %p22 = getelementptr inbounds nuw %struct.ptrstruct, ptr %8, i32 0, i32 2 store ptr %7, ptr %p22, align 8 ret void } @@ -43,22 +43,22 @@ entry: %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 + %p1 = getelementptr inbounds nuw %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 + %p2 = getelementptr inbounds nuw %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 + %p22 = getelementptr inbounds nuw %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 + %p13 = getelementptr inbounds nuw %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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -68,4 +68,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap.c.bc b/test_cases_bc/complex_tests/swap.c.bc index 497c8e9ef..e9eb28da6 100644 --- a/test_cases_bc/complex_tests/swap.c.bc +++ b/test_cases_bc/complex_tests/swap.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { @@ -45,7 +45,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -55,4 +55,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap1.c.bc b/test_cases_bc/complex_tests/swap1.c.bc index 48495f68c..054591540 100644 --- a/test_cases_bc/complex_tests/swap1.c.bc +++ b/test_cases_bc/complex_tests/swap1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { @@ -59,7 +59,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -69,4 +69,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap4-context.c.bc b/test_cases_bc/complex_tests/swap4-context.c.bc index 1a63f7228..c2873b2c6 100644 --- a/test_cases_bc/complex_tests/swap4-context.c.bc +++ b/test_cases_bc/complex_tests/swap4-context.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap4-context.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap4-context.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @a = dso_local global [20 x i8] zeroinitializer, align 16 @b = dso_local global [20 x i8] zeroinitializer, align 16 @@ -95,7 +95,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -105,4 +105,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap4-context1.c.bc b/test_cases_bc/complex_tests/swap4-context1.c.bc index f5b40a2c9..684b5e019 100644 --- a/test_cases_bc/complex_tests/swap4-context1.c.bc +++ b/test_cases_bc/complex_tests/swap4-context1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap4-context1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap4-context1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @a = dso_local global [20 x i8] zeroinitializer, align 16 @b = dso_local global [20 x i8] zeroinitializer, align 16 @@ -159,7 +159,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -169,4 +169,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap4-contextindirect.c.bc b/test_cases_bc/complex_tests/swap4-contextindirect.c.bc index 585d9385b..91018a547 100644 --- a/test_cases_bc/complex_tests/swap4-contextindirect.c.bc +++ b/test_cases_bc/complex_tests/swap4-contextindirect.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap4-contextindirect.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap4-contextindirect.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @a = dso_local global [20 x i8] zeroinitializer, align 16 @b = dso_local global [20 x i8] zeroinitializer, align 16 @@ -122,7 +122,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -132,4 +132,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/swap4.c.bc b/test_cases_bc/complex_tests/swap4.c.bc index 0511f813c..253396414 100644 --- a/test_cases_bc/complex_tests/swap4.c.bc +++ b/test_cases_bc/complex_tests/swap4.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/swap4.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/swap4.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @a = dso_local global [20 x i8] zeroinitializer, align 16 @b = dso_local global [20 x i8] zeroinitializer, align 16 @@ -47,7 +47,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -57,4 +57,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-clone.c.bc b/test_cases_bc/complex_tests/test-clone.c.bc index 5e4199bef..4e0f4323b 100644 --- a/test_cases_bc/complex_tests/test-clone.c.bc +++ b/test_cases_bc/complex_tests/test-clone.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-clone.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-clone.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @ptrs = dso_local global [10 x ptr] zeroinitializer, align 16 @my_malloc1.a = internal global ptr null, align 8 @@ -19,13 +19,13 @@ entry: 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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx2 = getelementptr inbounds nuw [10 x ptr], ptr @ptrs, i64 0, i64 %idxprom1 store ptr %3, ptr %arrayidx2, align 8 ret void } @@ -105,8 +105,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -116,4 +116,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-clone1.c.bc b/test_cases_bc/complex_tests/test-clone1.c.bc index abde6619a..28f999955 100644 --- a/test_cases_bc/complex_tests/test-clone1.c.bc +++ b/test_cases_bc/complex_tests/test-clone1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-clone1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-clone1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @ptrs = dso_local global [10 x ptr] zeroinitializer, align 16 @my_malloc1.a = internal global ptr null, align 8 @@ -19,13 +19,13 @@ entry: 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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx2 = getelementptr inbounds nuw [10 x ptr], ptr @ptrs, i64 0, i64 %idxprom1 store ptr %3, ptr %arrayidx2, align 8 ret void } @@ -113,8 +113,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -124,4 +124,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-cond.c.bc b/test_cases_bc/complex_tests/test-cond.c.bc index 6cd0ebf90..449dd06dc 100644 --- a/test_cases_bc/complex_tests/test-cond.c.bc +++ b/test_cases_bc/complex_tests/test-cond.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-cond.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-cond.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @g2 = dso_local global i8 0, align 1 @g1 = dso_local global i8 0, align 1 @@ -36,8 +36,8 @@ entry: 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -47,4 +47,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-globalstruct.c.bc b/test_cases_bc/complex_tests/test-globalstruct.c.bc index 7933d3854..ee6c56dc0 100644 --- a/test_cases_bc/complex_tests/test-globalstruct.c.bc +++ b/test_cases_bc/complex_tests/test-globalstruct.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-globalstruct.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-globalstruct.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.anon = type { ptr, ptr } @@ -20,7 +20,7 @@ entry: 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -30,4 +30,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-indirect.c.bc b/test_cases_bc/complex_tests/test-indirect.c.bc index 1eaf32577..db23f8b68 100644 --- a/test_cases_bc/complex_tests/test-indirect.c.bc +++ b/test_cases_bc/complex_tests/test-indirect.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-indirect.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-indirect.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @D(ptr noundef %ppp) #0 { @@ -50,7 +50,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -60,4 +60,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-indirect1.c.bc b/test_cases_bc/complex_tests/test-indirect1.c.bc index 1bce20839..d7ce5efb7 100644 --- a/test_cases_bc/complex_tests/test-indirect1.c.bc +++ b/test_cases_bc/complex_tests/test-indirect1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-indirect1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-indirect1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @g1 = dso_local global i32 0, align 4 @g2 = dso_local global i32 0, align 4 @@ -55,8 +55,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -67,4 +67,4 @@ attributes #2 = { nounwind allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-linklist.c.bc b/test_cases_bc/complex_tests/test-linklist.c.bc index a10a86ee0..878c7add2 100644 --- a/test_cases_bc/complex_tests/test-linklist.c.bc +++ b/test_cases_bc/complex_tests/test-linklist.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-linklist.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-linklist.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.list = type { i32, ptr } @@ -17,14 +17,14 @@ entry: while.cond: ; preds = %while.body, %entry %1 = load ptr, ptr %cur, align 8 - %flag = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 + %flag = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 @@ -49,10 +49,10 @@ entry: %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 + %next = getelementptr inbounds nuw %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 + %flag = getelementptr inbounds nuw %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 @@ -68,11 +68,11 @@ for.body: ; preds = %for.cond 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 + %flag2 = getelementptr inbounds nuw %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 + %next3 = getelementptr inbounds nuw %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 @@ -106,7 +106,7 @@ entry: while.cond: ; preds = %while.body, %entry %1 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 1 + %next = getelementptr inbounds nuw %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 @@ -120,7 +120,7 @@ while.body: ; preds = %while.cond 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 + %next1 = getelementptr inbounds nuw %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 @@ -136,7 +136,7 @@ entry: %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 + %flag = getelementptr inbounds nuw %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 @@ -156,8 +156,8 @@ if.end: ; preds = %if.then, %entry 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -167,7 +167,7 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/complex_tests/test-linklist1.c.bc b/test_cases_bc/complex_tests/test-linklist1.c.bc index 3352faaf3..f9588ff86 100644 --- a/test_cases_bc/complex_tests/test-linklist1.c.bc +++ b/test_cases_bc/complex_tests/test-linklist1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-linklist1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-linklist1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.list = type { i32, ptr, ptr } @@ -17,13 +17,13 @@ entry: %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 + %next = getelementptr inbounds nuw %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 + %prev = getelementptr inbounds nuw %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 + %flag = getelementptr inbounds nuw %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 @@ -39,18 +39,18 @@ for.body: ; preds = %for.cond 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 + %flag2 = getelementptr inbounds nuw %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 + %next3 = getelementptr inbounds nuw %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 + %prev4 = getelementptr inbounds nuw %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 + %prev5 = getelementptr inbounds nuw %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 @@ -81,21 +81,21 @@ entry: for.cond: ; preds = %for.inc, %entry %1 = load ptr, ptr %cur, align 8 - %flag = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 + %flag = getelementptr inbounds nuw %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 + %flag1 = getelementptr inbounds nuw %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 + %prev = getelementptr inbounds nuw %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 @@ -105,7 +105,7 @@ if.end: ; preds = %if.then, %for.body for.inc: ; preds = %if.end %7 = load ptr, ptr %cur, align 8 - %next = getelementptr inbounds %struct.list, ptr %7, i32 0, i32 1 + %next = getelementptr inbounds nuw %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 @@ -128,8 +128,8 @@ entry: 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -139,7 +139,7 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 714bd27ba..d84096070 100644 --- a/test_cases_bc/complex_tests/test-path.c.bc +++ b/test_cases_bc/complex_tests/test-path.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-path.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-path.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @h() #0 { @@ -90,8 +90,8 @@ if.end: ; preds = %if.else, %if.then 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -101,4 +101,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-recursive.c.bc b/test_cases_bc/complex_tests/test-recursive.c.bc index b14af1922..7b8885f67 100644 --- a/test_cases_bc/complex_tests/test-recursive.c.bc +++ b/test_cases_bc/complex_tests/test-recursive.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-recursive.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-recursive.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.list = type { i32, ptr, ptr } @@ -22,18 +22,18 @@ 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 + %field = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 + %prev = getelementptr inbounds nuw %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 + %prev1 = getelementptr inbounds nuw %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 @@ -62,13 +62,13 @@ entry: %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 + %field = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 + %prev = getelementptr inbounds nuw %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) @@ -76,8 +76,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -87,4 +87,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-recursive0.c.bc b/test_cases_bc/complex_tests/test-recursive0.c.bc index 10d34b866..e130717a0 100644 --- a/test_cases_bc/complex_tests/test-recursive0.c.bc +++ b/test_cases_bc/complex_tests/test-recursive0.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-recursive0.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-recursive0.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.list = type { ptr } @@ -22,7 +22,7 @@ if.then: ; preds = %entry 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 + %prev = getelementptr inbounds nuw %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) @@ -49,20 +49,20 @@ entry: %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 + %prev = getelementptr inbounds nuw %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 + %prev2 = getelementptr inbounds nuw %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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} @@ -73,4 +73,4 @@ attributes #2 = { allocsize(0) } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-recursive1.c.bc b/test_cases_bc/complex_tests/test-recursive1.c.bc index 1b64723b3..2c4e09c57 100644 --- a/test_cases_bc/complex_tests/test-recursive1.c.bc +++ b/test_cases_bc/complex_tests/test-recursive1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-recursive1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-recursive1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.list = type { i32, ptr, ptr } @@ -22,18 +22,18 @@ 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 + %field = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 + %prev = getelementptr inbounds nuw %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 + %prev1 = getelementptr inbounds nuw %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 @@ -68,14 +68,14 @@ entry: while.cond: ; preds = %while.body, %entry %1 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 2 + %prev = getelementptr inbounds nuw %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 + %prev1 = getelementptr inbounds nuw %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 @@ -85,7 +85,7 @@ while.end: ; preds = %while.cond 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 + %next = getelementptr inbounds nuw %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 @@ -94,26 +94,26 @@ 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 + %field = getelementptr inbounds nuw %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 + %field4 = getelementptr inbounds nuw %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 + %next6 = getelementptr inbounds nuw %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 + %prev7 = getelementptr inbounds nuw %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 @@ -122,11 +122,11 @@ 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 + %prev8 = getelementptr inbounds nuw %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 + %next9 = getelementptr inbounds nuw %struct.list, ptr %19, i32 0, i32 1 store ptr %18, ptr %next9, align 8 br label %while.cond2, !llvm.loop !8 @@ -142,13 +142,13 @@ entry: %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 + %field = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 + %prev = getelementptr inbounds nuw %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) @@ -159,8 +159,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -170,7 +170,7 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 530d16302..fe1c72142 100644 --- a/test_cases_bc/complex_tests/test-recursive2.c.bc +++ b/test_cases_bc/complex_tests/test-recursive2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-recursive2.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-recursive2.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.list = type { i32, ptr, ptr } @@ -22,18 +22,18 @@ 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 + %field = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 + %prev = getelementptr inbounds nuw %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 + %prev1 = getelementptr inbounds nuw %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 @@ -76,7 +76,7 @@ if.then: ; preds = %entry 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 + %next = getelementptr inbounds nuw %struct.list, ptr %4, i32 0, i32 1 store ptr %3, ptr %next, align 8 br label %if.end @@ -98,14 +98,14 @@ entry: while.cond: ; preds = %while.body, %entry %1 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 2 + %prev = getelementptr inbounds nuw %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 + %prev1 = getelementptr inbounds nuw %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 @@ -115,7 +115,7 @@ while.end: ; preds = %while.cond 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 + %next = getelementptr inbounds nuw %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 @@ -124,26 +124,26 @@ 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 + %field = getelementptr inbounds nuw %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 + %field4 = getelementptr inbounds nuw %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 + %next6 = getelementptr inbounds nuw %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 + %prev7 = getelementptr inbounds nuw %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 @@ -152,11 +152,11 @@ 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 + %prev8 = getelementptr inbounds nuw %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 + %next9 = getelementptr inbounds nuw %struct.list, ptr %19, i32 0, i32 1 store ptr %18, ptr %next9, align 8 br label %while.cond2, !llvm.loop !8 @@ -172,13 +172,13 @@ entry: %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 + %field = getelementptr inbounds nuw %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 + %next = getelementptr inbounds nuw %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 + %prev = getelementptr inbounds nuw %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) @@ -189,8 +189,8 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -200,7 +200,7 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} !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 index 17026d529..c4c16c5f9 100644 --- a/test_cases_bc/complex_tests/test-recursiveglobal.c.bc +++ b/test_cases_bc/complex_tests/test-recursiveglobal.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-recursiveglobal.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p = dso_local global ptr null, align 8 @@ -13,7 +13,7 @@ entry: %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 + %add.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %idx.ext %2 = load i8, ptr %add.ptr, align 1 ret i8 %2 } @@ -55,7 +55,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -65,4 +65,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc b/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc index e692f4b7d..ab32ee638 100644 --- a/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc +++ b/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-recursiveglobal1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p = dso_local global ptr null, align 8 @q = dso_local global ptr null, align 8 @@ -58,7 +58,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -68,4 +68,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc b/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc index 3cd25a680..f8ca9bd73 100644 --- a/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc +++ b/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test-recursiveglobal2.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @p = dso_local global ptr null, align 8 @q = dso_local global ptr null, align 8 @@ -59,7 +59,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -69,4 +69,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test.c.bc b/test_cases_bc/complex_tests/test.c.bc index e266aa1f0..468847506 100644 --- a/test_cases_bc/complex_tests/test.c.bc +++ b/test_cases_bc/complex_tests/test.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %struct.extendstruct = type { ptr, ptr, i32 } %struct.basestruct = type { ptr, ptr } @@ -24,14 +24,14 @@ entry: %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 + %arrayidx = getelementptr inbounds nuw [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 + %arrayidx2 = getelementptr inbounds nuw [5 x ptr], ptr @saveptr, i64 0, i64 %idxprom1 store ptr %5, ptr %arrayidx2, align 8 ret void } @@ -43,7 +43,7 @@ entry: %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 + store ptr %call, ptr getelementptr inbounds nuw (%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 @@ -53,11 +53,11 @@ entry: %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 + %a = getelementptr inbounds nuw %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 + %a1 = getelementptr inbounds nuw %struct.basestruct, ptr %5, i32 0, i32 1 %6 = load ptr, ptr %a1, align 8 store i32 0, ptr %6, align 4 ret void @@ -65,8 +65,8 @@ entry: 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -76,4 +76,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test1-path.c.bc b/test_cases_bc/complex_tests/test1-path.c.bc index fa750c357..12e3666d0 100644 --- a/test_cases_bc/complex_tests/test1-path.c.bc +++ b/test_cases_bc/complex_tests/test1-path.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test1-path.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test1-path.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local signext i8 @h(ptr noundef %a) #0 { @@ -62,7 +62,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -72,4 +72,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test1.c.bc b/test_cases_bc/complex_tests/test1.c.bc index b185136d9..8056e8f99 100644 --- a/test_cases_bc/complex_tests/test1.c.bc +++ b/test_cases_bc/complex_tests/test1.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test1.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test1.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @c = dso_local global ptr null, align 8 @@ -55,8 +55,8 @@ entry: 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -66,4 +66,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test2-path.c.bc b/test_cases_bc/complex_tests/test2-path.c.bc index 415bf2d2a..b4652e957 100644 --- a/test_cases_bc/complex_tests/test2-path.c.bc +++ b/test_cases_bc/complex_tests/test2-path.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test2-path.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test2-path.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @h(ptr noundef %a) #0 { @@ -68,7 +68,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -78,4 +78,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test2.c.bc b/test_cases_bc/complex_tests/test2.c.bc index 06f076829..109bc53f0 100644 --- a/test_cases_bc/complex_tests/test2.c.bc +++ b/test_cases_bc/complex_tests/test2.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test2.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test2.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @f(ptr noundef %a) #0 { @@ -12,7 +12,7 @@ entry: %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 + %incdec.ptr = getelementptr inbounds nuw 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 @@ -43,7 +43,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -53,4 +53,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test3-path.c.bc b/test_cases_bc/complex_tests/test3-path.c.bc index e5910b7e2..bbdb82aa9 100644 --- a/test_cases_bc/complex_tests/test3-path.c.bc +++ b/test_cases_bc/complex_tests/test3-path.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test3-path.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test3-path.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @h() #0 { @@ -90,8 +90,8 @@ if.end: ; preds = %if.else, %if.then 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -101,4 +101,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test3.c.bc b/test_cases_bc/complex_tests/test3.c.bc index 18d6e294b..21bee41e2 100644 --- a/test_cases_bc/complex_tests/test3.c.bc +++ b/test_cases_bc/complex_tests/test3.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test3.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test3.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @f(ptr noundef %a) #0 { @@ -13,7 +13,7 @@ entry: %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 + %incdec.ptr = getelementptr inbounds nuw 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 @@ -82,7 +82,7 @@ if.end: ; preds = %if.else, %if.then 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -92,4 +92,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test4.c.bc b/test_cases_bc/complex_tests/test4.c.bc index ee8f1ede0..00c75d7dd 100644 --- a/test_cases_bc/complex_tests/test4.c.bc +++ b/test_cases_bc/complex_tests/test4.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test4.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test4.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @f(ptr noundef %a) #0 { @@ -14,7 +14,7 @@ entry: %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 + %incdec.ptr = getelementptr inbounds nuw 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 @@ -85,8 +85,8 @@ if.end: ; preds = %if.else, %if.then 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" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -96,4 +96,4 @@ attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test5.c.bc b/test_cases_bc/complex_tests/test5.c.bc index 7a5d9565e..e7c01fc3e 100644 --- a/test_cases_bc/complex_tests/test5.c.bc +++ b/test_cases_bc/complex_tests/test5.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test5.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test5.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @f(ptr noundef %a) #0 { @@ -12,7 +12,7 @@ entry: %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 + %incdec.ptr = getelementptr inbounds nuw 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 @@ -47,7 +47,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -57,4 +57,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test6.c.bc b/test_cases_bc/complex_tests/test6.c.bc index 786c21b96..a5e0cec69 100644 --- a/test_cases_bc/complex_tests/test6.c.bc +++ b/test_cases_bc/complex_tests/test6.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test6.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test6.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @f(ptr noundef %a) #0 { @@ -12,7 +12,7 @@ entry: %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 + %incdec.ptr = getelementptr inbounds nuw 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 @@ -44,7 +44,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -54,4 +54,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/complex_tests/test8.c.bc b/test_cases_bc/complex_tests/test8.c.bc index 55f8c53b0..7573ad388 100644 --- a/test_cases_bc/complex_tests/test8.c.bc +++ b/test_cases_bc/complex_tests/test8.c.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/complex_tests/test8.c.bc' +source_filename = "/root/testsss/Test-Suite/src/complex_tests/test8.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @f(ptr noundef %a) #0 { @@ -11,7 +11,7 @@ entry: 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 + %incdec.ptr = getelementptr inbounds nuw 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 @@ -34,7 +34,7 @@ entry: 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -44,4 +44,4 @@ attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-l !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} diff --git a/test_cases_bc/cpp_types/broken.cpp.bc b/test_cases_bc/cpp_types/broken.cpp.bc index 2995ea26c..144a076e5 100644 --- a/test_cases_bc/cpp_types/broken.cpp.bc +++ b/test_cases_bc/cpp_types/broken.cpp.bc @@ -1,7 +1,7 @@ -; 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" +; ModuleID = '/root/testsss/Test-Suite/test_cases_bc/cpp_types/broken.cpp.bc' +source_filename = "/root/testsss/Test-Suite/src/cpp_types/broken.cpp" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" $_ZN1AC2Ev = comdat any @@ -23,7 +23,7 @@ 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 + %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1) #4 invoke void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %call) to label %invoke.cont unwind label %lpad @@ -40,7 +40,7 @@ lpad: ; preds = %entry 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 + call void @_ZdlPvm(ptr noundef %call, i64 noundef 1) #5 br label %eh.resume eh.resume: ; preds = %lpad @@ -54,8 +54,8 @@ eh.resume: ; preds = %lpad ; 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -66,15 +66,14 @@ entry: declare i32 @__gxx_personality_v0(...) ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #4 +declare void @_ZdlPvm(ptr noundef, i64 noundef) #3 -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 } +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"="+cmov,+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"="+cmov,+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"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { builtin allocsize(0) } +attributes #5 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -84,4 +83,4 @@ attributes #6 = { builtin nounwind } !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"} +!5 = !{!"Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)"} 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 zfVrwU9p(124asFXdEfN%syr}EfPGNY?)J{~AeA6sGJ}ho|K|rH_|ZW781}@_U|c&1 zMngYtGvpF3$!Qv9NtMuaJk|glIb{9$|}@@^r@<5jMOj{TR8@mqeBf}Kq8f17hnf@ zY{Ah%)bIcbsUZW|j$#Y$np0Jm7^H@10d}8iB>1XJ4G%^Lbpp)M5WSa94NoMI(nbej zUzw;L3N`$>4ynOJh#gzc7DOY6dsNcR`3T93E!e=Ksy<>Q)13lrD|+vJRPS; zxORyp9vrnh&L=JTP`L2f@mdBZLAgs%LJe17q&ju5ZK!aN+ZVGHR+=y{^qBJK?w4J9 zYQJHnl%2*Gj2aqAELC)6u`1TR$OXhlElv531ba(NoHgApEX>^++(M zgo;ta`73U6u@MY`a*-+%i?qYWGXz%T@I1`J9$Uu{SddjYSfo8RnISMFhv#CY_SjAa zW`QRly5+t%eWp}Nu_m6bQEyNuHIH+&!`7Mdxsu`iO+SCqm1mL2bCtU{XlQm9=RKWR z(HJrjk8K=XZtGD)$7CoUU>JwQVeo^5G>f<*3o^#VhM1a4jK~ZHl~gY04ng&xS1~M* zilMAhUdhGC`~VE=#QQv-g8m@NLq8<62=(8oBB~`;7l_;=B4bQpAZopcVM#`RcgHJE zz&l+#`o)8T@*L9$&r_mY^nL{zf7lWuJ-1dp62_m%F5kmNkeLpFrc?n=h+#~8m{N)K zEb*LxwWB8<913DU4#y@hWxF-^$}nfaBKW6s4eKhAxqFtg{da&%E=hAwYa&A; zLqE7!tlBv$w!|5KFY-_jDjt(K>yc5`RqGOWaYovKSMwsPia#4=N0`Ap%2MA+b@U$WhbDeB?xRFqczNnaBn`)K=k0ZJdWQbC5w8_5fQDP5s?qCwUG%G3ZuEoq-`5!mF8Tv1 z9=EU76rteae`l#*x`2LD*MY|c3pqNx);v>7iFZY{7u71_UPKQCQ->sw+NoQP_goL;bZ50R7=MEBM^rdU zuta$#-T{ypOe3T)9#@H|1qc@jMa82`Zimtm8~qIrB6X*#CQZV&TZoXaQ9eRGz(m$Ay$Q6 zLJvIdQE$b2KFXPSh%=KGi~AOTv$I+(6gfhqGHQJ}Y9MkQ(g<&x3a=jJBugB|9e+;* z)~TNIe8-C8SbeB)bH_;PH4z5a`cDFYi!Ke>O;x?Dsrbz)lLqi)Ld} z)HAuTh-{Awqez2{9H|oYG737RgoS#hmZ?L+CukB(kByC08|zPT|B}_@FysetvU<|I zpu(OkTCZD^=VXM1n_$>eb=%I@zkHUI;D(PamPklCqq27QTe!$rpjm?4^pWcC`fhvwEiBXzuJ zCK{u>CkHZ29(v>>Ph(`kMD?toF@L>MJl#luUc#{H>arhI%Bg#t%rJ_EH{fLyGQciud&Nx2*UbTY+ ze-%$w7)vv?-e5nG>)<>Hbp`?I8us{lY5ha0E(ryXrei5It{9q1O(Iu2P{YZ-YKC#G zT(n5ZLq>9{jsshv9)C2Ve%Cp|4vz3{!z)5-7;LTDKltQo@!cr_dKlLMuVw6SXXpQW zzN-Sw4Nm-!GxI{yT3=mf>pac+&^QKb%=VsaKfBx>!%PL3P7O)3o^Z6^kGBxdjF_96 zW>i*3r0#$8!&``=Q5};1{ZU8yF;g7n-9BVYc2Su+52`T3yf#aQy@X8Gm1hdba`hVZT#kovu~EKLWwvqXk7$iU!M9)Hs5>(% z1r0uoT_Wr5N?UBL zg5sA*@sm>|sF0%E6;AYwM9K=M++=xfMp15RIbFoMKpNaHVck|(_ls?NGg-IgHeIB_ zog&r~vF#=FRAl?4(z+KJV1xU+4X`ZRXG)t(mFQiz&q&_6smVA%8iy{T*ikX(C0rVb zo5P~IVpVl^!@ePvHegdo{giG)Ot*$2Hzd!&yh?N4;PO$pBy+LBTeiW=aD%0o;p-xU zR|3PwTtk6(9mNmJ_B#`3rIPw*Q~VWyz9*V|8ian?lreIO!0>Ij;bV;bPGH!>H+Zh1 z^>Ynhqc`#m-uD~4RnZ=X8$J;kpmLV-4g2KCvYRAO1$wtO`IJ(|G$_3lfn%@_68b6? zZ52{qXxPIw{43nxy^8iE+@MEb_%|07WvH;+NEzErvO19I)7|9XO0ha1^lPAuty5aI zH~E*Mr%M0!K%Z7*KpNYvw85xjZc6=11Fbev{BKf{4IX#n0DXJ|h3ts8Mg)6-eLHe- zB`#fekIfCG%~PZ*2}Om7E=kTsL4w?oETN~Pfbq`tN<f|7F}BF97sNIw zz`4G=;>(TG`L@3(4{bV zsvR2&>q~alPb+PEE78g?N}8ge`-`NWeEQmQ`Wp00V(uyh-78AEraU(lJuS~&<3#sC zzaX;{cpzmUrzc8NB)J*b)k^Do2*A$f0;!X2)`~mUFx#g!(7Pefr-9^u2KkOMrc~;W z^(YKpVC+}@21}6#*#`ZXVPChwUn<&5w!wRe0XC*Ja7-yh&`ueX-Q;~B&`KfoKZD-b zqu zL1A-K>R;OAk1ggKAlEOcqdk!rzT+CAUtX#VJ}795`G)Vp4banfd=!DW0Ww>SvEPRq zzCyvtH|P&HRG`}Z5I|LvH)eIg{v+N}QW0YX@>(KNgOZ+}o0d$^aH6ll8Z&J=N!)uq zHeC{1lo`57w#eOAD_LDgb3}(6jm#wF^bAIBN>r|wguW&nz41Spft{Pdr=xzlCQ-U3 zn7+=5jv1m(*C@0_Qa}CC?~o(vq+WFtUu}2ub5j}gj2ikHr`$EzZIN|9$q@D8cGBP{ zLR<7pSEWt=f4cLJ-YqmhzaX<$C^jl>ksmclLxO5wjR1mkQ!p=i&Re{xsJE_TcLt0v zM_n=y4|PS8UzOBPg?a&nZSVq(RXql;RkZh9!ye4AANA#AgQY6GLp{Y%FTNS*gEjl3 zZn&|@7ez&D6aL1Hlrd+JLo>Z^N_~)k@&siQrT7^WjviVQyR4d0?)R0c04xQlV0{>R0s=oe&`j0ex( zsFSK_>c~N%asmhN-AJiZdX(Yq9gNZQ{(pMcPVY)KO7DWgC%8Iv0r?ZRPDjG0uVLh( z(alSeyBZ}fG&U8{xz?STHvd}&wZKPT@b+Rm$lY`a^}SG}-$d)xl~AKF-%g2uT!iU| zFXh^kyQM6dDW)%=TWt)%%;a5ya2+8a*>RjU}dDY-`NHYU30vn8Zd^m}6Dg4khi82{s+O zDr!oSDDh$pC6r)+1$9L~{v?o1Bmdt=)gZjjHjw;En^0EtYsma>g1r~$TZ9j<82x`s zNAB@x?8X(LD@YDaj*Syh~wwNo@VJ#|90ruk37E z@hO>v^1o%UPPU9u2MnbfGY+RIt*Jr|J~ux6IjSu}saJ&7r$XRHW%*0&1{To||UcU*zSGppi~9CLYW5mg0dnSdti+ zMZ8W>6?n6=u&(6RA6?tDUGt08W=#N-ihe{g1q(szk+o>yW0EJ} zRx-nc8dT1vnq&*g`3{YIF$29=#4w=+ad^xE{v@ucn9E}n@+%qHnIayefNz(`W9ReP zCX66d2+7SZn8&_K8E;Y$#9<_mdx9f8l(=P$ZlL3MlWau=m)e|d$0^rUy4s!KIc4(M z%$)cxuO8gSX-R-FgQ5(Ns-Da-5SNE@8wGq5*#r)ct1&Z?Wt;Grh5Sj3GTk6T!h=-%(gSi)1}z6O$-o#tdVDp*qAw!*$UL0>`eY7PO|_tB$mrG zp}Mho)JAG0Gg~*%g3**MMEqIEpdA^o6S&M~Y7hETHlN*|Eobr=3EWBCOSn)Z%Sr4T z0v3;vR7W$(&isYVHYspp)3Scy)(Nd9IjI|)W!0d}R(%dm9~scH!&7-IeM2HmNp7#jeI34p|ValPa{b7uS~TdSqfSTUo4=A%h`3x>_EIl zM-XjtBUNosqnl-=P*QtXU82ThREV9oR5#c{t)Z8=h%%*|-;OsqdviIvN|{~Bq{d`% z*_a6*U(|ij@smrvYUrz@=&RFne@f2v5}^rbZiXV)%bUKsCYM!>X09rO4D=H-OiiYv z^~4Ia;^fm)@g);|HCz3=`bCXFs+^8iL>VG_nu^wkeyX1?6&a*s^b9sVRYG6dZICXf zr-**M5g9M#>!)z(>GJmywp~bEYw#8$!I12>q{f81cSo%1I{Uzt6v=H!BB5Py{6W&e z{CNBIvb{z~)H^m9SB{A;meNAGCxA`0Pcpf3vc5?DCXC^Pb-LyRm@<~m#x%PT0s%>} zImE0+kk~;+T>yWO^{`cwo^(?KwwpC+USWr0b+LQsF`Net=mIu|{*y?^5*w4ToMvp_ zcw>Ca5AAiBVlT?Sh;5vgAV22r|DO-*7X_FJXtARsPzfFU*)+tj}-NIMDqCtA!cD6j8ysEP*OLXco!*0aE19iSAD!(paA&@l=4c=~5+gEkv5J zIqqqPy{_hRgBqzm)k(S=AT@4nviJs&Iu2W3#r6ZowZ{`3XFBSld-fur(psNVVI)BM zdU*@;SAf(OXAsZ51&~Ip@D8j6NPB*vSWY^o9ZMZotyReosrgABEfT0y>NU}$3L>5G zsSwTpNcXQ?XZ{9}mTwk|Aky9y+`!)eQq0acOT{q`zFqkvydz#(-((*GDy9DwPD=qu z9%Dm@;r)+~Ts#*bUAgAU>;*_68#c!~{Q*?6OLLH(1V{muzgk{}D(R1qi1a90UEoG# zpoI$9L~v|w6+vv((;C`Jfc<_#C;_|L-?vyi4`63bH$sVmsg)>dOAX>h5c@!yOWdktleEqOccDW z#N3rp8*A|tB2Bir9ex-%H{%(H_7gw~no0M%2a%2ipmbU&R!4~@QCzv@%KQM3LJn_U z(h60oT$w062UH3;NU{6}AayLZX;DC=CC{B?>jBcuITPJJ03_a9-{U=XENP68OODAZ-)i#vITSO9Hx%C0?qhqAf>QmyGO{hDlN@bX3{8~ zW`SBMk=&vPr`Rn46O3PCBnOn-<1OLp;xrS3xvtz!5$A4WWWj z&_g{pn9D5iVz(aW;1|sPGc=5%g}Rk4)sFe<6-=|y>~_$K5`S7ScgIpN`B}#tFtHhC z;ZK~jq`IXO^Gs#DoKNWjo+`d9$4706rtxYoyx%4?Atdd5Pf8X`)&O*)ZdbmcNxOh< zr>=0>7Q0eq*f=p@UQV>Pg7s}aEX!iD+B1+l=OWTqtZ&qTz zgRV5!BfM9XcNe54Z%daHek+vMl~qQZqb{>_S;23IX8tU*csVSs%5tuRy-!D=X_k7L zy2^9F6jZsmj@a*J-x1l#PJuoZcT`D6GgbA(@yE2#d5Lr=aTa=yHjOyEs#rUS;U>xRM}wRUM!L2s`0iQ1uD4q{{PiaLJNp8#ynU!rL= z6##pGO}U3z3BmSCA9I3!*B*}|Cey>*HZIfdcf2}-vRLkY5I>7;TvXwwK$yMojVe~A z0kE7^b=;;t02cF7B&6L0U}<-iSvB;A!RGo$ zZC0)XV2{(0E1v@}`*$KAS|F^$6@W0Ne8wxw0RCz5k3{*#p78N_8xnA=p>CzT3v-Aja6HW^vpB-(obmX;e3N6)e_7if)Q0pm0GP?XC+DtNP} z?w&IF0;u%rw5TG|CQxbHuXWv-MHj$e_i37hIG`M>8nDLi3aK1Wsd6tHUw3OSI`k%I z;yVx8%lydgjj60fbG7H3y8b!it!|&t?!O%wdP!{J@H8Pu$3g`1Psh)C`fhb8zy+Rz z%3>2A0T-+s7QBXkBE{8IlP&SVx;g@xr9-nL!(3F@MIc(nj3~L?W*}PSZ*>BxwYm0M zzG9X*Q|2>Ld+VV0aN{0k8fd0-e9m}_XP}uTSM&}_4uW|W7D-j7)r5&X2-wA2w)DmOA|PXAwq2-d3~Cv2r-?bsZ6f zMnf>nU7hXykEj!hwrqs;)qc30@@%&E4iem#cylb-n=%-PX1TPdTUz-uaC+_W*shE+m(XSe)&C_FLeTyE?VAGBo#xm>&T4a49vQgi$i47 zL8Qe!Y&0hH6z2;%j)a*;$7cQ9!OUvlf{^x{Sc@qqwfkK}h5p6C%o<>(do_n*DvJb_ zru{`uW$p)Neb;n)IWs|N9ku$wPRs+)?3PZPp=>5B?K#{X9mUa8xjHa{hLH5w)kR&`xWTcJQ3Ulrj=Dp<*2=L^c<+wBa-PA@dZ_ zE$NGnGr^}3U-es^nWuqS?e_s@9r^~0VazkYtdB-#5PP46L8#|@*i3Kh(n$7&lVHJR zYY^&Iv;v4W-P)A6I6ds`w3@#IWajF*)}}K!mtcf=8|ZnI!_rn+ml6};zuxTMxI0#W z1isGNG)C|jaHykC8gxOp#}KLn!(Nq7SW!-#F5h_~x0VhAo*-Wn`^eIuCw5VEK!U@* zySt%7huxcXC+6xBC9E*ecdOBEO~b8LjEhP9s%P0a5%+{2`C3ET7v(osMiDV@J+C8< zs#$k3DQHctonV`fH#O=t`GVG*x{Kxyt3YcUPBlGb`hbZ|?aJI7i!R_4lUD}By~^r- zn`+{!>b)QLcK21#%Ra0QFA~Fv%`g4(jg9@#Oq3oTDV9Lr`T9Gp<2P$-=f`uiHH|BR zX3PAY4)EKdnZIo*ag5mG?-a*ZL9>~*rQw`sprs`v48vUe!7f>KvTa#hKirgi;qTHS zx&~VMYE9Iko?RgA~yn_f_1mY?LgwfF#jOEmy-x4HYW27!w5rR^?6%+ zVhGiZaazmohRwWhYwE*!3z})N#!zoC^ApGbZD;8%7XLuA^@hgW<|MGEF=+69;%ao< zSf>^RRO80laCzl!pvIMta=vsN2*_vegdwsGARyD8Nwb(s0GRXb+{XqocVO21ys4Pk z3(WfN7f{a1^tUU6mOpPY_{)pZi~f~Q`)0y$uq;tu5t+0HP~!nFa+x!=WEuT0mDB&1S=blLe`%b=R1%P?{+?>kv0AOu{^K~r3;o2(HIGh;&I~>g7Yam!$ zh|5(G1ba|C04$$Z@6a?EfGwIF6GGboz_PbDXE7gv+?eE_?`V|@UHOyoW!I2WK(P6a1C~NhLkDcdJlPtxgLD9ZeH>nI9T)`^3yqHPq1^?m(V(LU?02A8-@^RI zoJA0<%ec@@0@m-62XA<+ni} zneaCDvEF{RxGW(~3yDq-`y&9IQjA2G~K&$R)n5$$5?&6x{D8)Y_=IFzh$ zDHW%`1o`J{lv5LS7dU;&k>J_Fyq9FIX8oqV?!%9EImB&UMbf(NQ@zv0G@%@p79Z`T zs)Ltk9~_DLB$7k3jA)nka9C;R(Wv?2I%rlG?J{67b>GD-in9!~v}BDL3(emE+eeoQ zqC>f}J&0EmW;YZq5-MJjwXblEn>~qW*4w~N7Pdk`(q_Ay! zcCT=+Iqf@OGkx7Mo%scvV9Ecpa4+W*Je|^J9%jw_4oVAoQkY{QIHNt}MO-u2ADx}9 z-8Xp+qsr!Sf`D1aJ##}sPUBr4g`ckjY5CxS0m({nUT{F%3|vsTq0*X?4_r|EJs?D8 zJW6}(zWIC3bS7`U_L{DZ%8ECYnE*4YR5qRE1k6I{EFB9K+~K#d40YQGkD`tCFkQfz z4w`9Vi_ALV8H{NjWpRWvdj}I;hX8dEEFU0jQal1n1HzVEL0~T+Se<8COg98uve-qXdIZL=SGS`| zl^21q`G@MiH1^XJLOxT6%@U|*+FI@w2)M~F?#0{~pOI(PPz3{Fmg_sZd-Iu!DO@0FOU)vS+O5_bM zAtf!vQyI9t^`Q%0y1fFLx$}5^c2f~7E$(jA9w9XQ`*?j`Qynx@-L1JG6upbl&IVtX zx}4=Vz?PbhHXF;i2RzlW(dsh)3^W@&+RTU34a_1ctn@vap_%XKGH*^VFzeWD73R%c z0m38X7Rnn>fmy^ss{wmKsiOyY;r%jnGT|>E@3;F=t)e>Ug<;EGe&yc-Y}FN`%~Co2 zpi+}gE8?nwcY5>zqU#SV7Z9D5{wKaT0te|^&eulP=5QGw=i`&9^1Co|Xbib100i+GzNfp~61~#WHrzEgK!QnB?(`w(pO@t?-r~p5K%=)lnWodoF;`&fhx&Zt zjVrPBvK0U`a#wDG0r`}<_8!=$Yq3IE8ZfKcbCGNyJp~%Q|9Y%ZuJ}Ia7MXqZ@5KB)??uEjQ1|;Paiz7{^lrsw%2t6&oA+OAWWEC7**Ej&9E%4)!jcoVVV(*gVfCsp zW{G)F!VeiP_ru}Q$O->M$%PL9|H&5v?_IbPJB>CSY`j$+zxa^(4uI7z``OXrDF8Eh zYOC*c6N23uW45>sf*t=Uh#10G|BWi^fnaT~l_JVHp#R%HrDEAypjcHSy@UA)fVIgC zWfuPcuoBMTN$&jsj5m60dHhodma&%K+5K88=w6gh`Y5XC`4cGC_EssNv_i1Q2&@Q# zU8P45rmk(f466xK*OK7DlRWd*g5IzVfpI>9-r&2Ae?{;XfVF?Bdn%~A3v%k(bxy~* zrE9g9Y3x%iBV9EW9zvp1?128Dk!de4BWK! zb0%MU8GtSNmr^g=2HX_+noef%A=saWRh$?I);2iLvlW7sjVnqhhhUx?xNU-Wz)cz7 z1oFx!5bSHFhx7^r`%KA{ZHHk0(qmZO5bU)f)hZQ&^$l)yJp(U#-yT=ANCm-;ZQ$On zBY=Guq>H~$6^s!;YAqO>k$sH zSGxwGt+EWrZ)LCN{s9W>7gQSa0fJTLIo-nk0m9BSnkKh<0ffC}f5b`J34|q2j0=&~ z17RCBw`Q^8fUs@0TLxSJG%apzWX1!te8(+&E!zQq$7K6L&mHSP|E&+&wSuEMr+tJW zVy^vV&njqkE(k3>Z^F`&?9sA#F{m`eYYV!Ja2zz@=62MCrNB&g%oZKXd$6>%_7jNP zkY9oZ9PxH8us+7^20L3k&UhyA!mn2Wx4j>_V6Evi;@N>p=RL#;MR7zBX~6ZRJPaIh zP;73Sx&=RvuYJQ@MD0NS8RMD0>=*FB`vH5pFC%4v_APq4vy7-V*(XM6U(})=%4=k$ z0?|U|8MPS7P6BO%4!06dsVBu5Q3&TQA}-kz4=nJ08DF|o{u$(L|3as`;s1iTZ8w`H zSH1#qs~oXsNz;80w>Rbleas=f24-7E?qLT$0A{K4g4W~+p;^z!BmIqau+j_W(WtXS zwpWENKk?s#n5_OX-fSG_3y2~U-68s3U!a-!1hk_gIIo?$OALmDjm}=L-4UwYCZOqj z5HK^b9&*`pBQzT`p)8FP49rTLhlIJ7LbIp|W(oYSK;APO(JA{K&}_woGC$5$up?69 zKLlM2hi2<1l+EQ#2bG$H4w*!_I>D=$FktkI+vI{aHNnxy2bR&d#Wml-W_HFV{LTqr zHr=X{ILQ9(mE|G*3Vb?jd9#S#^9|f1a&UB3gH-ZeN1)EkntMc^SS68rmVgOxruPkM z;~g-`T$JMAO1JwC%RAUsMYmd@pT04|7VA2ML!RX5Re>C^AP?~8wSy4C$1bgO5!(~kFi z2mR&im_4QxhNbqg+0b=CAu_gy_THPvXOtG~6T!^nUn4gLVV+}}mH*D5kzuL5YRFIq z_2gtyH)-FS`&e{@IM26l3Nn&bLbH?NBjHkAz;>yrig=%ETtORtKeYC3j?U&L#LLAI zemrAt)d#-z1)>d;(6yQ=D$qkid4;ZWIdDP6r0Uh|2`cTZYciV`Ho6L$ot#uQmJxeP{ED3VfpoboQH`(Q+l^zqR;?qKPjB%@lY=e-O!GX~Va>TnL9|OT41@C}|+l za+V&cX-tM@onAuXh@96D!?+t^fKZX0kHgSB{`f%;Peikp_g6rDz$qGZ_O05#hgIk z^shVOh)!SP+eXy??8+k!6bk@$<9S??%nc|O+0_fVcDq~@L9mD8qKh)&p_?}wj&K9vy*0kVcpsS`0CSLD%3`JiZ`RVc>R7x5ikVmr zL+8JM{?$H_==>K1TVLaHNddv8PYWS#L$&Q`9FRiSP7@bp!rOFee|@MzH}-+~M*p;F zv`RykT&<$!7R>yrRN_P;G(`Pr4chm829;bgBaC8wBepuRvi(Pb`FTZXDJ{U(T>EaG zg30m3Ox3(yk9h09uKyrnZYfzaY`|RZVK)O0#B>4MU%Cqi5znoZbPkIm&TP-l;KZ@VgM?Q78-Fc-BjD%Vnc*Zn@i>N|@w)mz z%9G#t7X<~NZ}!d-7m&7r!TRIjMlR(UxT-&0{Fpe&G`*l_!rBYFz@|af=ClaVQ%W!D zl`!MM#gp37LA3_iZXkrxE*C`711vxYg)Yo7&Ym+;rfGosM&z5bc z-Q@6E!RMLf(>SxCS>AA_*9qXMYV%o~#p%$Yeuwy%utMOet8=#yZxDHW(q6Z5gn6Jw zA@#P;?3FnuWl=zlwC8#&m`4DA(!D_mRtXU7^ze2s6$D#1t9&kJ5j1NXzHu1yI4teS zAezN&cwztAaHi`$SlY2!9B)oCEbadAjc&cr?E0+o1Qk@{@L@jj=+mkN;#J~KX!h4( zek#8omiBShfKMSBdcvQ0huo6nTH^ZdU{9k<;3yD6rqqLl?|`Kl%`;07OawV?=1jS6jXSU>$cyPIA8o!OkKu1q9o7 znt!DTf+eg*V1pspD+D$cg8hlW)og+TsfY(;qd-{R;%MnP0vL3jwZN zcm^p}3>8Zk%Y_aQ>`kLnQ!oU3oFk?cL$J#T%rQxO)t|J(yqYuV2FS*Kqb9lTsM79n z)$8VS5(N-!=vn^lA_$g{AwD2SHg8hrYc0sV$NU<>xtQRS^7J^+yihY4# zI~Q;kV_`7H&LhRjpknKhD_tPiSLDhl2=*1Z@(2X`jKJa{*cWq}Wjh4>JZhucj=dnp zzAoS_6hN?{t^D>P2$oPJ>=lNG#X4!t&HP#g@3;r{lC()M!xfHPFn_5&`-UDnVE^bWsGk}dZKaR6d0@V)IH1y)+#94_+NO0L+%lq-8OpO1EN*C#d8)bAb-jw)CFKOKb4B} zgrk5Odxsq*UQgLGqnfx+XnKelW7s$!>>h;9;=Pe(!qVD?uORLPU7D5PoKp$Swz#N0 zrM=Y|6P=KmtAu9vT_T8gAI8i{NRpig+NS;9UP&k0nrrVizn#NV(p1pwR6BkEpQ*J- z4_W=ofU9zm=i1-u2POiCW-Umt%Mp42-Cm9=iEM&q_TmXA>6spzGBw>r{Yi=^`A4Iq z@LB;fN#@KKTP+9!SF=Izry zNX{!sC?YNrM_zGg#g2k4?qwDE#6DH&`KUdMzl$c&v`PH|LN6*vQevgYuLKd7oL9Hw zn*-o;8kD0;_>?t3+e^!l8XjP>7xZvagg$whx%O67L5jMwXn*R4!xJWn;Lx`AU-oh? zb!d;U5j)(2h}%KF3uQ$9^sD$amlnQOGbikf?iKN;g6w_hs>{vfT_AO&?u_0@8Utcu zi{DX6QxPH4q*X3RqXIOB)UD=#Bi`euMcMBqH4}7IaR(E4V4=v%9`C zvmcl_f487<-UG7;T`zqn<{Mz9OWWRJO8W?UXoK`hJmXyw{MfVY@fJ^^LkD|>dEVTo zJ)H3(mzXW9gK8Y@9B?*iZGH3(CER$~8`~sNChrCgeO51iFIK?P?CuDN;T>}%q{40- z@Oxie6ET;%T}}|wzJg|&Zo4v_^%|tZ&x#0cpAF5G#V^ z0L(nR;qp1WY@3We;l@;15~9{V``I;E(w3b$Kk)1(@mP zY2qc3xqBY|04?)ECqd}wAdTHkF4yj8_#nOU3!sW6y&hx{gi zcrd)-;T7V+@U{!vbu4Fs(*hCYqYK?zYe4t+T3!|(4$t$felXy~deGVERpN5(ws*d` zjlRANHR{;|mx}^87Ct*GCMJuVwM|i!O&}l^eUuSDgs}A8rUBEDPamHU&3gY~tsutD zjn6V6tsGoWiu=TBVtQ(M8r%CP4}JGn=jPfkR*!9|R-XUe;g-B!ZbqhJ**VFB(08{j zxmYDNkTOSWzjtzv1C@cbZq_xlp;;t@U@>v_olT5_1!?|4tcAru?jBCI~*Mi*6D*5o;N-P$;w2>Ti-mskZ0_iR6pT`>z%=S83e^fgOI#Re#h; z-`t&!7HhR6z%E@DqR;YH*p#&T>RU6%Y3ZieTpPc0ua!c}8hrrxRo^hz>{{(Wtgc_l zS;US2xn}uu{(XM6R)2X>{?Bc(EOU~UV4bcz4>k2ShC{Q2KhV}8AC`9hIX{`d16KO? zN{$al1=u>i`nG#kK{KOO<>)jRG}HHEj$$qbEltX`d1BcK%`E(w*36~QY_rV-1KMaU z%|#dAUo@c5o3?9ts4jMPeC`%0X$olU{Uc2ZC3_#xW(RF}1~h+QmiC9i3f3BE)?gzur;Pz-@4E~F znLlZnVZT4O|G>bU?r8q`{M-S5HuxnUg&TM3%VGFGYhF&!1m7PvPdFd6T7ez9yHXu| zCYSug7-NGa^M95pSj1~@{Jn*mf0|zN@MnFmo$!B*-r#@h-ki@IO#JL46PvLngik)H zj#zsHru9{mxnA}SPXUP7}*k!TnC4rT1F>(|}^i^b`eQBNgI z^Upqspb-mw`p%9*yg26l=>&;@$ctEa6(b&nJ3V$8@ibr3!rh}W!lA#aQ&X*otItz^ zE@Z*Rbh_rhDWMT3`!hfK3|P~={UXN)MsUG-=lU)#@#Im`xFy8T^-DUpdo=NYkHZr~ zE8_Gp_3wQKM7&L3qyzA7e-jQ+@96gf1JwJzp?oaolU86!Y)bS3CK2z}v&!bgVelT3 z7>4WBZrCU9u~R<@KSY4-pS28E;%(c!$n2X$mzDSjEGD|Fc4(y+QIo0)wk6SJ#Zwt9 zVnp>hH4rqZi{hiN&_Q1@IhW7H|DC>oFCwFVkEHMw_UijLE||qMim@3m8|%AXWbX%= z=O43}I$tc%+J@WCk%gTK? zqFdTi`;w?Y!ZqQWBbez7E++D;zA59x=RwyTW4Yeu{-)&`{uzEZ?$KA}{Z=tW;+aq# z?`A&bpjLYX!A%nU+wEJYH(|J|F3f29;j-ctd2ghZ@a-Rcnz>DIDmQ&)o{%;N$PxFP z-NgJI$Psd{QV*pklyvcjdaJYJY@i;zotNp)?AEk%SMGpo;7NwAof7SKz9@fYyPp{F zwPTy30uO1muP*k;y1W$HJOJqMjUCH64FKD|+PM%CREh3{Bw}amV-4{l=Ff)0>jU!V z^tQwS`SVshu`{y$T_r=*f&9VUen6rUS=J87qcb+O4#*j&CoCl9(b|MxJ&8Gkddf)3 ztO1wm^H=`LC${G1x$73hbi1eLDU+CPU#1XS^P;@nCuVczED&&QE7I;sRli*js2#64 zAp6!Qra}qLwx&fAw=8e;gR*abOdTX(Yy0aVT%8Cf?K|l&znhhn0gBR&gfTWH;6IamqS>DF}mdG z!~ypf-urpLahUGGcEpK+YFs1PZtkZ4&Nez-Gv%f_S#Xc4Ko|l~rbvD*A`Mzg#nLWj z=N1px*d64E_fqW-Vl5dJ+V0GJ2-*>1{V6WAgah3b2h{st0iSE*T|1g>e%J6jON zyA(0|Ko7htNx84VG_W1)M|4e1s;B(|HgV$i+_=GX2N%?xC+uypOa_Z>lb=Hkh!Zr= ztpmOZXyq{1&LVj8Pr!_r31a>%F!&xE=6aUD12nUG?p97DM+L@>h?Al1PRu@_t@C_G zGEua%p-lG^@W!5^t>tlvP_z-lT`$QGX$>nc%2Q`vLPxW>|qo%(S zN@m4!H5lr%Q0^{{ZG8CMK*hVJ3L;|Iys0MR_UZrq?#&Vr#Vb!k#&P9AGj1Wp*ST3|AB1z0iS<}m+fO@^jLxAr<(z6E~oI1pAoj`4Mo_WpI!{k;x^oM3V` ztljMc=mor@ZRPPFV0gHUa=ldtKcXsmeoQ$j4m5Mi*{Uy6_7R#u-6qYbbZ>slHz7Nk z!qvQ{j-rfFBffJt9?-sTv--xivJLFu+uBnZlNVuE$1xlhqr{ItG+##cujAvv*~OmP zx@CVeerrf>v(&!imbD@OBV8HClBnOR=~i#f-~1v?hIrGH5uO0zd3rm3=N17x-ryaZ zH?XGzyar%WsEf-a9#H%}wTN zT%wMIwZ0>+DjtH%ep6Ov2?Dz3P_!@e|L*H*XZQY~)@6R{KbRlXlUm-Eo$YY$hV5BK zi^JJz%W3E?5P<}EgZ~TzZhH%*t9Rl>YJ7{Xiv>%YM7_wkakn6 z$L%Ux#Fz&LlKuW8ZgWp*<@CA=cY$WncXdt7esP*sAL;gAD4C$%yg2qAt(5ve9=g<* zUoX1>(pBVblUP#_`F}Y~|Pycl%+bf_1YiNUK1l2R}8`G_p@?x#UIpl6A9- zh0rYLb3 zb&^*vZ03pGoCFnY=Gt+toplf_d_&A;A^g0n>))Dd8Wqq?u_0zh1)8> z_&tBXMgJ_*66SfxPjjANp@95`(ugjwfEw&q>nGG__JFMMvc;Qv$^Enrw*>Gf5 z1kL7Fah5tQ03ED1*!7a=9PnoMmY9t_Ye6&L3~6zod;-l32r0OeW48{NU3X~VOQ9J# ztiU2i49)5tTO0!6r^q*k71+`K0ZtF9FzsNzgra#lCm7KF1!m3Lk+!d)*%)UTllB3a z1?@&=d%^TvH^`Z0`4Ea$IGyQU1U^NcXT6uRxCn|C7wUSEe;$ff8Z#kA4$amgGr~u{ zg>Q|it6UF78`feS_!F4FkY^QSN|n&8et3&R(^uev##sgE#@-E}v@I?z#P3(kiY{o& zv4duBTv|M&-#}>ra|-P8#n9~f2;}$gz>GYv;CgN)G^-zp{0_|;=OMNpXtre(DveY5gS321hrx_nW(7`fCJ>Y1+hY{s zJZRQ1*|imepQxnR9`i|51kGMdcD=%frS)%*Da(`rPi^r=9hn8R%}Ob7rda`Pn;)4< z3AZNcUU9x)xePXQCu(LlY-aer^0+*B2j77yu66ugXf_v_sUUyv6xUS#3uubjqwT@UIH=Il6eh;o&MEnx47SXNnKnvihx61t? zv~%DRbc1ZhQ9~&-Yi!!@BRdVuA`51$Fm8fo#Vz{>eAijwj1pEN=q&j*zfG_R_+7iR zM2wv|*{cdRv*ds!@hipLqdkA(*Fdwn1D1(S@O!kDMtg4HAAn|O4^$+Gpr`gldp4_} zXo*J`6)87?@XlFy%caQ*h?aV7e=W@$gm=U487A~VYhV^|9hvz6v&dhOSrarf?m%X~ z!0dhXjCb@v8&KNA4y3IgFe}|ZqlvW|XxldPH=ad5=u;ghW=`xlw8E>xL zFxM(*W`3v$ZD8He4&4&gEZs2XZ%Z&8^{Pv~hVIK9Ugb!e37nO7;Z~z@;BYGeNo}Vd z_=+FtrQ|EOf_Upo$*F7ZzeEdHn`xH#K_>&|$4DUF{<)4WuFXfZR&0LN(TCXOoH&5j zF>)3&jCmB|?HKOBqs<0*@2}!`BLLowzx1}`E6V_0e%ju;=H$x&FX~i4LW~09dCaqL zaqR_oyq$;G6`VAHR}wXg9>zQk@SG104|1f<2Y9A`%s_afAl`Gm+I;0Uh_?z?58_3h z4ph8Y6&s{__!D6~uEp%-+el3GgDe&tilzp98$wtHa}l(pCYy zn}2OZczyuS_iw$PeC1AncQyl858^F58;}trfq3WVk3g{p@OUc^vv+fP0ba=&9Pb^# z3;A<+?@(F>z;k#z2;q$Zc+)@XkqVW&0AAZ#Joc^u_0rD;G{z_(Ufcpa_8{J|!|Zy_ zdx&>$7A=hV8Q|%@9vXs-0MzzYp(qp%nu>(=0QjUI@So73vEMl~n+* zMUJa?1E{x36>uX)0P$iI5ndI*tM+VQALB#kuju!^- zrjOSb7b^DxytX|EuOH&2Uk~VtkwCoOL>m-)5N~Az`*%(p#Pgqx(y}|i%O5ypj-l8Pbb9*7)$p-dGP8!6UKU*)1 z=?Cy?Jq}78Wjnnj+B?=2W^U$`sbD6sXYyike&s%vTr)zbk9mKs&QY~=cYqn-)sBFu zm=8%{pYL^&-AY%_WvKYt^_Q` zuJ6wnX2?u>P^Q%&J@kl~6m2NGEKgLVEYqq@B}uYPM!ke2BH1QOYHV4`PK!z%HFIzwD;JLl2(Qh5z*t6u@inF^L`= za~Z(vo250dA8R3iXYWSAI}PCFpNjsKFRldCYkq{NcL~Bv2^b&~)dF~_4>P&D`OOgC zJJ+ec+(-y7oTA=!0I%zfxvV~{#Q>iF;(rjlGXP%IndnUgwGiH~$~j2(AiN=g1CEF! zS*o&U#LwdI=8vydmAyW_+`9X54+D6cx1QQOIOaZp7gne>M~CGH;I(;{Ab1x5yv%da zNd@93fO`H__DJ@Y0@=F}IN-QQ2H`EwGT6H1aqI5Sl>>O`hfZx898&?{y?UUP zpu-9P@Xq;B)XN0$+Al<>71Tm_cb_2UMnHJMO9z|~WdnGrSF<#B^F08(^2Ki51Gwh^ zyoL)DbE^QnuGLx(bXZFPyxgVJ5xgt_Z}Y|IO9kR;K)r|69!T~eyw;@y0!6g|p3(0t zt=;@k0M9Yj?REh73V=7X;1p7g8UXLsORX-ttY83d;PLZ7TxmqU&CP`S$dynF1+XCSMs474sQ* zmaff@UT|N5o%+?EB2GGZeR-72?Ep2&q3=&^>=)Avo_4hL(K+sGm8UTRf?0fe7<6dM zsd}Be)vB>WpLcH4hjZVmEYFT>XgzgI_W@Y8^Sj#?^R$bq8kyR9Q7eT12rTQ<;f4;- zzXwnA>w4x`ub5VV@zsV(blEUiHk32sHUAlSnxpojJECm(Qj2S-#uE&pq_q*E8o_hG zu{oc|Gu?Dr zGgWE3bNV9UgNysG?e=(E39gj$T4i!a4Dml}c1@_e0m6!g`b;O*Iv{bzr6=$asH4gA z@bBaLjXHBnyBQF+Pw=AYrjM5aZhpD8+xs3QZ1XA;{7hTh7uTee13<=8-ezj#L14-E z-{Gek3{w%ue*uc6&qNe!gTM|h+A{Jn{6zHZ>smf(@WVN$BSrW$Q`lFJxSX4SVte1^ zTTFn>mW0YJ#I5~j`Yq=+!w-0Pk0{U%1s`|WS-J?_697cf=FdrM)5(VOI^7pf7sUf$shT&4PYsP)LvTFzyDM>Pf8ZLE0wMg`^vCb6uf#*(HV>~c zc`SYb6w~#GYubPXKz{0)^RMNGz-708csRKafgeL{S|h5Iz-8Zmc%%);2SiJ0$;WRh zJ>0OxJ?05GR@?PazmXhiEYK#8cUy{LGy!clR`xsJQ~CrnTLymE(!kaN%eq$gWARLa zR72p+7f1N;7d%z927MwI-w|E|EHG-j!S|Oyq6yZCZfU#(M05G&vB|CgY_slrzDwR! zaK+KUFI!ecyTfHUKk~V(ZD5-(zHAu~odTDowB^U=is4Ir+e2{^y7_0mZ617D=(hm; zGfsV*kwRGjYNXenQAa~sssklEpDf0YC#GJ%$zR3~1w<=vSlnB9vWKloi7WIs>Ob6r zM5|vfD$RiSU;Oq+jw%F1`}#ZIg0%p&r|j*vPGg4x*>IBbrTAA`xuR6N z3Y<1ewYi0g_Yl~zO{lSu4KG!4xyAS01ZV88ZxSsN-iFJ`wdXN$icxK5;E!l`__VV| zSuMHuV5cakj~nq_kQbXxp4h$y;{BwL=eZR4wEDjb-scM7Fp7O&&$t}8EPqIWUfy1? z)5h6b)7fS~J$I$@Uvfu*W?lL$k&o_OFw5nb=CRd+>j&l5Su|PqA>{jMYFPkWwm>vl zkF5b3$bHWsDe?ukqopqvQAcr9wZO5&WAn(2%fMgk%ioQE;MskP$)kIaXpgm~C+Cy` zhE|wl{gO7l1|wg#{oGD6?}BBghG&T<><2_Uw{XS}j@?}_0u?m^Jx%xqJnd0Gw<}Tb zX;mY#hD|sCo~Gs=xL2A3mz@=6ndQM{SKI?PvuyyU3=1A_;H`qR-FCK{7JCd>wy}_Z zq*vZS@X~?aCzE+8^&sT0H!TQ}mVjl(OSWpq>;X^fTgE@%lXV9yYg{r6|4O~r0~ZgT zC|K3VHyk@lgnY9+iIDGH0TJ?rY%{5dho5h0)p3*Cl>yJVcT|>x6atG~8rUFpe+?M= zc~sW>T-z@|r|#;yWz{VPPb(T-;54BWY_mCdt2>(yBik1)_~2thfhc-Z*L|Z^=luG< zb~)EG4?bHFZRSQ!!XJy)WgT!g0`Ea3EzUJrCuu}?piyw-DH{YJy>S+v~ag~ z?J5w_z1%(qzXsq{f47qP`msmABN=F^jzA0RjVvur0k0n`{@8Ms+$2bYxw zWLZezHzu1a11)2I0DrOTToqC%__V`Sfqv{PK--q{RRcK_s=-U=R0m#`)@=pKUa>Sw zZvy=Ea+jK|b}@S3rMIqVzvKo1o7Q9H$jREzfI{{8;e!qXhrng)M#l7uxdgD?x~c8S z3x&&~3ArujFPVcKCr`Dyn}nY}P1!&Aju0lrPL^)T?jHdQDnhfeb8Wu?zGqvWz%Qq- zSl-$dJ2o<~Vc2GA3Vd2-Se8&)18AGufH-v(Y}4#fRVX(CY_sUpd2|u=HLz?~Wt9gn z5-i(%;XMAWlJbBhjuR*T%{FVdHgPSK+aU){O7FpCJ~p2Fb3Os0 zwMP`-0_pl?*s_?L0RO}{Xq#prYHBDuKUmlHxvH_nP)UNvc4>XGj{F;D^9`9Xykxz5+Hyr4$UC@D2i-ux%Mz2yPkK_&*(VFcSjnYwn}H z2m%}Ce@B=Nfh~H-$GNlJg}94+;uJ4l<47Tn3#_z4KRV9w4i zcC9=yy{dCr)Ug7Ky!R0Q^lh`*Pat9U=7$-P{7)aEZ|sGr zEMvq?;aGGoa&6m z9KQj+T$g7N_gIHHO9Lm|TkAQbbN}=_eWTpus_;F)oEllN+cSO=5N5#%!q@oEJ%Xp+ z$4;f`Xq|V zw%!DWV!Ba}Hrrg&6|IpOT z`hGEAz&3A{Kk?wc1KGpR|C!_z6JQ%H1AG5ZKMrCY81j*u#ZxL`CuIX_F#ZA;iB3 zIk+_Vw13W+l#1cg0vEaAm!?NwFR;yP2ix>ty$!GP?E0o7#lDJ~-eS(yetb#Q!8yJU z*gEnRtVlnrrECH=U4&=&I+xGedpmiHy-2gR37N@^iDABCRBgSY6{;SV=R zs=KL+jo*ceW!+65<;i?^e zWVmhRYFxz5Hob7uQW)@z?>dDlXJVszc4)ON!Z)vx<_M7qgR zx^6dQFa*e3(-F<*mMkY}4+GVc23GHoqw8a%+G#PYtoGmy0l?DFTs)@T0?&l_2Rq^) z^Qd{Y+y4^0D*g5K!FY=KY_;d<0o?$w58n#Rq-qe@=WTv5ngE#DOI=6aFaWHfaCD5e zE1+0;axgj;4Jl^*obMfx16=Eo8w+t@VQW2;m}~%S@6Q6W30wdy;oCNMwl)Cv>XR;u zHxdAwRzI4p;|qZ8EDa_;m~j>X6T>!X&`r@J2Pt4>%R0|w<|2^z?(Hbhlky<2_HFJl zx)9h;w*=k1p$4iWwpPElrL&#DGPB=q)OW~KKTXu5n`Nqw1E?JL;f3NkTtSZ>$LqpM}RiU7A?5Aak?$ok?hpe~gv3SQoe&(ld ziB2d1Y~^D@XAI|_1}yM1L|a${UphS$b=o1e1F!f?Hsu4^SW+a)7i{KXuuJ>bcJ%ugm$`fuN7P^c5hq(ZPBxFOBCQ3|>-VQYwRlezn_e z|A1pa*1wuu6iUZ|_;&olIHDGGfB3v@((KpWY>~M`Kl&!G2YZNUxoE`2zInsJHX9cQ zsda_-zjn=AkjuLU-vs4p)g5o#)_Co`3SISM(Xo*i zg)A-z=MFDX$8X4<_+Y^X?o9wJ{n+Kf8c#tDxzDWSJw=k2Knc&j)^g_O0j6Fl59W*Lwlv*%B# z$qn!c^P884U?E2NmgUo-K3E&+zd4O(vdiuczB(ZOB^VqY^M(+!V|PvPwyF4lTXKpX zP?HZ<7d51o0Ke(VAWL>4Xq)!^^z;Qc1YTbI{Bkt^E+A}q(ef?kGC+T$y>Alm^H|np zCdKh_z|h<|=$2ro4}j&5xi}=x3IKbtI%pX?91u3F?P&t{0}za9t(PZhKLx-XKP}&4 zdI_EeZh3>gJ@^bPEB}QAI~(Hv{e~Z~sSp@S>84NoDGd$6;Ik?Q@vFNTC-Y)ty z!&8mUI zs{zpr6Z9wWz5}8a4Zgau*TywAF)BmHVLK1p*Bw90K=nfI#-ia=4x)M?x7Y54=eSm@ zKuBkD75}j9&V}Llh1^Eh-=qFcc(ba5bo2}FX~DGtPwO%2s<(C|SXLes-c$7bm8zy2 zeR;3t^Suag>T{LJW5#Yk+wbSyk_HR|L_6SnF-+`bYQsw{PtCGXJfJ;u=DyXUJwKpXq~G43<9eT=bC3jVAnpNYw94dW7X)^wmpEb z9v3|$+>_w4>(!znTe$4OMbCtk;Q)U{aG{fQA;7Oz7dJcRD!~6RSD&TMS_GCA*P(4* z1IwHW^z*opaGP<6{;hDE{Z|%=n!q-V96#>%ehcxReQI*A7UGY%?6$vd1i*h_`9-2; z`0BD-64MMU`?~z1;RIiRe|$qwmDCO{D-FA7kq4JGHv|ocj)KdMttjM9@B>eizZ*V{ zT@I-6s!|{S*6y?{>%TF-(E+v3ZVB$5wo0`xJgwB4jXiDWft5W+N+N)!IDFFbnOX`o<>WJy z+p=UJkU`ho;_cux5PZ={53opy} zMb5-oIrb}6d;!2tHJadYZ%9QoPO;Jxf8#ZO5sa11hB`ITkxvT*E6(?<#k5F^!Zd*cbb)|PJdV4L28UaHF<8>I)*YVs^5He z)L%^jQ@u(zb#^P!-#`1_5>X6PMAub0W>4VX2R)aD_a^zahk=g2twQCVi9mVV&l7}= z^$Q-#o(~M;t@3AccxONe)Nt~8Jzoq0!kr6NZy9+DWICxgTD5$H_kr%o^Mj}~9^!vg?J2jL1n}2fEOg3?1vW}&+4lKttudNi8Lzuzn$!Sf%=K52zePC^#X1B`0)ajGj4F>aA+VQ) zw$fw>tZ2Jmj5!3hvwt5BYadwFShRgW%qXyI*Y5s~+)!6lQA{5`j;-?);`d#5=O1n` z+@?9&W-VM6v~Gsz7Tjj@FTQU)+~(&WqI<&Qfc|Y?JU2zn0^2 z4qO)9z`;#%Z29(_7;CW2hsP0{A^`rO&S;y>5dSHJzX^sbA?>NSk7#ML!+pfm)GU$XFC9{?PTNH z@Hfi;;Ic&>RC5v>7p(cUL_hb0!333v$^YjW{9JAOV8 zvzFf`kK*Aq=N-S@GMMu~H7i}fA9jmz0!X932A60x_u+5I300eL5*RJl2||}y?(vYJ z;oaHTZS2-Y4qc_V6ge7i$a%m$4DQO=td%2nkC_kjzGaIz8y8*IDMA;V^;LuTf)}D) z?^M3J*TU($Nj3nrE>ib&m3G6k*;yNMa@C}l!G?^d3&r?@^9S>V1tF&ah1z;^`Q!Na zpy~17z+BF40JbE3RF1@wT?ra8eGiJWujR_%1E2KaYBci$Tlp$q@N`^DJ#h4DRd+sg zBK5%ifI<%si?j76+yxsco-K^P6R?z_eBq-EC=qY_a?!oW@Fqr?8k=kO_PweZGn(6t zm8u=y3as7f4a{=xC2+;x<^?$tznCAOVBPhMINOO;2H?GzClt$4mH>m7GK?=QtvwIu z?5oA)`#8W`zr;P+GfW@D(r{Kc7WxtyxWKB>(2# zLwE~?;{A4k5Z(v`534o5?Z-{>;a3B-6L8t+g2xYldRlB&jCL`kp1PEIgu4cc|JEFd zJNrC@S18Ul%d3L$JcZ%}=28gHlrOxe0gpQPYI9K?6T++IvhRq}AiQuk>oxxogf~`- zWG@g>?$%o?pqx$F|sM+vAH8}L3ocS>b-*S zf~3ry+~pA7HHvyyAiU?|Y~h3&2rn4Hvx6PJ6bl3o`~H}(9yiG&15!_{j+pxt!W+dw zveyLR9h4&3TLs}gM5@8Q4&l8+@baEPcq@eBcfxqROy2v5+9?Sz*_ zk~u8Axz(pin$r)fW%#w^2;5_C0(iID#2VD4=4gP2`q2f5#_;rZyh1`R9;prHk-NQ`s5$M`Hu5^<2_;0F~ z%5iv1&K&Mx$PT?cTf45KhR1Y<3iM^ z6b;T3&t^XW1l+aLJ!8m(2EgBeB|?{7Ibndm*S-0}ibJjd?PxLOYI)n%0NZj*o4v*K zDBSO3E^D&36WDK`;230EPJsRP7?UTN&3**nO+4g|Oy4^IugiU*cvsE}0Pn0XUs&7( z;f0uSle{Dlo|g`#ybzuRkM+i;>$~Mgt(rM;-RoksDip7_8;73bZG-sfxkQq8R2&?x3}*{&boTMV5rIss)`_ z=iQM%od)4m3&rxBqY&OwWHdq^0C*EeBY3tD-f3NAa*slIH9X``?*WIk^G6IaxyBIQ zx;)AJm_!KgCW6PB4&l`ycqzvqybuJh7Q(w_!A)|HfbfF!5WH*%Z;U$f2p*7nL;r`U zXA0r%&XX*Q*$d&7Am*}WLU?Zwb5l|wyyb|w;&MnmD@46Z5Z-Wo#N1j4?|?dDZYYE| zpMqxv;hoMy4(kAfS4qM97sC5M!8;D&g(G;i5Z*0oZj$GB2=5~WPx2MWUOPp-TnKM7 z1kHponI{<< za{;{9>!W-2FsUneZ^AbuRPLw1dw;A(F=X~5z%{3_+$0PB6ZqcJ|1nt{sT+7;@1H2@ ztAh``yp}JlU{rz!wv0tV>85u;$5ZnJp5>q-28kR;BUHDr+HG3Y@q)0TGZaA;xT; z9ybHLH~rsy+1Z%K;JruX9`}Yx1HpT*IE#Ewx@Up+?l{3WduUq?*zv-ds}q<8-`io# zo+)|^$da0aSY4D_$t_z2{l`VURYO(nbH8p16Ab4|`@L_xf5x7K4iZ z=y7(xb@?*8?Ku~>d#Q}{MrH7A8wbdKs-)f4Mtm*l;}Vz*33?(OTs_S5xc4?! z_7Q-5=)%=m$bZy66@9V^jk|Py%}sxc-I1QGtNn}6d(pq9!_I-;BHu7~-){iq*Vse&xplP|j;T~`A@o;uGrdn?NRxr2*{gC0pAcw3_-^%)Zr0YExE@VJ*zDEI_G zdbx6wzw%#0kpI#kuLF=C0V3Z=o@o%|Diik1)!bGH@N3lB|fOL9Cv0Km#D0yok#qP-+fZbPVN)`c-FIH0Q9`XaQd*}#?-A3yH zyI<2FUjdNYuJg^_iDVGuB^u-|0P^8C4+)Y<2-1Er1#&I`x%2%N<~aja2>|(EEiID} zI-9|%%A zj@hL@s}z6?%@g^)@JxdsS6i?*t>KOWApQCl%64q8dksM5yx?t6pH%}uHdl&#UwNiMkpEb-yRYSj1CV|`g|f@r>plXI zQ6Kn%Z=zZV@`ApUJuc=N0O@qmQ-bUy1lbnOP5#Djg&-RdB{{6;0Axaq$oIA9TL|(d z4RRd-*|4Tiws(8oCjj#PCrWW79Y7{K^rb#yW9|WvyK+4xuL=cifRY{&+~lA9$-hLZ1DSXL5rm1D!Yn2kVY~ zO{m_rLKqJ_)wUL@01jA~gDCAbp{~@h>yg zA)JTLJvH#ob?9f&RC&}_5Fyrl=MO8n*9IcQTWh$~N5VV=o$sLIub{E0vXyaIHDFJ* z?k_#2vj9>iZF^1^-Wfod^ol~UCHn#BIc$9AnPI_t4+2=7Zz7ld16l#R%Rl*s6@s4t z-p93EEf>BIeDCe;Il0`-g{mA$uP+q4v!4Ko*!aaW!)(F__}-tQsTn!&y=U9`hWR1z zy^ZU*T1#%jlZ>))Y;-kE2OvvDe^ytG1&dVqTmF7~4sn}SbGv9NI%5v@d*Cj&W4z-gu~yHX&$>xSCHh;NY}Fq9tU-vRF}cS#`G5jx#; zYCQ7}n82?YtZi5k(gDQJb|*KfL*wCZ)gxYg0ut<)11J3Kud2VXGfk(S%xMP%Y%tPx zxFmQLu4-Y7z8SLA`fYqVoUJloZ+O@%UYPe2Y}s`-#gPv1z^WnI!|rJO1_*O^p-OH1 zZy+#%_UtVq?*NXZS`U`yYrh4Q*_oD*^Md;oa3tNiNHCxM69|mg39pP>IU(446S?SS zh9>a9K35a$&T(7e0~ZyEH%sf_Mxusk4_hXzg$NS|OS|ec!v~fo*!Awd#7%W3Abm-Z z;4HfxBFyrVJ^o+D??Q)8D@Ny_wY#|q{a;f27FfDO@25Q}4 zGr-G@SVj}OYD`29l={(Wv{{)~NZ0Y*2dZZ950;ScJ!Pgn5%0-FBy;z-@+WFARhrB@ zU3W6^Td;~w7fJAeVZ$e0O?VqVcByGvmy}W9Hj=%gwFLuBw+c-Ab`pk8wZ9p$24Q1M zeb(+I_*-bfJP^WS#ff?|OPh>fJq+0Tvr>o0o^ZPkrz*=cu6iA5@26JV;jSoDtf2aA(dr4oeL@*m#Ah z3x0kp$4Yxxe*A{1y;Z6(;Rm={%lJ+z4@OsXT;7>;SS=4eFm|P>3;IH&ona4^D$K80 z?2@5elTE5_w&7Kg_(yb3w;e#bZM20?n&7L~9OR;Jn~CA8pX_9o_ng25dpWn-RD4Su z4_|%wU-k^MJAwpME>ToWCKy-#&Dt=r6COoR0b_`G>foPVj04>@6e3Ffxf?hA)*-G| zUuG9E^*`yKOftav=T7F1fwsy!htQw<3XjIFHyz^CwL2oW;wR}60k3OvwPnzm_l%$VB7aIV}SjLTby@PlE#4m~Xnt1^oq;!suTY z3gkx@_T;S$rcCiS1`X1nB-`OH0Yf4B=>I|>8$7jbhjn2{0m#H*(#?|?Vxi(+)0C{( z>FsbEQL^WsM^cnL$2HJmN^%r`qd__^*v-6!Kq^j1c7jwZH5K}F?XI}T4=txa9-q&S z*}`CE|9K*!q};ruR)#?8{P`mSdEZBS$j~kfiE@iHC7%zI4xP+kSSS|KAT2a;a$3B|9K4sa^7&(pcxW|_|HNF(z(Q2d=i1w{PRZyGW;@kt0uFH z?9acZKw9j{IXlpn;q+%AV)ytrrWSJ%B|BXS`hO_J`LuvNGnT=qRV?f@L5E6ery)uL znLHJyJq*dDL`g|narO;o4Vi=~j`t()jFU(pQK6gu(Telp3O7lU$;ejxty8-f?}-{@ zWUC^)2&C%=QvqW4|NoH!d1fJd2C|btar`fq$Osb@wNl&c9}J|tbvSDaZi38Tcx#+R z+6_SZUgH|~V=|PY-w85#k6p?jTgD6pa@v@OelguN7byw?SV*+^|C?=D>>fAoQ3cgP5-2M*HvqqhSAvh_MQ2`NsUDkUq5_SoeQWH5l8eDT9H ziIBRU=q2h}}ZPyJww{S0y$N&urmtE^U2P@P0)kK+;}ZaCY|;6A!CjyPOj(3?7Ln6KaQa(nGwiVBNS&( zsUQcBC%2u~*0aDvwH2dSU8i87+Tb#u_*xufYZdpXCMJ{4)AvQ4!%ff?zmb$%gmyA; zDLZx_gVCg*1HU&nXzlitS4z*HQ9_{zLz0kp9iw!y}o0;+ReoH2)y80tfk^WTXQMdL_V4 z9$m%O+=5Zkcyw896!JI*ir3I?G3AZ6(~>TXY^52Xq9A#P4eKN>lg>w$P$uY4Y)yl_ z+rqs-L_ui>nOV5v6jzMQCP03UWY6EE)XvMMjE@Rl^>~46kJrVhC2r_ew)E8%W z{>3F42M`&7$8r6}HN@Fn@#$cc*C0$LW1o)aDnzobu$Fhb@#V2LmVQ4+9w{12{<6$;f9yy;~3KZlqb5hV>3 zf20$!=K7J@kvPcKHEahQWbx55#ul8CKU%bHhjd~5NdV}e_u^PqH$+LG-O-gxvTxz+ zp8At(jM!bP3eq{~5c3EE3AEez6Yaa9OnzF+-i#vi5XHZy*{yc7Oy-V2aut81DVg|P z+i(S9w^E{Mkp0H7awkcUkSKpBz!>~;Nz*R`QYpN&Oy>ULCgbTt;=V(61SQ+PjCAq9 z6-T~~JrOSs6jziJ36!{x?}8?KN&|A2VfKw-LWKle-A9Befyhx8aF`| zYKQIm7-2G*YiAapOMu+Oet={Wc%0Z?_ZdV=dv>5s7&1Yi79oW?#p13ld1Y(5;d98nS|PQq-n2!h@2vFuF;7}*&LF{c&Bc;s4Qk zIs_7EcWpo3VQoC6?S3TZ2m-0J+cd}x?q=}>B|WyX%MUWLH57PgO3LHz+a@D+17m)` zRA(yT78gur{qJ7}BSMvuEAIM|9;Zp0CnVTC<4Dd?1X5}KXplMqX7OTNaaL?&I~-y# z?y0g{e&N1M{FmSlALv9ZeU#3`b(o!$*G!f+;*{+6+*eqNWD`6rDMjtcu#ru2HZ~GU#=5IMCM7eSVCVs zUdmsg6G5!3oW&|ZCEeQ!K(udieRIJsSXN>zM&8^3C%JImv?X%e?LNG!OvS;9e z5nDzH23CJN7O6ud8paF%Wyx`x*MIc8M}V9=mUkGJUd^)Ob}#Xu&i?0rfQ&rE{uc*n z{Iy)>ia;toE$u*mtkba}BG1-;S?>u-Ztxc#P{T@FAr3q}CnUWJ@6wrQXv=es;TE-V zg1O6_Zdhq6EscFA9hJ6JeN(JfMK%%Cr6198!83H@cqh_WY3}qF6Cm%-;iaMmU!6iO zIzcXy+i4BL%zpAr^9&TjL$lw2E-5D3QsXLQvAEeUO4A|Bts|XTM0lKd++RR|oa@Y! z;~+IJ$(g8k27S}vdFGcE;6=iJPOxX=AY+$QFsw8gd{f1~X?CAIrGpZUt`cPsMVDKz zI!n7EV`ZyY$e>!K-LCj&#N!>Gx%2*mlAq*u3C0W|$SbWDoBN^+9a6I81ls{Gx5jR) z5KKcLf!WW@&~ZU|2+U$$wvQqzLh(WycwZK0FWkawg{N9B(&>54-ilHZRQU+qB ztx#`sK{)F8bW`q|DqNpC$*z=RL7nk|3R?nX>3JQ&NkmCyoJdo0?OfK;DHtWqANUJ1 zk>UW~6zIxB{ai-2;?=ZFI?q2rh9boQ<}!aoNseMA9Uh-LMVTNNiWpz4kfF#EQu6Xe z9S1^j{+dTMo&Ol_PCNP1-Ho`S}NZ|C+TPBu?9I|t%~SYf5~^eRZ+W$ zmtcVk?23QgNz7*_$VQ~cT5|_6;9xvl139(E^bL{CT!sVG3ncpU=l;bY5rj&z*-BE)Xu@ZstluD|b1ADcJ4LTM=ypCbHP@0N^>?RLj5Pn&_f|u-sQPTO$X=Ybs zr~yd-N^@VLa^7}@t%HM%^{J#>9-L`O|Da<=6{!Sy-N9`b4J(a<_<(+`}Ha{c*As1a*=A@`LC~}iY*Z2sV3SlgP9h& za1ojxz|2cxK|nmw&3P5U~H*WO_N zdy0|Wq)N%yib`9g-O!#_wdt5;qD+USSV{ZkWs9ZtGq3_+{l@?q0kUZ=FPQ*YbS5Vh z2f5*gxr;w;QLS&X@9o80p8tnR0qS}~ke}Oih7lE^^2JhA5rS39V?P7L709CYQtXDd zleO!4Nq8Gn^Y@t?N8}(t*~-;!R7NfCm)&o(@8BTiyefel`B2a(`7uD3(r%bDI(xBR z;ULYo1ZEJFT(g6>AE%_I^|`2Se`6qfPa8$Ddw3DaZu#F;f?Qm?FAvsTK$xHhUaZ$R zNX>nL8mJ-!Bb-}1c}EFKu02OpDWOdEo;~UkQA)Keri#)q!YQ6nl}#kJ_lN3I!(bAn zt)e~7Y;WmN+?Z#|10|2uun{JoMBZV%<)nG}94V8L^G1abGTC0tF4)h2!(jeiRoR#N z2+%N|@`p+U$A;$P>IE|9z~dZVIO;oLg1(fn z9S9S&v5Kq+)eCip3@4&)AL)y^5{5vj@^sLWBGR?RCk>2kd{D&$^YZ4!fnXjL{*A~4r%XMw(K9sC4Yuvp|hgNX0-| zrgb0hARg2u#-6uZfvZ^CvQcRv$f7ErNQd!ZciCETm;<%1sFDzg?GGzm3tW1Q!V^<9`Ev=&YckfYsQ(?Pk&iNnZc1WM(f*7i?b21|gkl7|IKJ#lt-+rCtA z43FU_p5vWdh|Ljc&dOpUcEgm!qh!=QqJx%N^&d6%(bZz2rE+$O?t(D9==#@EmKq*; zt~jz(9E}%UpIqR{@kT&mT2@pz4)R6Cs5BIL#whb=S|&d~VIRO-D#hN_w%iu9Qb}HV zWk@x<_OpkPjft}mhB=E0PLLlSv6E+zX@LDzXQoZ}UjFEV3r_tf@nR1&dq z)938@Nm$nA|DjqyDEN+bx-%lM5`nxrSlS&m(Lh2J-LbSO4KK5Qyva+(eW+%SD|Sc! z!8(0%yV1UA2JcT;)LB*JN+TQ_J=gU8)9{t+ar2G~ya2CHweWf`o*l ze|4YN7oV`z9Cw9TfG7zPqQlch%LrlfZD7yCi$aYfY6PhD1M}aUR9!Mje;&pvL|v7s z3PGn+%lv~uLZTPYQO?_n$92w|ujFh*Njd;spohv!75J->^nYxXB?15~HGQOeNo$`+DNK{k9 zYs4r*hQ;#(XLP6HPDlQ0g_KmBydVc+l<3i8o-wj5*{ZfhbI4V)Kb7D;It{TKf_(Fy zJriel?7ekpcDoKYjX+QHhgQz4lH0Zh@w+PwovX;u) z#1^WGGx&5crQMK{AHVWaaXXn*6xvBm-c7P_H1Or(EikONgX;S1cLLbuexS(B$LW5($%f|>sW{$t1Gc z2cJe;M4~>v0#9d4Wk3g|-PvMQkg@sCYcp`SSo&R8kEj#sucuOPD3i{wgF}dl>*HU% z_}SQKy5@nKb`OYl?U&I)qT+g_gI$z{gRFR7%SY8Mt^zsTWGrpd)w|iHtF5+jk5ocr zU-`VYOF!%!P5w{aslj;7VaIxwrxQaAd{bg`aL86vtYa%4NvD?L4&GLLJBg(?b3~{e z2||&^AEPZMcf-ybdi`eK!ndRL;kks^&e?Wd!4bSRdu2V#0|y!XEjXS4IsP|EbLYmJ zOai2T`)ENf%72w!l@3MD{s%~T>vLPwL4&E~f#15q>v-1oW4$zQGA0gxJ2L%)T=wE7ZKE{*HINk7>eu|s7Fjh$Xz#*4%9m?gmR#; zJ@o!Bbv@iSX-><{$-^CJ@-z$Tcquei?maktk+Bjh1cb`M}@~y zkZ6QOvj*dKVDOocdxRb6&{RK(YBB>9wCIeNN^|WF542?rQT&k}b8Vh)AtBfu)RWT# zKVI4xRL3Ad9vH4?OPpD#j+Xw7gY>=;BKeFLkbm`4H^ODonVT0yu)EFOViRGkLb#lG zyh*LLtIl>hPRRySJu@5J1TBvtC!@^ELTWel#H!rmb<}s^-M|X_JUaqpuAhZ1q9oLA zF^^MtiNQoEzT!s}j!xD|2HaB8jhXq zI=sxnWeuKaj8o@m<8?x{vO2-%zXU2rg{ZS#R(ck%QM|-bY=(BA^Zv(bT!6JK%|C`n zh`ws8zB(~_?R+OM=N2+ShKeWBiN?Uy7SypRw(>Q!om|z6gSvqXv0@>u-D+R!1SmX) zzA1mKo&d4iwu>srr~i`<#bq+TBjjE@Vz-hvw8v@guO5$POQ7O(FUUE9CmI`aEF#c( zLkR#mj?dYN%cQ;fOH#YHdFT-bb&XxNN_}t>RIz25Z4)YHA}gf$p<-sPNS!>QVpBj4 zvA-y^m^!yx_dk=o^pWSm+MI`%@d22>UuL5dNzhIn@YWkb$mFH1tVuW}GxscG{J;~9 zxg*sN_QfL4#Grzl0Z1kRyVc4p#6OBHG8d0LFX?j7;c*xq$F6xP zAwdS~O~g|+xkjAyC<-tl6d>uU(XrfR_pTv!1H}olP(R!kqok%zq1{egapW&89Ekec zdOgl9VjyAHOL9=KK2&c3LCJ_XDM85DkX>I86_1T2c{_Di0IV8y z`?!p1RX~uh#;6~~wOg~OFo$4w@(+s;;wYbcf6iSblVSx(+L$+fc*!7!SKHU>O~u(Q zf4rS#j6j0C(z#<<6LHw*?KpKKJf5uRQB1~@=j<%0y8@tg`wb!49ows(EXbTXtVfO; zE!ag3uR@T=;zBi2dNLSbAfa`(IytL6qnNoH*-1FDc5jZljx|%_u5dY>LEXaQC>A~y zpfl4l{vkeJkvWu;a0MFzX|$=A+2irj=i_>T=$r`j^16vqHFUrV*n#}iP|6N4fE{Rd zQa`)`IZ#!QiSlCRs6m*Q?>*1*Em6ApZOkD`H~!xBGWUL%MXfujXY(G<<rO;7%Gx3nAHpqcb6G$bEI zR?6}K?P^=y)CG8(xFWWMIT|0Uvs!K`^hF(5rK6^UmZifvlhN%W*-8RYl=Qz_FL^-J znXl-D;aw!-&^=P4$(S-~ehL+*AhV`?4GnVEBJ~WSA6HfqrG-=s*$4VZ$Ed}tEi;-> zAg#nh$EasUaGa9xR@bk3!A=zIn<`e)4&w7oJt0m>Th_ZQp^74#(Xgk0F1}#^Qi)41GRk~1mWH+dq9$bB0s_So5~xNk`|BF9>Bitz0;&UhofigRakqn^WeOwNtn4oDGquoB$q<+3}- z00I$uwnF_h-kC})x@)%t$vNmu=~P?ZLxB)X7}r{J7TiF=xv~t_DQq>C4lQWoN^?aE z+e>Rs6)qW&O4{oFdH#7_B8+6E3TUS9hF zF~~>p?-{fq3OUFsU5vtMg-u7v2ucPUzUYNq!Rk@Q`wmKtkPHJ0Z2oAujF=*5i&Q@; zL~cR>sgsp~Wp;@OC+785t6x};jXoxBDr0svWeAhNj=a{W@6yMfskyx@su|CMO}|)% z5Yiqtmg96AJFB8r@kS;^;sJvB#GiUIkb9e;Bs@)`HHV}eVtk@`dDA8?ChdXi)Dv)N zuP7^vT4rR+*st6UeMMODI(7LDeB;l`{^L|jyQQQRw?!|Sny=I} znvdxMeaiJrQ02J1|54U)FKq0*A|}kX9arA*JJjXc7|jz+9z?yuW0LVxtkQ_tfcB{z zu?B8h8>d-Ktwm0Xqd-JUyU#RE-~IS@Ml{GoXgk2P9x&3kFv7Sae{z)d25kol@V3A8 z`J=jY{nO;6&v&#OWlfwUffo~L9tx9C7r3G1QSn1Lc=Jy6;k(erf%m;;)jTU1QO5ac&mk^5QuA)G9gp&Q z&V0EbgM>KTamq^H3(*`L z%Q6l<&U%kKzWh&NwfpNJhLu!#Y#Kjs}?; z>OBE_bylozL4edh$s&%i*T<|NM=~a#RYyk>7}<)~bo!lt9_8fXlzfnH6+%>{-nwvR zY{hFS2Ja+8@q$m3mp&Qb?LH~Z$5m{_&K2>u2*Eg~o`BCXIlDfxGs8pW2PIbIog~NR zbGD!|1)!wbsCVKVJXHSRqfZUc!uEIbNohA!@BtqD>%kQnwMfO3VopnM%XxJz`~-^g z=0{P@$PR#DEb_h;Ro{b2hqWuG2)|$|cE&qfq5@FmN2-{y<0&$>^ggko3H3o>N2xed z9i6d-?eE0vk4QUUTxCU804&@%+fcIxP*NWFPDZr78kXw+$0Ze~Sbrl*f-*(s)fG)B zVuVS@!;9+s`(hw9J04MY+`+k#-gQ=K#2t5|7jTHfdh)IBsB4knz*WUEeGTG-xXo$S z47{AHS+auc&E;NJM^nCxT2;l-w63&6u{UIQ@f#}_l)g#Wij{QwX1I`3N!0g_zpHiq zOTaKzE~KK$q80jRM!oBwN(_B1(v8z(1F_=C3UYvU-BooNZuToyS4LgH6-Vu}6Vs`oJ8IlD@KDt^tT@whWmKfH9N`ECU{aCQ5-x(;rFoUc{p5I0zk|6!Fu zD9+f$oY*v6yFa{>{e|o#aG(`y^{H|$)b8>#QliVL*|9=Qj3R%$N!9ltyPegZkjDwH z*jba4iUGcy9jNmT6eqUVhiqazKK-yhbx8#%DHt!lK;8cUOJ@~v;SNMcY2pKQbU7q6 z=9)8~M7=__CXi~GPPa}Xijb@PIDEXEYdq?MxHmpGvg5eE8BrMjet~S()E^43MR(jm z6Xf!cY-%UQJt0kyy`weN<@_W1ble;1&moRf+dF@d5kr9Oa(!X~N4_GHzFGm=fm0{- z$=mSGX0nK;t>(q>5F%)Cs8mPy3Sxrs@rm70WCsAv=Pb6~L^Q~L25@$u$SOpk^0b$a zjsB2LsMzMS`U?n}+hnm&7Y_9Z-V|hJR11NlI3%uO=_kKD^9YHkXanntX#u z!B8vvz#u4@az)>Z=!b?}q~ay$o18y|+Y%$JbDpWETB8_M;ri)#Nwch)c>(uL9;>Z= zJ@DjZRWK(3r=In*MIjh;PThWyJZCz1!%FhNk#Cdw(a{*l zMD1ret$2o|mTw(ziwY@9k3*~2`3Q~^vI9US8}&ZPR^yk|?0BV5UHb#rZJc~f`hF%B zFIDVbNgXtR9h0_Zbz&GeG4NT`Hyq@KGHWsv85GHRx(~CcjZ;1e(6j^eO?3_W5%|EB zvDyc3(%SHzt#Vb61iw8Teg270*DOb)H8N*GTHrTPG0?G;0lK9zOdmKk!KsiL*Pp zMW2{uGTwVbO5E__5+f zjb0~FqLHI&Co7C!*tH<-mVvw};;&x298ft(K{eWYFgdCS(CJ z`--{|gEm%z&74>~xw9YqIeQtZgQ+Y2HNBlWLj&qk{XdOqy1I4n7J1?1iro=p23p&@ zSCT$v2Q(MIutQfILy*QZZKyjC*Z}0Y&73kc1|wGBp#{U(=5w|fnf(WfKXz{C&1S0a z4_Eq+`D}|WjfYb`nSUE_QOFI);lAHudEjFnlMY3YmmyE?+iO3XG|N%Eo2I$*))&m^ zL0E=m>}W$(TA*258O!NS1d7g|spIod&P$CA$UexjeCaFvGUUwD5#)8LA2oX&By!cF z7o;-g&bM(1!2?ClEgbUre9&j=L@E@Fb`ygc_$grHs(k5NR9FMKs`-rwvat57UoS4o zRR^fbxpVsq<_5e4)414%8uNffp1-$pxOgSXKjyO}5_JkeJa9l{FpO}umIeP|dy6Be z(<0Df_-gmsg*R;zN4(5A{5RJ2vR`83V2d|xzij1{;3dl9Lx_^72MsJnx|soa8S(D8vk){~Y=&A^xc(OF( zYTHViO{n@OK>|$wXtO5V&LK`RHopHXLkDc3VB8;LV1t*1<@XDvf8%B0!9OFKh?-Sy z|6W21tfk`I@gE@lb8KWpquf1-Gaog|;}x<`n>G7hU⩔%|VAK)5BoFXH-X3mO$ue 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

sG#QVkpm9|yt+M7e3?vX5MzXTK%6 zw!>I2@9sM#>xGINYv$hJ*;%iKe;u0W<(6F15|gD<<4G&b5A1fo%ro{6OiXcO zrI#vp^JfnyEm2E5Rn+m#v@?s?7n}28o65V%YI}$&eB&yk?N2{;*Qu!|CarqcrDi{= z=uV?)ivH#+Wxm(`=+rnuX`{T)do`35^`SQ}Ra!gg?$@3h`fvH=K3j*vmli%2_8oVp z9IEZfJLaLQAig*J(}NQ!t&YUPjVh|c`fcY^uT^ASY+MzWy)ENtvAh(|9Wvf^=ryIQ`b4iD&+p15{B#9)FIHK##L zj+(1}!Zm)b`Ql6LzWngCU4@*?P)XO6Z2A-a((S388%|wmct2@g=lS<5)@?gs&UMfE zx9nrSfn!S4)y3-+@9Y9x=cK|@g~CqNr4B{)9`O~;PE&0ItNL2bMn2#2O}TeZZS9tA zlP~W?=6|7N%E4yexwm|PfQ+PyOa{%x%aP?{4&2zFNQcv{@h=_=Y_=H`Dmdrnh+5oC<_j~}m1PwSe_v_8{T%I} zf4;Vi{NS3_~Ftc`F@YsW9$rdB;7X~tb@ff{@ z9+VQGzVw}iwXOd3?ZHKFJ=Sfj|C)GmRnN8LT{0CFhQQc;dNJZdQLA5gBu2krAia9} z(f6BjP|#nTQ6Mu}8T;(A;0tv_ySAOE53XCWYuAa2Ab^bMr@Isz$PuNidJPZsR1sN6 zKinx+u_Ei=W=pqlQ~m%syIdi7g|_F3phcCJhfJTCT)8xb8e-jefL>+U!>UxA8kt+d zPuraIKnVRVh^|FsuW?bc@UrU4>~?me*-*WA(c{l%9-N6C{C)-5@1$g-#PdxP=2i7; zw*1s&kWTz0p7_a^x2!H`y7L41%+c?chdZb4E>sy5V?7}m4o1!eVEBn&Xg2a;_sCNv z%GLdvU2>up;KBdthi{iBe&S~d^Q`0;49BKd3SMORnrPN#<)**M|IcufNkPNZ-+$I| zK1T2q@(!tLm8j0HRxOg#XieAn^hLvhsOc@I*~8Hstk(P;{{Q52#te<$!NRRRMzDYT z=`y>p@V7t5zl#5ffaQtM8@~x38h#<%Ua}Zk4!?u^{{P`;e(lVNFO$DIYW@RM`W+?s z%%uPV{&2rRyQzeB0qzhc!=2d~Qv#vC#f!sDMv**aL>otSbD#o5#pkCBMFUgm6M?%Y?B}Ci=!xe1CuBkwAImPvM0ApZw$H5@V1h z)8YR23HxJc2jD}~PlVZSij94X;j0qm!SPq{%|{yi{r97h2l?B_Zz9ZwFm^6)^ud2l zkGH^iT>kL*2;?K%)bU49A0{YIBap_fnPVUR zFQ54T0Gvn?6DL!s5)){WQWK?RWaZ=)=!%mjD=Dj}s;O&eGPJa(Ox4ky#?)i|p+DWg z(8y$WsoQLwsp~vx_lV{9)T=1gyR9_8mk?+Xc}IyEdXlwII7%^mU4F@?F23IS!gQS- zUA`;T%1hK57VnxWrgSv&lvYZ7|m*S2>gZfdA~`pL3`|4Anrk z>ZKXfK%QzSkGfQ&2|@dm*Rmwlf*FncJ=FGU->nR)hpy(A>dCuiP=k1y{TEf1Z|J2) zG?Z+j-@B+9E^H*KoaU=Eh<@`HZ{N*Vf^JqpI~=c;m}eTFv=CI&wNzGTytuz}{YznN zOcu5LI8(BAy$anXCChhbhVRRJ!7Bmtto=mgqkQGml2g?1Jj%u@%H}SLOiEXYnt8PP z>yqP5oP27a<+OtuEhT|157NYU8k<|?#Ly6GpMJQJedsjxpoUxBDJrz~=2UCROv)NA zWvxHu@hR$tV#=ll$`&CtR^t&-T`I(%8h)5st^qilrS4}R>irqfCHnF7`1z9xKS&Ed zf0m5@D8+M>kHNhBsX6j%COjC*>)^w%iXJ4=ZAMyy-_O2^+81te z|2Q<(2sE{Cw7=soQpw|}UN2D{f6*i46`s^>fL{Cv!Xsb(zsH#vdNevTl^TW+0fX>p zcSfj@r#X&1eE44xVM&cQ#I*c1Q(g#-&55;pwU-0rJzl zG;XM&!NJjgRO!yb+%QNJ=WdF#Q zmkHCBnI^}|43O_JQu*dc4UX5;-75c~LFK|$X?@PLD_*Kijv61f!mQC~lU4A%DBUeL zX?r|%V5|H&qOd#bXR*%nnToR)Y6z!tzb%;JpG-vq2*-X4BZWu+B)xKe)4E% zgft-38F`I>cM7uurXam&P%Sz%Z9(-E3*$-aw1juMb41ObSVAa5rSCMWu;5`>nloXCcq zkd^fU9v~8|GYEt{BSICl451ICSpoq;l0ZlmXKdFbP!=iy8U(`s(BP|Bp> zDz8MAV&#S84rzoKBo3&DZi>taK??WBog0+}#vEA)#`l!e60 zc1`^|k@}BF(;+A=N$`}sCX_5Jmb}#}ip;(7N zC~k&d1hyaSvr{~l&xE@?*u|h(r+B}#jGqI<3aTE<#mhMzmS^j(XA(FiTB0xELH7RR zDr}uhpEEgaETnbpRV;STMq*zy&8Fg>l)ba_PY1NH0eIDb`u8N?7;tOlxy9#OZnOytN5$pkB3%iS=7IP??3j66zo)*lb$BwtJ-%(pcgfVuicAyNAchl`B^vmnU+0d3kxm)m!SecEp3=$`t;jcK)R9 z{7G%J1m{cS_5AK!@Y=Ax2I6iY{*D2-8=lg^!_?uQ$e;7zaoK^0t{(`zusg!@CYawP zZfil8F(_YVP}T@#5Y@(`_zEdtd(5pyEE#`UYJd^qY{uN7&*1H_7cpIP|lbUw0EFj?JPF>Oyy@$UEW zx_^))6^^IhC~d2$`d(FBT2rOOA{|OjZzPqKKUWq#y*2dWjbERttEyUxt404;Ay;uJ zsY-$*pOXH9CKr2%f2NT%<=BH7Qv2c7fbvH8<$vsj-g1_FN_hkJNmM(H#J08{Kib+# zkyet=v;^domz1`(jr{XYP9DCbN&aCpH@*$IQZjPe0?JEjzBiVJRc$TbT7IMLM`JIy!fA}Yfm_n2D!h#E3ajEhqzl{q)g^}al+}KkSt<1F%Kf*ZyMMzzgW6Sr{oj!Y z--R3DgOSnAJ^6n)&^Bt>i`B>y+sfhTd7TDPAA$m2+MDcyu>2nkvQFNeAlXX!JKAzf zWF?*87F|LoZ#TjEj{I(MiKb#{fr6aa2J1VP5(;{Gf?$T^Mej3k zDyCU4l+}0Q?l;m}x^RO23@s^+#QMBC;RQ~NG}o)pHT{(i<(X{iv;c84w&1TNf=TY= zBQ|7%t`%mMEEPLS(VO^PPkLf(WN3O$_I7e|8Puw0^GRq?G1LfkO`B`Wa%)L0ilB`8e*8jpbPCjJ1> zwFszJ@$C%4!(^mYrD6b$L_nF8UI0CffbJs>1E?PYy1KY1gJ6q*5|s&gOkO?$YE2Q> zrwQ{A(4$1sUJ`Q?0_sy-3-p z09ccu!i}L!1-K3|fZIr<0o)J)09O>30-^`}*c_E&0E`5{V-ynrJPmL;L}`E*^_~mJwmDo_4n`dxVYC~CDp2b<&4R^FJw(OB3Sb9dC^j9JZC6B5Uz3R+6E|pSu zH!v(^B?LY<*Rbn_pA6nNHqW?aM^QZaXO;SiwMm?gZ#zzeoaB7CruIa-_I?Y5*+@zE zra`PwR$W*sZDqR8Rc`mqf1jkWdjwLRr^O-R71muGT>)_PK` zSdLDC#rFo?v4p^Um9#CT)5xO!{54KX{>|6gMfbmkys)S4e;YhU-R0iF3ZH;v zJL!)2e3LK2bw-a1TfNM4^plF38QVqW zylwPvrv8GuS3Yyp#SJPQAckwQtMGwu*pE)>OPt_sZfVq8jXt5rh7%QJRq&5kMMT}( zGRM>&Ld{;Yb3RE|^a$tN)R(D+ATV2ywn~tAJhEzjPGQCN?V)ytkahZ2&_UrZ=~0mU z?IrIn&(nV#^`SjYQeBL8UZ0)B!bD6NRif*H!>D19q9gz*g zBZTh*s`*x8Lex0%>4_)XJM)iA18v`5JD!>a!FnUrsY?sXy3JcA8dj9`UQ6A>osGl( zy#lk7vj6SofD}j`lx?i~UcWiIevQwscC8{VRBV=oapc!*uKLx9{ck%%p4;m}_#87* zIuLlrH>hn{@qasg#6N{Nxa{sLG5?$u{Y9AXKAaeZdR@X7|Ikni7#K5dy~n+>iq&Ds zQW-^cK6518Q%)lJz|c4LGVeJ)HwLFuGwX$4UfC~2(jCVpvfej#cO&VP2NJ;oB+VG{ z*yo2E6-fs4&FS1z*Sad?rN{8UwLgp{Tx;r_g~q$w4UT*i`Z}!`oE_yRn|tScb`S$V zDAmou-{!)w+wkNFEOwIPgNp9<<+t9pEt;UuaVfTx?#Po>P*2~)-Ig@UrEv~ZS`Hxj z6;OJJ?(110?HAp;I_Tw23g3B}rDb)4d)C3vYt+}Pg%rLG;%+xLc>IyE-ECz^EvM-+ zOvIw**6vi+^E(U`ZPKJw!bwKQ?2M}Hj6Cg(;_Zxz?U)lx3iJ)zD@d10&sN9Db2Cf~ zD{Uq;!?d-b1{AdljmkCFWAxO zUG3*7BR$=tXH6`BR#pCz#sm6p0wVq0hCg8&?*|ngmOke@`=sa zAUUj4sR{K>&tAPYhP0w=n??vCZGh1;nG*F;A=^EMA6AG40;IpX^-A6BW=I`F^EIDL zJyvQ0cLDEdpJabFQ}3M})#UZMqQOZ6Zn(U!b%gHo_ z+3QFw*jLtLJo1&ty~a>wmlT+eWOX5lmTAdaB;Ar%9~ndlE(H5VOV(7l&{sM`%w_Hg zCQ*l-X=*)zd+i?vHHe+gKFX69y4Z4vbdswu_Qod-glI8pRm22RYaUgvg`n8SQ2fDg zVoQb?YKM;2!-T4^B6q_h^-Mlj^;{NB5c^$g#>~}`WAZhEHXMot` zFKJRh@HtIlE}E2MysNDF^9(>(j`GS}uEwsY!APn~s);AvbS+YeTQ-;&#bpMtsj`}o zYmIjTCyiIWg$#(ll+va=A%GgX7D=zlc$Ai;NRP7oP_RRkZLCq-ZOf-W;b~-=N+gi< zpm%+lp(mxe=~lXwCkWkMI$_Acr{w(? zpa@4;e%s`8kDZS34B?-#k7g#6i}SSyYHogpPj`4KI{A-*UB%-%mh@OWc1ckX^E+B@ z?(Dl%mYHu@IbZ>wq;ed!2kbIUU4;)u8VcB}QgzDeL$Yntq>+0Ab~+>X`hMN(vC9k{ zgXRwBpIT#GhyGv$^Y0p1kHAtHIois7;G0*zo6uFThfUoW> zl6W%umC!+Xl}24_^Rp2x0~H37Z)}XX(Y|puF@39%C~H1C(bP?{qwAaUQX%`>7;ILq zA90Oi81P~^pzg&+^&FFFq-UIz*ccVhe#z7RQzN}j-QAkDK$|jEd-sH`DzTKRbsATb z9!w8SPE7>6q~Br$gUB)?_DrtAv0|631Ye)!7hUufm)v!_=+bmYf&k;Bk^eCOQKkFKcb%}*6_XD};+ zg(D>?BhPb26!jzD5GXpSJOg{^m3oWw@~iAtf+3=l?BaMbsabgVZ0@m-ABBfE+DeAVK~$bXgkn!E@KU<_jE-uIbQwAUt6Sk11p-ugJ}LT+waid+$8!Lw{(7 z$!Z51aaS?F{ADHq|RVy`bh=K z%e=BcGxLdt*B*ZFKBo3u%V&%Fp9^H6w4^OF({5smqtl@!Fr%coT4Zgd+1dt{LfvD)CYhDucsiQY<7VYOy@~#c0cPPp6YYCNS3|$A6fX5@*7l!+cc+Or?G= z`_wECE?5afMj>wD6UR`ZN1Q>j{njtyuf2i)Q8Un;qH_h z6@g)(&o5T=8LN)k*HVZOR`EO;b1WyPe_CYdu8cD|JddeD?L9?o+TskkAZgn`P$!_R zTEUfg#viRxYHZ&6GL_0-H4O@*M!k=K=vU3ATQ43H$+C#|b`g!-$}UazOnvc9>8?=V zGeQl@jkiJZ{T|znoRJhnL4B8B^q1CQ{r=`#)kB=anAm2h$~G6(N!AE9LDu z(PY!zOH-s>#K6K=XU?YzIDy+kQ-NFGg{9a#6#7b@6X7j=B?;~YJlg{S* zZu}nc>A?`Ff=qcZ_*vwa&cs3&_HIInrS)z0LZ<4`=I(21M>j($1wyLPDHT=j6ZrB3 z7^$0)at*|YcFmih8s-z5HGRp-9L<|;f&F`jG@@S^Zhd)f2UPG(9+)qEX;t9pUr?^~ z>=uA*Fj!g`ECQ*#>wE3rMbw-;(jl>VF`EB~G1G;#*)wKcY_dE!* zz1Peg#9H1*+<@YtAA6TRZru`^2D~Qj5cJi&_m%hzm1)`%*+Sr|MOT}vE_qZR)_2pP zzxWIJK860zP9#x*TGk=?{8i>MG8S)Z~DaUN+QFpDbV3l@AE|Z z^T>%6*G?OnOca&5cqeuG%$9J~&Sv+1Q{BDvWVL?$O>@KARwyI^XT^JWF~wq8UR;oD zMfa46#%GKdC%x$S3&;wUMyJm_KSWw_^j+&k(1Mwv2aBuD0rTGT?Z5u7G`Mp9g;Ix; zDt$s<%r~f|v?Y8ni@*7L*DDCbl&fz}YWA7Qw9BrjeP?#dPGTe5St*6u*;O#;Q*_^} zuTCQ|yUZJ;T0jwJOi_ZhZTKE6PIZ&>70uv!nP?U@`oys-k?GRm6>6pro^q$ZMiUh5 zy)$N-pUi&z$yj-f%%yf8`Gs#0ppiL{S>KXxZclwt))A(>Cb8(1@bZqq&1Gf1mydz< z-P2{fe+G%|!BhiLj8x}URIH7kukR3jx5Ie-%C*Ni-T6244GZr#o0da0SLw#Sft9)n zGGP=D*7UT;wd=M4?`78acHhvag0S0m-GlO=;zRz;4vi$=kqXKMU(Gr@mLHm;eEE-Y zSswfiF~gdgjru#+egxZylV?q~l91IGzboV-6R>Rax8u^eg&%#)1nHr&YcD|w+T2IO zFUz`v+#VS`4rY8)9i1pJrR#f*)1+y&oc9Iph>73xMRlbvHOQLZ2Q%lb#vx$@A)>6P zFK=+(E+~sM_n=xPm943IB_(oHMu{FOJ!06qZ##&TRe>!8kSD;a;}tco+Tk{=E_%s% zu^VrNGY6(iUxMb$)hAu52n4?^E9py+_Cg!t@Scc|@8{e+E0zv{w3bbj%4(n40~=&2 zYQ1I@no~iRaFwhKuQhH71z$O#zVGs2=jNpPpsMh}JxOOG?Pu?w7_o``cJyCUTOyfB zyvAv?xxR_pqS&TNr;rCImo45>mmn!|(?iUonDyo$p`Mn5KiTWjIL66C?{lf>2NLIIH~ z(BWK7H?EQjI)7sC$F>{c=TAzu&{@mX7wt|}mYI`ZqqZd~8Mps{X^_RnxW%-_pc~*1e%&VWm zl;-Ta7c0?96pz$*BO`Kw(st-CvArX+6a?*vQ&^?C5{lOX<7Yh3Kdkfv;bj-FKSph^KBK~wl;pPovK|^5Nt_QR zg;Lr{A6JK}ERCp`Fkum*3Ru9%UkWG6)YiT;nP>kvs>3VfmQ+|>tMHogRGGrZK2TRH z>+|ZbrSl>BvbQcmeU+Hc3e&GSB>U&S+tlBh6}F3)XlLCMoJ$ScyPNqcEu|G?>viwN z6Z9KzcrRAkcnL&*(VK^HAEOVG|3NAuU(#-yOwW4+C6SNQv(B7Q_sXk8J{PEhV7HMv zd(m%Qbjp)rjgH(C>VEQK8$dXnV9v_BpLNlT6>_=Qcx7CGR{PeL7Z<^3gwKs_zCM4X zXw1r6%*>y@E(CBnaXtUsy+cq6*AQ2rw?uIxqI&|@B1Ou`+n4M4oxSfQwj)m?I!%2E zoE*%;lo5%`OW>WQa5QxPQ7^NYRMO);9Ei=lA9rc7tiF8Q#)`O0*Q{gmJEtXT=;T?QIl-8b_veG5<;$SgM_)fq_c?P# z0|di^A@@JBH5BufJQ&KlpRdw#5t`KbcJh4dIqk(z`Wg@ceSx6#nOGf8Ud)+TpWG{2 z(6#n+y4jh~wR6`}-u0)$Bj+YxQ}^?GXQQ;SHf-yw^eo-96W5){$JJs?CQxN<03fo* zv#40=Hrt)43nB7zA#*#kqH90phfA9mwx7Q?XlJzkj`ZW!(IQ4LTF-;q#|9HSB#!oc zk!0$6OO>*3JHhha;r0ol5@xaxeXQ{fw>@qqt0xoyfBgY|4lrPhQB@X5X4^my-<8_! zY;aRV?z1B~<>-fknwwB=4JIGJQMyX%#W038potXCxI3g-3TeHSp8!K_(a-ZdbfqC zLV+>I-Jwa+YT-m#73*S`D~fhs!=Q+^vS)Lck_@Y&c?;snj)#q!q7HC=3qaft?l%Wl z{<+VNWH4y&Hyhuu%bNIP!<8UmS9qF5Are0vtC05wFFkD8t*5qB+T)L{mkK>Vcy|Zf zOiN7q$hbQH(fOnaq(v?lYI1$LyM4vJeh8g2e;+jgOdh1tzM>m~$Pj@-g2q{hPXF!O z(Q0Q}MQu<}p`F7)&X(=VG$80>#WNe7;Ge=)xF^;sgpC$*3z~h+3Ous1?=!Y;U#V+A zUouiI4OR5bfy<;p!32gqxBvT*#@f0H#*cxCW)&4)X5a)w-DwO>4&fS0)V4OyPKD@c zX;0{n4n(NS4owUws-M2YElqmw3!iSz{okUx;N6suXnN%l^;y`F1txraZC@`!xI3Y; z`>u2C+!u(Pa+iB$Wk{poMzrT2H>*0c5BwsyfzV$Ru|*WIXZ-|#69w*&Qq=#5&_Nye z!|mT+Aq4K|4wue2Rkm4nUk%sX`bfp*u$QR@MssD|zUsNk-sK!To7PwXFh zW0AqZ=4Oa@XOn__vp@DA(fI78z`2?IS4}?GNYN;np}s2-2hLQ&6>(HXLd&hD)-EY~ zoj?tn$@-)x-!wm8@e$Fk+0pkmaO>?2Dk?j^oe*a>5}d>YO%=1Xh;egyPuO1lW~$aa zCuznk?)uv-ioEccnDs<@+J(U=ab^nw+VY3E7SYxW0sY~pV$I7(Kyz-NrpgO1BcSIm z?B$CyKOvwU8-^G}nmGbGK$>UG)0P3ymfI@w^1>u4!&bs z^CA&YW|14TDuIChd!YqD%Mj4sz1JB;+ZhPxP=*75N+Gxwt(hP%WFw$&E>r-nPY}@W z8!VKG!dX>Lw~rZql>Bk{c8+1YxQ2t2jz>(4SOVqoQj?sev=$NT=c=v&-0)+ zQR>0unEi4Dzt!TrM@mb+BPy&>q{jlpPS)+s^giRpN{svUkKG@&w5-T8G5lHb)8fPV z`BfX2%2c$j0!MLecD;|f#ID3LPM66|JCz*O_=*nW`JEO}l0Qcc`1Q$_8Q`JT*9MtL z7(^Vb=rL{4kEm-D${)8=T%SMvP$7IeE1dXb3Znd$yAPMvu2Ijq1JR;SbJnlaJOzy= z)2i+cCSC|;geDt22Gf|n^t3EBcYn3-Y-JO}+QyG25KX&?)O)*lA93!zCqdYn{`@M^ zf)2!lwX+KtKen&Tif#=ujTQR&%Vf8j$(q|!5}vQ&hK<-`>-R0a^Z<0K)#B`rqLnNP zWY(Ft-rU%m2zI7J6Qh$JhzsIM=BH*wR6;tsDLksF`OAu>lv|aI>x1(l?2B}U(y|TO zUe&W=*tO`cS^SUbl!S6&ubN4AQDc{JGE6EEs;{?HT{lRAsS97HIm`GVb~^y3mj%k+ z(%+I@?-iD8H zXZ(MC%m($NqaHPy6x!*|Ju3a5K(LSo5P|dpJObu7NUoa}6_AWd-d;7+y0Er4=-7#8 zNkwhfz9Uv|_nZ|}Z(s&l)A^d&jUAT@fhI{IkTfxxcg`^4>6S0s219C_w_KGT8MS0> z?o6fV`cL3*7}j!n^KYIAfkOLHf?gW*h(>(&xTD;EhbS-_hzVTrb|ZM#8K-IkMOi1k z19Ak2ReW9Xx}d1J{qn$TZ6w4yH2twNIi;)Z)0Kgp+XfJ2xG_IcrE2vG?QKg|gN`Ii zh?Dpbx@3pjvSXe0+k+9$Jo5phcFva-D=CLyRZVg#shY^@;;iAb7_x0kpYd&b=wLW} zG!dVbN1bQ-c%hV4sRTh$SaB3`-xX^hw4Fieb32p8QHf%3cYhB_as<2~z8B+A%h55G z6E1x^q9#){vg$s{^2%rYV~?k~P$M7LGF)O)NngW& z@21O~tXT2gygoR#{e5uqa4>iPSH!+351&XX>z=Wk>TPk7t1e;TfRKsyq@Di(yxeeu zEsZ@vbvow{*7^LX^SD>5$BPtdK9T;^XtHzP+9Sb?Fb~9P5MEOa3br`J`6vfoXldWJ z6bREj5IOWo9PhpzH+7{h>s1Di#@o$g<%H4_vtZE|BjDCV!z0eHVkc*wa?`H2!9s{i z3ndf%QYYx;z117OGhvr6N!J#r5ud|O3Fk|5`MaI?mvzKVp8Hj0LIyqEr7InRmAi6X zC9K6D_dhvhboI{5#$aV}2UtV`NfvzWR-W_Jb0oI)o0Wam%SmqF8jV$nCLCSF10nfQQj^*gYJN1uicc4Ft=Co{F8b=e9Y`okJ5SsMwl8(4ZAaod z+BquwM9!^Wbe&I?(uuW5$X87~spx)l|Nq6>yT{d-wr}Gj?W7W#i0WD6X^2UsY0&m* znap4+4Lu&Td1RC_D%vW$sZf|1A+1VfF(_uxRHThD#Mmq;mKl7GZvM(jup1$8)L0)7`IjSSd#g2&wFWl2qcxTr4V&A>6ftC1PB(G zTCo)A{{7{dHZ?)sU4<{p<~%5g@Am@x>$`1-e|>St|7Vx6(y7z0`dP-cW@A}mNo2Qd60(?C*@nuYVnh0{wFXOLOh0rjJ`;BD$5qEMA>lcz^cD~xV`Hl zsMQN&5fuk)K^19=%(OpI&;QtJOKm`$@wIVPfDKMb2bVepB`X5GzPHobarea4Y!n;p z9_+Y_+5$QluPsRkX6Tx>SvuY}ejalxXr)8J9MMW=fzvH3xhx{J{Blsz?-8lIrxB*Q zz}M_DkLKq5@=Eh)We+wru;xS$eOCwdpw9L5uaSAD#<&H;G+m7vMe1jVA-D4f#_+3t zUM7)BHW->F*S0%YMAG|o6R1>h$xXG#kkWChPG{t+ZFGx+_^}`p0Or((d zt|)4S{t$^QEVaU9^atqtteCqLb-=lUb?c+_=BS@7+Nb$=!Bns4v+2XD^P-k3f2vJJ|ee;Vt}4;@5`%EOPFo3nhLX_>cS9 zYjya~A>S(ch!el=)tMMDH8u3Yk)`ZIn@$(fpY@&V=tdtq+;}QIR8H6WJj6$yIyTjh zeO>*#d+DKU?#_xGG)Mi;mK==I+`+4S4*7ZjC7z=$fA^Jk;?%i=*PY!yaC*Y{xq}Tq zXZOusfyWfj2|DnO-~J2V72fmR6I7UHC2#tCUbNNcMe{a^=B|79)X|U5ZnyLb%yOD> zplWaAyR(%)y|4P|Bh^n+RX_b(^;4kgr)bqr>s3GP_)aY-{pjxU^Y2r#FwABj=AK zI`-~&t+pO!`>q8U)NQH~J~k!v>>~cL#%GQxKUR04&xGOgq!-yoh?jnlr~GN4>Zi8- z%HPRUKYg$IX|w95FI7K%ruylFPYf(iZ~EhA)_ixJrB~v14&2t?aYfquUK{|^#-l5Y0%Guwa_ zJSo#Jz0Fmi!bHUl*PjAbL(DvV2B_wL{SS$($(9vS)z|%!P;vkDX;~N;gRieD0-pM6 z4N1NrTAATzjhZLGl?`iaTkTiF{YOiOWZ$dtPQ70L-xakUaD)Fvl(ehOwVU~4{+&rz zBWvv9UJm)j-3S=Jq`nDB$hfUylwUPK%;#ju*7n&@#`@WqyH;KGJNm;%9|dqvlNXn&pz|4J{Mq5m9l72 z5v&~=u#vhRF2CTmE?r!|dS>~B|I)A5Dxymm0u~ep{8m->Nc1pU;E>YxP@}B>=CNw~ z7amwJE@M-t>z;jyl!NFDIG}^y%^hcMGCpI|z9k1NzM3U+N}c@6f^q2w_kl&0(CIqL zIO)LLgSd2utIow|D)VGW>&I zzMini-Pq@stREL!j@bFj!5_c099j2E*@SRilkadC2-2$2Q!vIlHT!aab|c)l<-Aq* zW-k~55-j*oDymkdh1bT{Ym#mT#F`1bA(t`zdkFY0-s$gx*|asYvIg8yf~pqF+1(ek z%z-a@lR}krk@KKHIw7CS+MEGcrYE<8RlpfxnG0%^bS&lP47BL)nd2((qOK*)|Kpkx z7PzFAiOc|0gYEqto7Q;fwGSRVu-`QG!Mg+BarHyx}jOo`eBy-6usFZV|UH|#tMaP@biiC2XMoSR$Z@eqE6r<*Xd7g zO#LMP0~`6B!j-spxBH8w`}*S}Y6f3aua$KXXi?=FZl7X`EhRF`@=R{?KT=eFKVDXC z9TV>xQ!VShZhSdrcWdaenPN@YC$)=dcMlISMxHpI>hse>?vL9_@%v=24m4gnTz^h{XPdP_|0Q;Yjz0~U`fjk=42u!?X$J!BclK!iOo6u8e2;zQ3?7&p+QdCcezMR{h&UC=D*u2y`HpTI;J z<9!e8kFREY-hbsg+nTh0as{~S_LVD&l)xNP6phP`3CFsR6`(B2uCGNs$K5*VrsA;xveWu34tu zK@tFpt33x;e4cpVyj|ku|Mku2iC?n^WyMjhBK73BRS5<)Urp6(`SHWuvsUG9K?yxC ztF5C(F)#`h2!0A&13jff5YS(3X^T1Lg{?q_G6@(vyRp7hl8q^+6* zK>9&?0qKwN%b#V(@S7~Bef(4nyqW>iw1Zv2#=P-Pt7y0#6`^9j|2i3z3`h`I&DL_* z4HAG)Za78BJ8x0a4oY0i(`>VnyPciK-3{~Ys1%w0Z2ZY&MbmGu#*e`*RB0-IA2`I5 zf^5pT7maY;MTESP-$EvqN3WG#IJ15sV_j^lyz|J}a*XQt#p~y=-(OJ#JTZBlEAe?! zlI=8RxSdXsyfLo#skZCh6rO5*ebbzb9Q|q^nxD}nsAgnZd5!DHl_+|Q9G&t?PIpC~ z0LlnZ`h2T>w&~>(sC zu>_+&=_Fvy48O454UuK2UzGgv0JI3AdLqZT^0a33*eu?}J=sxVp2I9{RT~2@l>@AICvd43b2MsE}0N{1Z z;73y7qMo|?8N2Gk<4Ql$ua=>7y=SQ8IVjmSc7v$)?(>V}Ty*?1pV+*I4gA4{lui_R z(?j!+>{-lkeTFWxmjbO{O^iBK{QUoH%6lTY-8#5m+YhP)NFNN|f636(>v^)?FQ}dGo6wI#({7YwLJA zI_=xS8r?LnWmCt9s;}2Q^vJ)KqW=28vG?kKpXqBEGx_SZcXS^P)CYTT-Q=qOiUx{} z^1HylwC-8yxofD}NH@Shdy7|II=o#bN^~9EJ^b3Zr1p?3@u{DkG>={s4GszS@cdr9 z|M1kC!!}O8H~Zk1wenX#rBK$Xwc|YU=8#Dhp5aGjJvQ$Zh!H|hSlXC;$o84^iv?yN zK&7S>myFK)RW$qhsE*BN%pZ;Y_2|Wp&K18u*bG4&H(-a3KZW4HCe6B+3zOWn3x4*z z_6l{Wljod1?l_0nda=5G{dauj`*&! zt1|=8|J6v!f)l2W0etslq+QTSQr1wn`er7;5brGTPo~XYXZK5@I@$Qb$!Y}#jEHhc z7WH_gNsuI3bhmTlB3mV4>x-xxtF4l5z-;?z?gmsBy?dFBwVcejA5gW*@YD;}1cCy0 z$_qh*h(Yd9HJd15(=0})K3Cdnia$xNZ?;V#21}s9LA#k(3@&PR+vc$UvyvHSJp9!M z>MY&5=ZE3j`#Yq#>D+WZv6TW|oXfd#4QO|$UmOmuu8u4-F&{D(K$zRU(rLS=?pU(4 z5ovh-fj?UHErSOl{!By&d~m^bwGhn&<5dYGZu}G6xGs%ZQ|w`-G`Gr_4~1)jI7mE* z69q4P_nQH!h?Xw%$#%Kk@W@^u;pOxpwuP^pw?+cqte5dF;9FpdfagD!<5=4y072qG zj#iFom#zJHu=D8~j>ucJLj}2}FXHUsPFoZcO&F~eVBHjnLSgjG`EZFWtPF1|ry`9~ zK!-6!!jN?!a}t;gh6z~-74Dugl#!^q#L8?OL~}b_S=&mUH}isbf1R^uCu~SuzV++f z@667e)1;*zm+5~@az*W8#reP&n_V`X^tRq%OMJqE+Z(Na{fu_NrzI`HwyzR2J_{Uu z%G>7M&(=@}83sn6S zt@>%b>bf1OpZ4*erfRfzX_HlOd#Z*?d&6K2*YQKoMg0qF_8rN|>aJzw#P@({q-Q_F_xk<%RpMBi%+KEmoaXwGbeWEKkfG~)L%j4Xq-qjl4X;h= z7{mjvL7((9{3l&Ht^k)R=+Xk6C|oM0OAFL?;nHn%=^@u(T>3s;`hiUrK6N@S?bJ!b zr2%y5&uV$NG>b0%(RB$f9YdE|7U0tLGjOTRz+zk)N0-*99l@nP(4|LRmwwVOZ5%FD zv$EOw`8)5^rKtn2;nJ;iX^UD3E|t=y<*s3$eD%lF%y~f>nL)o~#sx_;gFng249d@3 z@=I1}P(kL>IRSoii!(zv>}(A(H_}Ml=jxI+=x*h+uUz&Hx>x!9XP4qZ_bXq#^RF|5 zx+-6~{_EPH$Cao zXP|$ke?PIC!H_fRVzIY@(HV^d@gjo}XEaZVqYTW>X!V=2&S2CTZSj;e5G4ono4s|A zgC=*r^6(OUB|(T9Ysjck4wQ-H!8e9SB?6BRf>k{e%AE3aCN_F~=y#$xZ4&-{_1VLo z^NIhSe9irT4BxFzA9rINSSjI(YyZ?XqQ6d`IeOq6`oVsn+e~R=(SV#On?Kf(zB2&$oR#KWqfbTJMx~?F z@Pm{S7=@;VjH)#R`sSZGjFNDC90=$)qEjc&w5}EhOax<3E^9LE*d5QK_`~1~aI>e3 zt7o)3Ov}zg9o>7QpVr3io-Px^prVF5HYeOY!CiZ2pxQL(X$8bMIBA9YbXojB!&$X&L(a`d!sEPr1B~ z{PVH#6IX>Ldmg%B6!+Etm z#UqPzDE|ITkggh;zDsN+`JQzoeiiuMD1`CLGpbM>uS3%QVB3(3-&~M}ZobfPOezii z{#FOxZ$Zhxo7?1FR`vyzU+5un=yWtL4xO;u4?1sS_kcUQS#7R)Vvv{3aNhNH^VlDA zRt^(%y^8f@)fnwx0qPFd4(K;3vCM0-NOG>dphEZNvD4zBhuNNm^%3!=4H|zjM|4+4 zL2_!!M$l}f&5eq=XQNv+o+Dp)x^&g40S03?xl^*~|I4L80@wQ-1jikuT*Bj)`&{lH+A(GQ0RoBf} zFyQtm^-<#gkwWTCT=!c>Jq96wh()pDIv$=%L+7p`=jL!;5fNQ3J=E*GN_`JofqP@T zYk$(Q`&RR$IxkkQ0W}K?KE!y-J1s+Za*;bH;Wyh`OTTdHFI7Wt!?h?8ZPV!Es<%@ z`u+VJ0Ph_ee~i}lAEFf*-y(xi&`8Pgq{^{DnCcf)DXudrb;dV$+T{4Bm(%*gI$bWh z+T=ET@SftY7$w%MIP@EAn9aKJJFB{FPYlEomzJ2U%HeXZJ@N@Ja$(a_ndu$OTI#rkmeJ5x0B{~_r&4Ga?y$`-P@ocJj8HfxeRL=uXRYi zbYlKl&Cur7ZefgX1UdlfN;($sOlfzZ-?k{_rz8|fl8zlJT=hGx4Tg@eF&ZVQZH*aL z9J)^oUMT%7EOq7A`m$!fnqvy}(sL~Z?1p6qzOTb7Tk*@OT36&9UF9_UFiq~TJH+AT z%l#YTn!h*Dd#j{1x^!f5bnIBYvq^lb-7Yjf5mw&VQ)X&yGHN$I=Mfk9t0!_fS;1)4 zY6ge?;MSClx;01c=So_!r*7e?9^;w_OaKvPX~ja(V7arW9mTVOPA|vjVTy{%G1HYD zUB?!K(W|hcg)U|Y;7LW4*FaC8EQ5dk!*1XwuE8c~-tMZax{UEyR)bH+N{Fi~O0Inr zF^twF77N+T@JWt?mYhNrW^ezoqd`=&cL-%$WJ1A)Ca@94j`g1M^1VMB8TOy1^GG`9glX;(Y&+VV`!R8^MoY@!&5XWsN3Q;4Sr!cGrTdtj zMB>;DEB4sVHYND>8Nls7ykVJmEM!v4^Ryv(%vUDHh`L7Ft(v$~JZ5=W|E&%8ZINXy zK<(GU5LoTG7y^9j5C%Zwp0}g4MxCq=MDOzg{~*b^s6Tz~&1msk z*Y0tBpPISI8EEHjkkkTudFTdu6^>HAdb+)iT5}wYm-) z<)--qZSx3{babe)O4?8z^kIv+XY5dGKY#SeUpp9N|*IV-8N>ZSTW!j2#> zC(btv9wdCOMu+R_C9YeXv0)OP11eZq(^Zh>J*NE7F-V%%U(ZDtf96Ma9(YGD^8qY_ejb^PtV8dygu@$eME-L<&K%H!ifVd_}}~c=}U(8q~}$KU~Pm}iSNYLd*G$U(}Vvi4vN4(dg41aJI4d}#q)opdA2QJ z(uv>kiUFlg*$=>Mc2l=`=X3Q1dsDK=RVFLCmLZPVDsHlMtjAU3A=P@goL>Er`UypA z^|p^;IaO6o-pWx52X+oSP|VfwzK*%$4l8^(~XaI*s= zzPXNHp$3g;H2dt-8zrfNb!YeCYw-{PsTIDvs3C{<9?}hCT}1}@L}Z&CpW(l&jXgYL z-&eRFk<~{U`1xBW-3yC}b3wn^9#_BYJNXxO=U-{Ar{r#(ezo{^ zMC~D(v54C27|8{zh3e})`|scLiTC)uipO=J9980S2v@t#^>S@O%- zn@gIll+V>NfGZl)oQS+W$WDcR%}Pvgk(lM2TV;2le+`mTr1FMo^Y>p@gw<5I0Q!&g zs;?sErVabPR^D|Kro_hBl+xqP?7x51r)gD5A({Hy(kmB{kia2XTq=^$y!vKlfCYwp z?_*8NfQ&`}5M;<8Ka59%R#Hp2*KqUkESuC-_Vqz~*(TrAOx9po7q5)>q(ux>!dHC z#F8!ZM9XvZmt1d-NogXzLQhO#~8}PWnB_z%(cK19pROU++J6V#`fqw);WT%gL&;72Qp`$m2U~Ovp7yQl)iA zUE{-Sw*T>cz4y_#tI^*oKH@FNm-zpFwUSp_dX<`*Rr`G5FtS>$R&JTQn!T#S~2VakDQDv0Z%}_{) zNMlx5t_3VK2{dVmJR+4~oMz$uBL81}%G(ow=hOk+B@UJGs$8r?S^H|BqR!`q|l!%WRvw`;5a-IFahIM3tBas?Kx$g9{N`EtNRxT*RptrJER zTQy_;>R$Ux$Uo7#UL;I$iLeU3*H;tPQpqiZRq6-J&W22477m~lx2_hJ)=6g`lknZg?nZ43Y~1w!kdEYKy8q3@pg?cEf{Q$}Uv z-g13p96{*tmy|b)hUec8A~$kF?_jw?@$f~vXPazM4b$#NED+^cCkumR$N3yg)8@pv zJ7ufxkNU(*`=bTp;@v_SIs9%(wgy~eyX`=z@81iH&(d3XvZ0fk0NPsPZp+cmxoFjl zdD0JTFIXo29^v)tbPrpq0o+$h*cOyJ6eD)GvukoF{HR~iuN;%}p4wkouOiX#Trt%GkI6wC~vK4Xz zw*s9^(-3$EQ27Ur9bwD3@^kG^oDd3qJ#*~9sHvkfr_!f59GE_uK7|>o8CiI(c>SzO z*_~p0KiK20u8QBSSX9@v_d9XmlZ;onDDWD*c(tK7>KWzYq2Ovc5B@fmv9Q4@wuNStz@-|WxLmsn3_ z!V)~g+SnE{(YYh{jc@zO=`gt5V++qOI=1dt^X*wtiT6VsMkvWyS{nP#*|+5G|E?k0 zLEArlCsH7AjyVK9haT_6EC1__^Kbc@Jid=6ym^N7<3`1KCE4uRy&$Ixu>x7LNp?VIY@6<@~P^1V&O22)A8hIB$`y&*>%Grh7QdLrlI%zo!xnjsLk#{pUw5KJurQYh4X*#VpI|lo{W!K%;0}oWRI|Uclw_F{~RxGivWikl>YEZ zC%(>O@qnM^H*FDd&^)VZTllQpb0%VbpyM&*b=exeZfE-Huv|RV()%I^WIbiKoV7Mi z15B?wN-$ZQeML1N!6Iy$o1dn!jS#h!6gGS>#ob*e;#F2}@4aX*Ut(nt6Z8Wesut2&9a%rcJxUT4;Hn?(`BLzrT z8kVKbGebI$wP`sBt|LR0c#ut~Nuy2@7PC#~LvYG9dQ!R5E}E#|Z>@@Iv74z|KaiFz zb_Sjre4eF(ccI<fYpp4AqgvyGX20n^*wvgGE!@DxTsaMaFz~I z12`xq8-Tue;l-!8AW0$#IaSE34Av>~Rl4zyN7+rAnn;operz!Y`|Hcj1sgcIe@cW{ zT0uZF;vm@8O?`=j^6EpLF!Oh2?==lIjoKcNb%@)hdO#jSLa1ZNZt=JwhUpT476J!6 zd5{j4D>iVeu>;5EHi@D+pzHkn(scDS|uUWFlQ^ z%owJfW`|cn(jfeD3KCfo9=k5Hq#PkgZ&3bS4Qa ztPq`@t%3HuNswAH_EASH+UtOAX}3q@Q0|GCK)Mk`Ldp#%JN#?rmdd57Nwv$9wS5uq z=TEJM1O;R^Ktuw~GwRLm%$UF-y7;@+AH+vYPHm$TzFr_$4L4XZ9MJTfsON z(()cMfH%E>nvxb%-5T)ZxD(}~1+r)%<{3BUDiRnpR!BJjgHa0hPX>*_HdBL`pV&ac zzUKXDKTtC6mMH9_L7ex1c<4M@Mt%plfzBhAnMUSRT`qDBgtMk)!$&C~^+iWmtE`Lg z2pDJjWrFMY1-HR=?T(BubtW(EK;I6nLko|^34g#vlA{2w zo|3$?(J1)pAf)ddK{W9-785Li)k8qMIKaU#*9d}7r8FQk0d7+z;-*4--^FsgEsPl( zWc{q>y4#Z+oi%@y-+z>?fzJ#9fq7xB>ytuoJ_WDMmbZFLsV7AmtP!cgU2|hM0{)`y^i?LbPcLOx7U zKQV;OCeD?5^zgXTE_mY@GXh%ZQj?EKbB_MkPccIwyCf+atD zyKT(U^@i$}G9qWqr4prd$di&)Bs!|x->Qf0SqFW!Cpnl=mpN1^~TKw6d26LU1wDjzfro#y*VatBanCoPCoE!!NYRxj(a4MrtJ zem5$!UF8-wJ+(8n+n3z>sMM2!&a2euP%X9*@RkB}yD{B7hT=|w#mbRCE~J=?OscO$ zhFYuA)f}M>vz#3icN0CF_K28V`XbM(aezYDt(+gDEh zmsVzF$YXjOn=gO%UbOM|*@H=YjUtelL@O0481Us=<&l#evtdJ-svEk2iI*aX)~!XT3F0cJuNa5e13N~}_*HOhdVmJT|O?W2}&p$QwHiboI_(^j#gP=`u_ zJ07BAr+1ulml6Gzfsb$ie_(lf?}BYIC|#<5y*7$_DCDr}db75Q930%W2x@h<90Xwn z_7InZoH@LR%mVES{6h~fK)c>~d9@+&WlqA5DWs&AH1p^ioc3Ph{HO}BV>qUtog4HT0AcFeF+e_sf$ta(UO5E@nYkI5xg|^IqeY| z-MxZ^}GR|50-rq14K<(HzJgW5?FY!Tbk=zqtKQQmJf?+N*hFr3+81fo$j)2 z$v!5jXJLY{08!%e>UAt|fW!zP?`?rx#>;%#R06mKKR;+`gSL6jm6iSSxa+iTj=t6G!kr4n{y>N z>YZY%vZ?U+8W(`OX>74bf3u%Jw0v8t=Tt5g6sx*S$QPia!5u*g3pULWi0XxMj*=+5B;U|YWom?SUK#p2kklx2esvfSJjAJ3(gOQGhI8b}yedV( zIN(T-7$zs*#OynQ?(@mwQ(WOp2TnS3h>AM%RWSfF=LED%(FxaCri%i{S>PqChlI5~ zM;eR^)vRh;_S6UP&TJZ8wS@Vn)L-dQ7c$kJFN+(Wy>#|WZVdrWpDu&d)!s1?wT#JN zB1kTby2)A>I59%_+m$|l+g|9<0AHu4lCU8k4O`eb;Q7dF z`bT7ZQ=VJuJtSWy~k4Sm4S$uW~$lQ|#ZAs$&GK z(XwG9Z?9ZEx>J&=O$as{z0UEv<49kJO044ixKdj46!)s3kzpwJP!T%n)-s#`2{nj% zZ~!P-Q>Jw+H(_FOw65FZYgPWx4_8uzg&uDUWyvHc;pe8V3>*YH6Ie9zKn%}veIj#D z9B7!U+7AneBEE}4RUQD;YN&mFCD7n_v`fP8%#dS!Qso^{frA6E16fOf^Q-jU+^a8a zl*&SY$i5|`KZh{*%*l>^qtV^1%CFe&SBViZUCo-6Buzu+*$42MyZ5mDfey-5MrkoG z=quMpq$(~nRIlp3U*gz6K$}5^uUS!LSJwp%H4j;!!EmB>38O+E>fenX=}O zpkj^`GCQYU6!2q4;yx{+fl^HcO1yY}4Cz)%U8qutZZ#1VLCa7;Ov_s3fZ_s!zo7sK zM1zmz`g3<|Ns_mZ-0h_A`R9>0lI}u$=couYR^dNkPgiBZ9{~wOUgL!4avL4_&)7YLw z1yUC8E3-G{xX?CJ=_j#cO7!EmKzu4&0}hHJ7J^j-9T{7K0Fi>I7A!$s?SQ&M_JkPw zDnjC6@|eWC3n>^9x+1R(i>ZsxExFjed^pyVQps4rB1B=62M3WynBf~#Bsikux7X1ZH8w71Ik3neHap{b zBdOABWwu2)lv!%AdEkyA#m6(P`HoG6s%3>+_S;5770)K?TC2W~56|(t>z<7dPr9Vw z>9xqVONK?lsFw)i&GpXrkEKCzq~mVt{@kE zC!+Yd%$gdc$UIWeQI~C+`yIFX%LBqn9L4bcUqqpc4a37(2B%tWGS$CnXtG64WuN0| zaL;*va_!h*+D%ckcZI^B#n!J9;4pQ2%;W@}toD=(MZDuH%x&p26+Olt;TwT53c|yP zbWS!0Dp4Tqjq1B=0#{+P=hX$oT+~o|Zz~PK408^bo~RF`e7vDS6lFYU6i6k{*=&jo zO1?#rX8_jx!7}-sNu{b`MI-2w3KrtfQzL*hDEoTQcG;aM9J9b&`8wRk^0xPfOfw%c z0GNqrxp5DGT!e)$4}*kiYv$&;OWq^YO$|ym;Rd=A&QyBP(Rs~w&?g)$K}QR;Z~1mj zwcuf|MpB%$TlUnZ)XB4i;yMIFG`eZiM0EQ`w=!4u�|J=`kFL@!F(|tV3DyP!#bz zdq1!5Qa0!{7%brZJvJv?t}~#Tcn0@*M%isI)QN^ivF00g632sw$E|jirwlfX*UQ*6 z@$>i(%D_S~ChVc9$BEQd8NT{H>XS!clq6Oz)Fl!bCtJCrSx#94bR8t#NZN zk<1UY0e-3$KZ`YWTT9DJIMLdIZvRqH?ZY`Ji2qtTP5K0rD-cYwd~nEh`O^5C#MzLp z%=(rH&d;e<16(Pm3TG%s6{ASl>pc4~O%5#+m?lgaC;UTxbn_DvyH8I(po5e@m9(}L znjrB<;=+PZfGX{zWG4j6>5gJgV&@op>ufjTod> z4Q*$KOUf)y1&;{48bX{UCu`ebl}0rKtBTiMc(M|*5kIi9llC>+F&PhRga;hSLeip_ z^_a1MxJ=#n&A%!pmPgUUusY$V?ER2o&7+oc3aaDc z{DD^rwOt``ryUkVo0TF6UXdo33(=43XxVt7%S+gAgiUW1PeWK0SZa$ZV--~yX_axr z1yoUv7};Bd3ebnLYF5jo!1@%(b#Bj-Tlc$tZT>%^QHnw}H<`dhSA- zBny_##PJFV$vlm|u3$x^Q*^uf+G;s+HHeA*5dcLE)KwWUyq?+}i1MWZyjlkA^E_~M zZ#Ni_^*zgOGE2)#)uNb8PivWg(?ivcm9d*l@#O2p?Y8I@AiDw6%y3>7=>dOQQ`8V< zL@S0zfq+|Vm1q6vvE<-}o(^YkFQySjZFtKSsr_@m#h|S~?0G{n>c5$~BuV0xr9Y$@ zM1U+{@$k&O6ZyiKT z2;)JRQG|F+R*=RncCFT~ot8e_NkSdM zXA+|^3)E8#GD&u(R_LykLH-?-<4F6cF$e?lB3j z(?7Im2h{S|#?gcKKj_V1cG%7u5Y$`mUZxvg$>g;^NmevY0D*zYk|2(3Kq50D%?y+> zXo=EHPXoZkkG=L~{VjNw;Zav}p#BEIRggNtG$A`& zLqRDUNOd01|HaqRYgS2x9wc6q4Pi{ZyXax^&^n4}jg=fgBITz(2rC(62Z=1K??cqI z#;QR9o!w5*0EG)Aa4tMV6dNU|!n4D9G*#2jTCG`EqJ~bA=gI8^4IuoXg>nJ>Ch|y@ zm_NN4TTqzsj)mS3Z3KAu2!~ZMC!2eEhF=3uvM~}>PZ~3ZYzFpX?%-x9^B@5nvxT)W z+BeGpZGZ4OJaV*Az6y8PT@-DwU{;b>Pu3P&jnQO|LU#74FC1Fn%33{aQGE0wPg!$s zG}<$f9ztc$_>39C%(j=*X{cf2?eW$@5tGs@0?uqLG+|$O!K$}x`6JsasV~NdC)WZP zG)u3Rv3T%QL$@7xiHN;d%tdjxH4u5;5QIF%$`#^5;R10Fl?gxSbYAi53|hUccIAq~ ziRf5=1UzHFU}U_#doQZ;*Zw1JH60s8-vBx!!zbV>sMPzw_3pAPSU!OxL+}l&m^^{- z3=KhkyV=P$MwTMf;f5YlOm1;DyRL{tDgSf<`c%izH8{R$w(kb^e)q2C8GV2o(s1pr2>M%JABP@ip*b8Sc4$I+PuwZ{ z0y;J9YdOn+`NH10>{EiCGn~-60V`I3*OOE=3Y98afj?QUm0x+ogmV~O2)91+Onayx zaUQ*0RY5h=)hW(`t=UnxEZ)pJrcT~fLWm@p1QO=l1ogl2i+Erzq_G0NPF`!IQ9h%W(YW9p zcmNPSnOL(wgVnKAKd*KSf;|w2-}@yerHtJgQQB3&Dy7 zYzEUzM6f4iC%656XSttCEP@q71S_leSbUBuDg!J)2RWvywxM9r!?+hLZWI^}d8qr@ zqX=uytSm9fYRYr=<6tfpFI=S3AYH=z1|?xQg@{HJKNFwW{*QlH^FOj2|tM}qd3?#HY)yWNEtzPhqAkl zC)xVjB;e+~P?qmN>8M(45&H~j58Z(1^-{>Q>|E8_K@P=AC=1?f!=)~~fj7Tp z70dg%)D>d7zsOZ-wAi{;O{1;FQpDVBXY?L4TC;t6yZz?>U^28Y6M5hPyQ?6b{!UHD&D9;@2!EC)7*EX|(y6I3ZemoyxN zP+5)$?9!f|Bs3L@p4C+~;W?Ss)tkU9%bQN>Md3?q^`%)h|*(+vMnmBE|+FJu5kp;?P#d*GJ#mF<%F(WxY@K7ITErW(g7y#{G|W$YhZV==SmF zir9n*!)5zPkh4&7w@k9>Oinz$M(Bm9UW-6P1G53O+X}fDZt+D zWlu=)!7OQ|Ch2__0w*~Wxffb+3Rrqd3xxo-O)5cndj2?|Pda!^I z$g{{Y8{CMBp!jgwGs87`HMb3TxmX(-fuLIqq#>sCz@-ZDFI)@@vDhB!l`BUIOZCqG zWjs^1(+@!Jy%OY#qzgWhe;~tp(^QzI`jxv0c zf=N?D>yG3-h;BsgLgckM_bZtk%p2^|w=bdXqHN5XhgL}^tL<!}&rY0*pp) z66&`Yay#o}#TT#&qzeXfKrhX>{uiJC%L_yV2GYV$n^sW;KAB$_{DjI(^%hqCnwZr6 zd?oog%4SMulN;ez{^rq?e=nKfZ&J)aHHK%#(+szHu_I znZ@NSCxQQ>kWD57#kjwAO8kum`m@fV%(hH$aJ8@kv%@1T7vu(XhwAM8!Zg> zDFk3({dcI_)BDAFtu{loBV>}ci}m#j59THd&dn(mYV5`GXa%x<#57)2W6-;{I@ZUvJ=Ze7 z+RzHxuO4R~66h0PP)>n(4+OL%3%0{V6ZcnKSZ#DsFA{0qO~)@ zqaMO$+6LP%tpJE0I>wH{D~VtlTopAT*ysIF6{Z0du(X;R0BJvZrz zDe9&$WnnV9$cB336o%F}*gu@`Aq?M=Z-#ymgVV&}oeUhD^G+(_3@AiHg}3w)jsb@6 zg%#l;`;PjkI2CJZ6n@!V;XacN|2V-M7!Qu6g*&aPlTJq&ymX$)d~b-I=VtF==jXW) z3xv~A&(tl2Vg>IC7T@k%p-0dlB?UXs-NUHjqTWbb#cx1yaq?gsz!26utTDj82wi6> zD{rCaj#hY;RA@R1hO~4jXgKJ7tyO(Aam!JPu($-iPm>eT4d0IQ!KGzGK58&Rb6zKH zX^Ehwn7(r>M7M}b?cG@<$_J9ZJqg8H3*BT%{UUll9IO!!i3_Ys`X8Tu1~H5}g;YS; zC{ND#JU^aK$QJs1EwOd!YgwGgDj>3mZlB+U&s3@5i=in%d>?TugO3D?6*3SA zO}8yA<3?R5^xyyrly$*2<-O8xtX<*#?ryX(@yAHucEdC?!jLJD5M*Jf@PepB3CPnb zppj=i9MeBMpRvd&hud260##s|6Z*6ZkQA>(37>M;uDl&MYE;y`H8ZOPPI{GSQN)ao z&?iI)(|SgZ4Pu?IFx;RWW@?N>GfL|JD260Aw^;L$SH+u*?ry7{nLX>kg`g`>(x%f{Xavd;^yKL?SEN#Spwq7?5HyW_uwv-GKuVtAhb8Lz0{Kp z>H9kdUW;Rgq|vP{48|f zk*l+&UA9&mJ0s>&TZ6cDIY7~lz|`ZAuV@M+3~M`c8B`n-PWCV#jO2z|K`;+9Ss96s zl2(r5frH5ztK%#U2(k~gE+@RHPj1A*lj$Gkuh-%U zMo>c2-}Ia@brm-PH;?w4J$T#<$Ey)9Lamvu6FY5mxu2Cagbk=OPF0Z>g`m3tC36ZS z#_l>jws^9-5cjhtRP?aQrUs4c=!jMst@v3d&!X>2cb3cg*}=<6Gl334I#Su#9+k;CANlJ+ zOzirI*=k{jbt8pFi?_UK@VxaxgJu#tOIbD8v3($+NN#S zi>Z_VajteSU2!;$F5X;a!h+{>=OJ{1^i6lwJ%(Vd2p>#o$=%i>Y-?2JiRHus;w&fn zQp95(+do}=w3T(lmS^w(4ulxHxNM}!K=}FJ24IN6^uf8UG>Pr3dSe&2*Jz&yOglK0 zkKQbp_lzcdcL6}5cX}NH!gn)k0fq?g0 zdY~>s-GsqlWYjK#uERpe-3a6(ug#em&Gq52Kj~2fZNxZx6iLkA&zNd`cpY>J)%UhZ zD!T#l^@kU>VU!VM?rG+iF=M<3k})!_-nTyiEi}Y_Dyz3Rfx?+fK_?#wrm!1{$y%V0 zH4arlR9<2wPEyUH0YRFQC~LUWwaTCR=WI;V)?O!K5|ceA`p*Sf&{pc9~QrphJsy zvGllU4VYtHh;K17B_}K=6*a`d8?L!tjc_1zCMiBm%hozYNe!$%&IY05^N8JdNq-lb zlc>p;<0j>-dD|AOlP7f09xXCh@83HMozMdbFUq_Oj*BCQLRCvTHRUm(SJc;BpD2^v zu`R{P$;u-uQQM`yE;=tA_1i96%1>mAXo>HumzHGvrqiUCIw3A5O0nv8RSM%Z%ESNA zT&Z2@uQP6N>8YeY9@wAQ5yOvjL^m4#r##$|#kUKO&VW0c^MQw_>W1FaASu~V7}57Z zcHfWiiH$}Bi)WbMyI5H@X=QT3e1oC~=5^@|Sa^!v=cKFuxf+(OHk34EDSuDB*m_%6J44^8g~4 zqSZf;!M#I1Fv{OCZQX??stp#o;;b+$(8+K<7d_bkvn?83&xQ<$sddNXEJ}4+{fS)p z5Rp+g-FGo3a;oh|*PqM=p7|nS)y9W7&{rn!=C^P3-=d-O2slawh^Vb`fS|0-wFSgv zvF~{t|a7FLB<--ZsO1qdICCXpHo# znNBd1S7P-{bJR!TO@fkgXR%L#_Lxaef1G$_KTQj#n?|r-4%rAIlP6L%oYF%lpW3_{ z&!%e6Ikf}vmNnm>Q`-^GG5k5sM)|*fk+7n|Y+zIOqq+QR<1JH5&Z#|Ixlze^W)nw$ z%i4n`Vu6f-1{8Fykd0xHe$NI-0Wiv1J_z@uuf~~30zsT%I=QNd<+hUrawT>M@|15H z0-phZz0!biJo^{Pg+nW|&>P$-QmpZiIG&hyE~ca8p5Kqi)WvDs zti1qjuHbT5?~+9*`&U?~4yrtHy2EfR1Xv%Bz}G@7g({M2_pA65Gx^c4T$YC07ut9& z`;rmSicGmY)eI7^{xcssscivh z1VY4VW0c~zAEV1!{1-YJl)J+Ov;Kfnu1dg&+QLiF7Cvsq_QYaX|I@64CR6cXBJ;^T z1v^dB=~XKry@h1mL*(ym@j-L{5*Q$JU|!%KQ!B_=t3k+Hv!-^IOKo@ z4Y;8djDt(4HnS8w69RXpQ8>MV96Ut#7DEvWW1}P<5Exm=3JBI)8p4<#ydQ2a;Euum zW+$=d*(I1KyR}#>Mhv;ZxjbjAcD7>H^wIm`J;sdM;RNd-pEa!G1v?_tK?Y{+tOn;oI5bBz-kcK;XSWIcn?oC$XLxX#pLz z(zq;!I8&6!kn#b+9W*@8>F`1D{{T2l-|Q7+Bs2*0Rv`MuKd0G=GGk8j^MO%`#z2B8 zgb%|gK~@z+6(#73runYJf?bvlY_@-!Vlw7FEA z=huKjZld>v$)HeP5;@-mRj!r-Cnwa{u!-C(ZMRdnhFE2h(KIs(^SIrLin^i4`R+pO z{BO@|006LBi%>O0e0<_8IB#4|Ov%W;HY2Ge(8>98v=Lq#m9C@1qzTg4S*0W0tnaj< ztfSQXB6kj`J|gKB=+-VX&+}$Z>QpC)2!PmmdpFH}vz2`5Rr=eKiPs9%qI&7d$sWK6 z*xEIRP=ST6l9#`+Ez00|2ZZ9#VtC23MBYd2L*3WQy*L zJSBe%1eb&5wTfpfVA$yPFof7@g)2$2FOc}DGCtFJh&5aM@`_wri(W8LsKAl+=DH>N z2IbX-#Lwfb`Fss6B#jfZb64=hm&!_1h)$ATT|9J#hR~P4UK|xSxe7H)p~XP7y!NFk z?rrUffP@bI2Bjc0Ez!^cRqj%MhNG@|aEkM=AI4wC(dmo_xr4Fvse@Tyr14h~d3~8H zI!S4jH|a}L0fmrwR3ylBS?KPOC_0KAF9~zIhcK6CetBaEdV$a%8C`R05+^y2bAj5r zY%PcmDIB=M4B&|>KB??%HS8*U5j`$dVL>Cfwy5ao53|JGT~9mE2+Xu+lznLseqbQm zfF<4Y_9ZHv5nAbC5}!TXTuTMX zAm6u_+IaC7eUo_ief5Ab5RsmKyex~gfs`<$FLFg(_C%Op{zZW5bVtz{&LhBy;4j_V zyo!BG=b7VZOj_Pv?i+|4?KKMBkYt{~^Mo!A0_YtN??hz!G8QH*1L;prQNpmK)*`gy zJ_q4p$XnFqHyjZ~EsP`mR=vlYP)?fE;FqIGS!LRP(@)Nm@;oANQt6|KC6_{&w#UW$ zq>PDPBU_N5aFighz1*bVqZvBt1+UKNtjkwWhg2R8v$n?QV*d2Y#S@IJ&Z+^CfdY+8EdSrc$XSIf=EprhjAGI` zj6M>;xj}+%eQ$C-{4iK;s45;VS2omk$NISd_~9pTL6eZA%auhtZZjyhVhDnLg_Gw_ zd7v%Qk-uj0u&6~G{Z>~JWm(vdzeLafXVBRK6+E|R}`nNssdwE=v z&G;?J^7gU{;_Q;2{6FPQuaf#Zd#$df!H|_ ztkW2rZ(j{zBxY87L3ULGGb0SrfW1k|?X3~^)m51@Tz$y~#g_t3O|8d7y8#Ii>`{`# z0{^cD(qG8fSV8V#XGu1zdBSN8Npigm0s-3ff(RwNLKSl;;Xp~UtR7Wdu&{Gj&Wp{q zLoB7%$6g5z;8Re-VFHMtKiREjVU*YKrZwe0&kJ7?xuECyE!OR4kRPbYdrm;{z!sv{ zlt$M2p=%A@?&}2D*{bqZ^H_m!%jZaw^=lF&++USNsy__gK89zo`Xk0k@e`u;iZDN}<2 z|LE180J9&&0ipm>&C1#=yjHRW0P+Z5J7=W&te?(Gd7lTBDPpMSgmcx=Ladnp)lMZT zMjw1pC{y<`%&=@q8C?z25ziynFo0OR$AtzYE1j_gl-%)e8X~}$UW-$VnT=*eXLbYc zzGnUqrZc0;>P}<0y(wPoF7#0_X7hVrliqeAnvHP@JehhHwTG|JUowEl32Y>|M5YNJ z7vdqE4&&OGk@2}8;~{X$cSkaaavz$16?Z$2^VmulND#Fp5DH`eqXu-uPltNn2;UBN zho^+7J-DO_+X>Lc(M{Z$v#3ukf%@~2N6Rn-B>RA}&$T_{guk(Wz~XHIR7w+9;{+u_ zP;Cb??O0(545%O_Td@KKn*>+kA;#}zASYXAxKAh=(hWQ6NkLSY+bKZHN}MQyQC?|a zL2deqt~y5UDK z>Ko{Pr=dv1EMwtLY66u4;L(>Mdt!qOEo;Epe8(|zJD(if2ld7mKAw0@umHH|RQ^#O zx(JtCTT?EF_n`kt>1b6{sphcEQu*zvFCYqd_I4p%qFgT@tF{H*cRv=?L@xKJTrZ`4 z)=O!_;>SKTJiQOW+L2V#(S){;#r%I#j>RK*a59rLf-+`~po(Hg>+NrSCh97K`h4d5 zeO{~y0*^RhyU&X;U_tp}=ut2$xxoLYe6grLFSaad4Qr>wlPO2k~Z?yZ+!~II;shvcAyo)1WZu6EOV>xDj)awuqHSh!CLkm zs4>04CeOjx1oU|pehw_Gx0~nAD$q`;z{0SHpPECQl)5QAneB6*@GOji!hAKC;O%2P z&_PfqZ|_1+TkpO--e=ze>!40e`Y@&OXz#P*+Cx+?&6Hpu7gQkDmdQ(JR6R%D3V*bBk6ecWSgJ1XtAm3Ed6hgKm1$HjCdizu zMExm0x|FMM^_Xy(q?S-H4;!CXFhYCpv&;kyVG;|u*kI+z=?GIK3)nK89e@T(XHOO@xHIJq|JF*#N6HUz&t{cm0iZmR1Li$Dj_6RT zYP)Uk>~RE6gR_T4UNU_(F=<%wh>diIiPD02iTG;S&}zq-W+t2-i@2auWWY4Dlw>=! zxnjqKpbF003eWW8ZbaAKr+I;J1!{-AOkgv`yM z*O%HYd@aufpsPV%n>iE~#bR`& z)b)gR0ZRjxO1~w=$8^8YhgYk|0(Jsv-gZRL!1x4CxF$oFsk(E)G)7`+V|txRF*Sxm zB4_s|5kxR5Sh+uCYQQ6H3bRAD&fnnx0AM%-;}wt$CCwZ14^RhqLw<_GhIs1vkpCvd z7HNSaM!t@V(<$3R1;R<^6DLx6515EX9z;6v^SI(Ivr8b+VgKQa5H3Tyh{5_4)Cfz8 zdUgW;B6L?xINkRvJP^-Pz^hS9NMuMD>s7g>PfC-j<{&}VArYrpf<1?g*I9tTMTOC^ zE&4f@#=t=&v5{^n^z#trD?rUby}bK_m+_pz8gGC}M!_bO(qYI^;0TI&DlAhsXp{wl z@Hvqcg_xzqLdk{ZC=MpbJ&BG>gm>r^L;QmCoK?{_`2ZU74p6 z*bVMlGj8WhNH8y#l(MpuY94N(>1Q%cqiO_Me5UN30(BDRDGsqILsc&+i%CVU;At3s zkuc5H=)6L0>n%Z7itHdH$r#K zXNpCjV=@I(bL*Y5uELeR%(c}!L*m;2 z_*xttv1Gmw-EGioBcZ!&mP(d6k-%%X7keb7J{(s=r#H&_sSXW=mNSumb(!#^%&9<) z4Z2!Or>Hr+rovY<0jkx{KyK(gso-r9@4sk_LY?TX?ot(1N_jv8p}jsh+v)*Cye%d{ z#Cz(0gXiy0Vwy`@O2sZQWayZ;Q$8inkSPZFsIu#kiIV@VPKS{n_gq_2iT+9)TMpGu zPUP^a4V@`#xKGWY;H1R)Ia!};3!Idb!%A^N*O-tf-=f}9CecG(RuJ+l0$>9vBvzY^{I86v$y#Rn&m_j*tU!BQ7&-0i|D%vBH0WeOe1s_AB(#HV&0ePyHldt0vI+uN#b`#X2fsy0$EQm3 z@n0Ph&Xa@%+IQ}jWkXt1%sE6j?h;y@Z@$V~T^fSEXV&#|U>P7<0kZvf1a6=vf-*s` z0P^Wl5Q{8F%&IC_#hb}`tCk>$16&753>&1kRFW0&Y=mk`5!KL186bka{Qp>c6S$hw z_J6#6Qz?Z+O`4EYD$$}m)x?C<8De76V=HA)l2n6fLG}reQaRSLCrcv=uqbnf$6@8!C$>%C}F&_}AB$Qu&74HGt#2|Ha7 zl?XxXwTz?=H{{mEjO_C2d?XnzEOg{$BD{R)C;}u&FA@0$0U3mnRRdro8aYZSzcFNg zVF1V{P)Z~1Pi*-lXV3o!?v~o1+JMDK!2W{J_}m683FP2|S+6aep0p4J$AL?QdOwC> z8c(HY{!;`% z*Suvr>Df~M_-ovvygBW#-uha827e7YouW zDDZ>v6#@{@I+kH$tkeHp#moo-?aJqh8>}elfDGbP${@m>#ULWy<4al^&tqvczcE5k zy%&OVhOUNp0&@MRPg0_ULz3B?C!Ju(>qd<5ohN@KQX0xsdXWNuBWOwy^j=w5%*yjL z>twYYAW8&CznjH^Iycqc(QoTdu`Pj7*ff7bGNKRq6af+h5g7Yyy}1Wv*z>F(*~VXP zbuu+|p0acFpe0m56$^D@3Plmow7sih_)e8SGBS~&1gZ>b8licf(7~WLge~&IMC&4R zM`93DO@ipbok)Ct`)sL;N_9Z+TnaTIk|0=!3Y!(t0}UIXmOMtr%IcSt+i27Q#@S>0H`k!x{8bxSvzPNKe_s0vRPuliqX?1`d>rRsI7+}79G5^65 zJLeLVDY`%b6TAoYWG;xD$~&0}$KMPAoFXt*%A8bhf9@pu!I^;^<~|JdNED<|HT0G_}q)U0jB>E2rU$vIawOd z^Y0MMijiPmO!FCExT>gX&jDDyY3JP186T zT_*~j12m2qy_jf70z4LFORAvbl2~515b|tbvNY2s3#AZ5IW&U_6;Uy-7S#}QPFgfE znw<(*ZFN8t1hzRlj%I5l!PVk7j1APLj2`lBX2*#w$)v^umPLE$q`5EIe|yp#7DtaOV(aubP}x;h8}9Z51Rf%u18tk(#7@`U0AC$6pOfw1?bLaX8O- ziF@_?=Sw0J)vc~CZ1Y*Pga^6hA08wMv52fm=L<=Iw&&bp4=)v@_P=|nOd6WHK4ulF zveW@?AgN(Z`1^Zc^H0g+nk6Zcy4arh4emmJk@i6kf7NF!uzOn>U`E1??B85)pa~;bNStuYhHfmMc|PST?!nMx0&^M zAf!onNwL=ILRy#`b7%-&kPp+~LsTA|5a`pMk{ZF_fL=K zM(F{6Q7}K^5wAV78@r}=U70_n1D%U{UB(|jigg*2xMJKHc1fo4CyL*-zgxaNp}Mgh z4x|koVa`^z^Aw<+%npg)`{_r5A}+m-&i79FXTIHl5K(P8u@0DQ9uJ-H-Xju+n<@&A zPMDLWNn0T=V)VU;oN_u+jsp~@#!uw0O49jQtVK#O!lq0;M`=I0Fca&xBX=68x1JTW zNBKf4JP8l~5lDu!E(nMADRkR!Eo#;>D?qaR79j?7{)i&!4QBH)i5Q%B?)zvU(K#f z6>rbG$-{~+x0!VXk{uQiDT?#bn+QHKFTLXorl#KIx1ZTKJ1epHth)ep-X+xiZu6BA zf`WP!`@{2WC!qz7Qcq^P)I!KLSs)*VSh?+tA^9gzz;3fD(52eW#;Ui;q!%Yr8v@{m$m36%nS+%8^xUWE&9?j)Hk z`Xf#6BEh9JYx*w6%7>BxP{XPI+o7u!`nFIGb?=BBs3l-~fKZl9TU7F$&w)?h2tNJ% z+oy~;pPo}iH1_~|*nx44yHURI1B*SYU!Hx0a0;~pR*^%DmD&ISnZEAcum>d|jC5cD z0zsazupyYh(D*^56)n)-Ivx5?DkzHg--fQxq)bv+iW4EP?g4pKwdZtS5vn?1{p1z2 zF#A^`W@?(j>`ws0&@0x4^DKAuWK_w5_BNQ`<`uQ%ETilTS(z*ai6@7H=*Y0UsJJHV z0g^?GAAMO01b08%6APK>dcf_^J6_z@nLVj^LySw_xrlI@pd^M_f3 zYU^cA%b{?V6{QANSh{OH$)#{bJSG6A+lv%IRC-eCUeMAEZfk`00*Gp)m_^eJC#t29 z4Mk{kp&Us7NW=-$Qvq|fBDs&+I-sp6*97)CvzOk%wos&RpGVpTU<_lLp^)Pt6g&9N zhGo&qYj49sSr93?GxsgQmBBt2E}mJ15j^u2yFURklym@yW;l&>dP+Eh67j+k-!s7! z=%UWr>Z7H$U5@BHWcOBF<9Go($tot{DFw9iipZ8gdX1|P0fj`|cdd0MCK-;vKczEKVZv5UQayl%52#g^hrk!(X zB zq&&k@8jRTF0H1+Ipk7Hr?^(pX36OvhL~PzJO`o7dj?|Q0phN}Ryra9Bk!PgP!LlYx zbJa!IGpkbw#3F2{Ov4Ha9$9 zHtu zab_e>KBRJ$(oW@YM}3oNnV|lCPjl9Mt+gf{A@P4huoI}17&53Hf|*2^a4cYdQmd4# zE3%Jc4yyF7yA-p77XtpIs3YL7_B2#;Y#qf@bCz}3rGx(j9>L7$J}Xx|292cgk7Jmr z7vX6jH3!r||H!(P2$Jk5kto%ay4K|GH1wjC2X!Ad7z`n9 zPe)-E2#d%aRqSs3%`H!qK7!?2_E$(2*`$ zyi?`K4ZJR-Y(+bqVdU{jLeVUiO3yRFKM6(`?yt>`3^NJ?=v1p;>S~}BL3%f3`Te#- z0~@3Sk`Ca66G0&pWE<@0VL}5}cp;6xhMAKF#-hT(9i#1-#wdgMGNJyXz*lLW4~~H_Nl38RmpH2c+Y?(#s$*^GMAy3B^j@DO3#gb^^?1n$q?!cD zysc9yBpGLdYxy|gYYaYQa^%Wiy|Bp|O%jbyRl|QI1}jo~jC!OYw-eByu@X%p&Lbe+ zZR@Z+buek>aJlj(heo8!P+GCS>6OqhsFzBOPlS!Xt0--&qr~I5FR8Xz?>t)Zv~umDisIFCpO* z7xp>nB6)PoZn4MOT$YZgUs^Q*6!to##K>_n!k=!19)a48($^^L>=In8aPPBby(7RY ze~^r63)WIjKg*%0mPr%5|FOV@3=oV(QKY8VL1sBrASaQUHqAK@h$MkeEyn?hx}{`s=|8!>1z~Nfoo|KV z8JJ8A;=h{ne&8y(5@Ti;kz76eS7VDQ8Ij}D#3;R&XHB3@7Z?| zdb<`@REndf{hQPRUZV1bY!0f>%pFQ-x&CijTB%t6_*3z#_raRR2~9K0@|P{d6ive| z*5zmz%@q%3E;~OxB)%RRSAKIbLbUucRsa+O!>R~yswR!&gQ57Zho)Q$jBna((~(JL zArjXQr3x#;F55Ag_vb`0g)Jo8w|SKTdNOi@cW(0nzV=`br7)D?jM-xKMwocMPp2or z@78GP1q-Ua4hu3ko=pBUpn79^W?Ed#K8Kgpgqk3%m{27)xSCn{dPGphU2

nBs7! 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

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 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�*yzTRq;hpn#*?Nu%-prNP{& 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

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

    M-t}Er0 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 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+ 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 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 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

    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 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 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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