diff --git a/CMakeLists.txt b/CMakeLists.txt index 5db859854..1395cbb2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -334,7 +334,9 @@ file(GLOB ae_nullptr_deref_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_C foreach(filename ${ae_nullptr_deref_files}) add_test( NAME ae_nullptr_deref_tests/${filename} - COMMAND ae -null-ptr-deref ${CMAKE_CURRENT_SOURCE_DIR}/${filename} + #TODO: add null-ptr-deref handler code: removed "-null-ptr-deref" option + #COMMAND ae -null-ptr-deref ${CMAKE_CURRENT_SOURCE_DIR}/${filename} + COMMAND ae ${CMAKE_CURRENT_SOURCE_DIR}/${filename} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) endforeach() diff --git a/diff_tests/difftest.py b/diff_tests/difftest.py index 90cb2cb62..498bad9cf 100755 --- a/diff_tests/difftest.py +++ b/diff_tests/difftest.py @@ -72,6 +72,8 @@ def comparer_andersen(stats1: Stats, stats2: Stats): ('basic_cpp_tests/vector-3.cpp.bc', 0.17), # 0.15063392744891338 ('complex_tests/test4.c.bc', 0.29), # 0.2820512820512821 ('basic_cpp_tests/global-obj-in-array.cpp.bc', 0.03), # 0.024187195645946763 + ('basic_cpp_tests/deque-3.cpp.bc', 0.01), # 0.0010106734674600023 + ('basic_cpp_tests/deque-4.cpp.bc', 0.01), # 0.0010218273679429763 ] path = sys.argv[-1] # TODO: Hack for name, threshold in exceptions: diff --git a/generate_bc.sh b/generate_bc.sh index 4de04f2c7..460194427 100755 --- a/generate_bc.sh +++ b/generate_bc.sh @@ -105,11 +105,11 @@ for td in $test_dirs; do then $compiler -Wno-everything -S -c -Xclang -DINCLUDEMAIN -Wno-implicit-function-declaration -fno-discard-value-names -g -emit-llvm -I"$root" "$c_f" -o "$bc_f" else - $compiler -Wno-everything -S -emit-llvm -fno-discard-value-names -I"$root" "$c_f" -o "$bc_f" + $compiler -fpack-struct -Wno-everything -S -emit-llvm -fno-discard-value-names -I"$root" "$c_f" -o "$bc_f" fi #llvm-as "$bc_f" -o "$bc_f" opt -S -p=mem2reg "$bc_f" -o "$bc_f" done done -fi \ No newline at end of file +fi diff --git a/src/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c b/src/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c index 72c27660d..5f3d30465 100644 --- a/src/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c +++ b/src/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c @@ -2,6 +2,7 @@ // Created by Ethan Lin on 21/10/2024. // #include +#include extern void SAFE_LOAD(void *p); extern void UNSAFE_LOAD(void *p); @@ -14,7 +15,7 @@ int main() { free(safePtr); - safePtr = (int *)malloc(sizeof(int)); + safePtr = (int *)malloc(sizeof(int)); *safePtr = 888; SAFE_LOAD(safePtr); svf_assert(*safePtr == 888); diff --git a/src/basic_c_tests/arraycopy1.c b/src/basic_c_tests/arraycopy1.c index dc7cdd900..3f737e09a 100644 --- a/src/basic_c_tests/arraycopy1.c +++ b/src/basic_c_tests/arraycopy1.c @@ -1,8 +1,8 @@ -extern void MAYALIAS(void*,void*); +extern void NOALIAS(void*,void*); int main() { int a, b; int* source[2] = {&a, &b}; int* x = source[1]; - MAYALIAS(&a,x); + NOALIAS(&a,x); return 0; } 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..c706deb4b 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_2d_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_array_2d_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..108156322 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_array_func_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..17f576559 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_3-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_array_func_3-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..0ee116b64 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_4-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_array_func_4-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..77bd57d84 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_6-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_array_func_6-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..58842f3a3 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_int_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_array_int_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..bbde138bc 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_struct_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_array_struct_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..c3b0b9fd0 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_varIdx_1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_array_varIdx_1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..af13e6ae7 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_arraycopy1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..16fd30d59 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_arraycopy2-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..b94203383 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_arraycopy3-0.c", directory: "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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..a39867294 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_assign_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..d9beb66f2 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_assign_1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..fdcece084 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_2-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_assign_2-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..23a18c524 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_3-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_assign_3-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..9ec3ca8f8 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_bi_add_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..cf3746f68 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_bi_add_1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..e60020098 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_2-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_bi_add_2-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..a421ed28a 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_div_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !11, splitDebugInlining: false, nameTableKind: None) +!10 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_bi_div_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..faddbe246 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_mix_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_bi_mix_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..a2a0f968c 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_mul_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_bi_mul_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..3c7b96d40 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_false_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_br_false_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..3b8fabcf2 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_br_nd_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..aff54afc4 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_br_nd_1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..5442d887b 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_2-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_br_nd_2-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..2593dc637 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_malloc-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_br_nd_malloc-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..b795e3904 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_true_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_br_true_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..4a04d6648 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..eccb49848 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..39569458a 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_2-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_2-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..4eb4c53fb 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_nullptr_def_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_nullptr_def_0-0.c", directory: "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..0359e10e9 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_assign_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_ptr_assign_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..406e813a5 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_call1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_ptr_call1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..eedf002cd 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_call2-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_ptr_call2-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..dd1c0c991 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..266fcc5e3 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..59c11723e 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_4-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_4-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..541d80904 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_6-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_6-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..1ffbacda4 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_s32_2-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_ptr_s32_2-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..6f07f0ba4 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_struct_array_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_struct_array_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..2c68c41c9 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_struct_assign_0-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_struct_assign_0-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..a476c8542 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..8d7aa7762 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch01-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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/test/once_more/SVF/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..1ae2cb42b 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch02-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..7a780fe85 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch03-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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/test/once_more/SVF/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..4ea9fce69 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch04-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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/test/once_more/SVF/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..1783f7d59 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch05-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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/test/once_more/SVF/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..7e78b597f 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch06-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..5c8500484 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch07-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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/test/once_more/SVF/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..aef902477 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch08-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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/test/once_more/SVF/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..2c89d1f4a 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch09-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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/test/once_more/SVF/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..ed70f00b1 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_switch10-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..0f687b62f 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_test_11-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BASIC_test_11-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..aec88677b 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/BUF_OVERFLOW_test_47-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !19, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/BUF_OVERFLOW_test_47-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..477c441d1 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CAST_fptosi.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..883008867 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CAST_fptoui.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..885c6147a 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CAST_fptrunc.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..af77dc2ab 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CAST_sext.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CAST_sext.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..152bda3a9 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CAST_sitofp.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..f6e61f6dc 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CAST_trunc.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..cd1cc3bf7 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CAST_uitofp.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..f56d6e1e2 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CAST_zext.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CAST_zext.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..086a16a11 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2019-19847-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2019-19847-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..4939b2fd9 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2020-13598-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2020-13598-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..384b98d06 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2020-29203-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !14, globals: !24, splitDebugInlining: false, nameTableKind: None) +!13 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2020-29203-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..0a49bf546 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-39602-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !29, globals: !31, splitDebugInlining: false, nameTableKind: None) +!28 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2021-39602-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..30fba0114 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-44975-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !14, splitDebugInlining: false, nameTableKind: None) +!13 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2021-44975-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..3e001ebe7 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-45341-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) +!18 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2021-45341-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d42979fa5 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-23850-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !17, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2022-23850-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..ae802efc2 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-26129-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2022-26129-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..5d0a4b5cc 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-27239-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !39, globals: !41, splitDebugInlining: false, nameTableKind: None) +!38 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2022-27239-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..91a35b51c 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-29023-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !15, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2022-29023-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..ff2e8133e 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34835-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2022-34835-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..136a3a2ef 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34913-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !23, retainedTypes: !40, globals: !45, splitDebugInlining: false, nameTableKind: None) +!22 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2022-34913-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..4f4816ccc 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34918-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !9, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CVE-2022-34918-0.c", directory: "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..4c6bfcf50 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/CWE127_har_alloc-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/CWE127_har_alloc-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..070ab8c78 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_10-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_10-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..fe3cecb35 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_11-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_11-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..5eb09367d 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_12-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_12-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..8acfa2608 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_13-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_13-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..c211bac33 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_14-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_14-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..5eb2a8498 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_15-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_15-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..2bc243413 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_16-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_16-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..0f29d50de 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_19-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_19-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..8531bc603 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_2-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !13, splitDebugInlining: false, nameTableKind: None) +!12 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_2-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..f6c199ddd 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_20-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_20-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..85d943012 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_36-1-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_36-1-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..a3d193f0b 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_49-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_49-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..93bff43a9 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_58-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) +!18 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_58-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..fce213b31 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_6-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_6-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..2319291d2 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_64-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_64-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..9c8c9d42f 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_8-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_8-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d4592a554 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_9-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/INTERVAL_test_9-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..7b566886f 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/LOOP_for01-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..cf745c541 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for_call-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/LOOP_for_call-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..970382a5e 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for_inc-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/LOOP_for_inc-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..adc675f92 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/LOOP_while01-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..e6a997246 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_char_alloc-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/cwe121_char_alloc-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..51f8f2542 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_int64_alloc-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/cwe121_int64_alloc-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..ae8b18052 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_int_alloc-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/cwe121_int_alloc-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..f0362f271 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_struct_alloc-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/cwe121_struct_alloc-0.c", directory: "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..56837129c 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/cwe126_char_alloc-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/cwe126_char_alloc-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..82b9b4dd9 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/cwe190_char_fscanf-0.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) +!18 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/cwe190_char_fscanf-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..9da0567b9 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_assert_tests/cwe190_int_max-0.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_assert_tests/cwe190_int_max-0.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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_nullptr_deref_tests/array_2d_big.c.bc b/test_cases_bc/ae_nullptr_deref_tests/array_2d_big.c.bc index 3665f9a0c..9d29b7c77 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/array_2d_big.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/array_2d_big.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_2d_big.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/array_2d_big.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_2d_big.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/array_2d_big.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -105,8 +105,8 @@ for.end24: ; preds = %for.cond9 declare void @UNSAFE_LOAD(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} @@ -116,7 +116,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/ae_nullptr_deref_tests/array_2d_small.c.bc b/test_cases_bc/ae_nullptr_deref_tests/array_2d_small.c.bc index 73f176053..4dcb307fd 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/array_2d_small.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/array_2d_small.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_2d_small.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/array_2d_small.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_2d_small.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/array_2d_small.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -40,8 +40,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -51,4 +51,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/array_2d_small_partial_null.c.bc b/test_cases_bc/ae_nullptr_deref_tests/array_2d_small_partial_null.c.bc index 51db55fe7..5cd98fad0 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/array_2d_small_partial_null.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/array_2d_small_partial_null.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_2d_small_partial_null.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/array_2d_small_partial_null.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_2d_small_partial_null.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/array_2d_small_partial_null.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -55,9 +55,9 @@ declare void @UNSAFE_LOAD(ptr noundef) #2 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -68,4 +68,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/array_all_nullptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/array_all_nullptr.c.bc index bee225c5a..f0746e17f 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/array_all_nullptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/array_all_nullptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_all_nullptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/array_all_nullptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_all_nullptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/array_all_nullptr.c" +target datalayout = "e-m:e-p270:32:32-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,19 +12,18 @@ entry: %i = alloca i32, align 4 store i32 0, ptr %retval, align 4 store ptr null, ptr %n, align 8 - %arrayinit.begin = getelementptr inbounds [5 x ptr], ptr %ptrs, i64 0, i64 0 %0 = load ptr, ptr %n, align 8 - store ptr %0, ptr %arrayinit.begin, align 8 - %arrayinit.element = getelementptr inbounds ptr, ptr %arrayinit.begin, i64 1 + store ptr %0, ptr %ptrs, align 8 + %arrayinit.element = getelementptr inbounds ptr, ptr %ptrs, i64 1 %1 = load ptr, ptr %n, align 8 store ptr %1, ptr %arrayinit.element, align 8 - %arrayinit.element1 = getelementptr inbounds ptr, ptr %arrayinit.element, i64 1 + %arrayinit.element1 = getelementptr inbounds ptr, ptr %ptrs, i64 2 %2 = load ptr, ptr %n, align 8 store ptr %2, ptr %arrayinit.element1, align 8 - %arrayinit.element2 = getelementptr inbounds ptr, ptr %arrayinit.element1, i64 1 + %arrayinit.element2 = getelementptr inbounds ptr, ptr %ptrs, i64 3 %3 = load ptr, ptr %n, align 8 store ptr %3, ptr %arrayinit.element2, align 8 - %arrayinit.element3 = getelementptr inbounds ptr, ptr %arrayinit.element2, i64 1 + %arrayinit.element3 = getelementptr inbounds ptr, ptr %ptrs, i64 4 %4 = load ptr, ptr %n, align 8 store ptr %4, ptr %arrayinit.element3, align 8 store i32 0, ptr %i, align 4 @@ -55,8 +54,8 @@ for.end: ; preds = %for.cond declare void @UNSAFE_LOAD(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} @@ -66,6 +65,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/array_of_struct.c.bc b/test_cases_bc/ae_nullptr_deref_tests/array_of_struct.c.bc index 5037e940e..b86ddfc5e 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/array_of_struct.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/array_of_struct.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_of_struct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/array_of_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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_of_struct.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/array_of_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.S = type { ptr } @@ -13,25 +13,25 @@ entry: store i32 0, ptr %retval, align 4 %call = call noalias ptr @malloc(i64 noundef 4) #3 %arrayidx = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 0 - %intPtr = getelementptr inbounds %struct.S, ptr %arrayidx, i32 0, i32 0 + %intPtr = getelementptr inbounds nuw %struct.S, ptr %arrayidx, i32 0, i32 0 store ptr %call, ptr %intPtr, align 16 %arrayidx1 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 0 - %intPtr2 = getelementptr inbounds %struct.S, ptr %arrayidx1, i32 0, i32 0 + %intPtr2 = getelementptr inbounds nuw %struct.S, ptr %arrayidx1, i32 0, i32 0 %0 = load ptr, ptr %intPtr2, align 16 store i32 1024, ptr %0, align 4 %arrayidx3 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 1 - %intPtr4 = getelementptr inbounds %struct.S, ptr %arrayidx3, i32 0, i32 0 + %intPtr4 = getelementptr inbounds nuw %struct.S, ptr %arrayidx3, i32 0, i32 0 store ptr null, ptr %intPtr4, align 8 %arrayidx5 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 0 - %intPtr6 = getelementptr inbounds %struct.S, ptr %arrayidx5, i32 0, i32 0 + %intPtr6 = getelementptr inbounds nuw %struct.S, ptr %arrayidx5, i32 0, i32 0 %1 = load ptr, ptr %intPtr6, align 16 call void @SAFE_LOAD(ptr noundef %1) %arrayidx7 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 1 - %intPtr8 = getelementptr inbounds %struct.S, ptr %arrayidx7, i32 0, i32 0 + %intPtr8 = getelementptr inbounds nuw %struct.S, ptr %arrayidx7, i32 0, i32 0 %2 = load ptr, ptr %intPtr8, align 8 call void @UNSAFE_LOAD(ptr noundef %2) %arrayidx9 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 2 - %intPtr10 = getelementptr inbounds %struct.S, ptr %arrayidx9, i32 0, i32 0 + %intPtr10 = getelementptr inbounds nuw %struct.S, ptr %arrayidx9, i32 0, i32 0 %3 = load ptr, ptr %intPtr10, align 16 call void @UNSAFE_LOAD(ptr noundef %3) ret i32 0 @@ -44,9 +44,9 @@ declare void @SAFE_LOAD(ptr noundef) #2 declare void @UNSAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -57,4 +57,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/array_of_struct_func_ptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/array_of_struct_func_ptr.c.bc index 8646f7a9c..e794b1fd4 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/array_of_struct_func_ptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/array_of_struct_func_ptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_of_struct_func_ptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/array_of_struct_func_ptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/array_of_struct_func_ptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/array_of_struct_func_ptr.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -23,21 +23,21 @@ entry: %arrStruct = alloca [3 x %struct.S], align 16 store i32 0, ptr %retval, align 4 %arrayidx = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 0 - %funcPtr = getelementptr inbounds %struct.S, ptr %arrayidx, i32 0, i32 0 + %funcPtr = getelementptr inbounds nuw %struct.S, ptr %arrayidx, i32 0, i32 0 store ptr @foo, ptr %funcPtr, align 16 %arrayidx1 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 1 - %funcPtr2 = getelementptr inbounds %struct.S, ptr %arrayidx1, i32 0, i32 0 + %funcPtr2 = getelementptr inbounds nuw %struct.S, ptr %arrayidx1, i32 0, i32 0 store ptr null, ptr %funcPtr2, align 8 %arrayidx3 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 0 - %funcPtr4 = getelementptr inbounds %struct.S, ptr %arrayidx3, i32 0, i32 0 + %funcPtr4 = getelementptr inbounds nuw %struct.S, ptr %arrayidx3, i32 0, i32 0 %0 = load ptr, ptr %funcPtr4, align 16 call void @SAFE_LOAD(ptr noundef %0) %arrayidx5 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 1 - %funcPtr6 = getelementptr inbounds %struct.S, ptr %arrayidx5, i32 0, i32 0 + %funcPtr6 = getelementptr inbounds nuw %struct.S, ptr %arrayidx5, i32 0, i32 0 %1 = load ptr, ptr %funcPtr6, align 8 call void @UNSAFE_LOAD(ptr noundef %1) %arrayidx7 = getelementptr inbounds [3 x %struct.S], ptr %arrStruct, i64 0, i64 2 - %funcPtr8 = getelementptr inbounds %struct.S, ptr %arrayidx7, i32 0, i32 0 + %funcPtr8 = getelementptr inbounds nuw %struct.S, ptr %arrayidx7, i32 0, i32 0 %2 = load ptr, ptr %funcPtr8, align 16 call void @UNSAFE_LOAD(ptr noundef %2) ret i32 0 @@ -47,8 +47,8 @@ declare void @SAFE_LOAD(ptr noundef) #1 declare void @UNSAFE_LOAD(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} @@ -58,4 +58,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arg.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arg.c.bc index 837d5b413..50e25e374 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arg.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arg.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arg.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_arg.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arg.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_arg.c" +target datalayout = "e-m:e-p270:32:32-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 %ptr) #0 { @@ -27,8 +27,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} @@ -38,4 +38,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arithmetic.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arithmetic.c.bc index 38b58c577..d4352fdd6 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arithmetic.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arithmetic.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arithmetic.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_arithmetic.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_arithmetic.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_arithmetic.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -21,8 +21,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -32,4 +32,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_branch.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_branch.c.bc index 09ad52f74..2398f8ae9 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_branch.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_branch.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_branch.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_branch.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_branch.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_branch.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -32,9 +32,9 @@ declare noalias ptr @malloc(i64 noundef) #1 declare void @UNSAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -45,4 +45,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_doubleptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_doubleptr.c.bc index e6c9c182f..d55367b12 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_doubleptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_doubleptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_doubleptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_doubleptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_doubleptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_doubleptr.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -17,8 +17,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -28,4 +28,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_func_return_val.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_func_return_val.c.bc index 8f6b74035..709f0f9f8 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_func_return_val.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_func_return_val.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_func_return_val.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_func_return_val.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_func_return_val.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_func_return_val.c" +target datalayout = "e-m:e-p270:32:32-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 @getNullPointer() #0 { @@ -24,8 +24,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -35,4 +35,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_null.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_null.c.bc index 14d66077e..a47741495 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_null.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_null.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_null.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_in_struct_null.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_null.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_in_struct_null.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -9,20 +9,20 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %myStruct = alloca %struct.S, align 8 + %myStruct = alloca %struct.S, align 1 store i32 0, ptr %retval, align 4 - %ptr = getelementptr inbounds %struct.S, ptr %myStruct, i32 0, i32 0 - store ptr null, ptr %ptr, align 8 - %ptr1 = getelementptr inbounds %struct.S, ptr %myStruct, i32 0, i32 0 - %0 = load ptr, ptr %ptr1, align 8 + %ptr = getelementptr inbounds nuw %struct.S, ptr %myStruct, i32 0, i32 0 + store ptr null, ptr %ptr, align 1 + %ptr1 = getelementptr inbounds nuw %struct.S, ptr %myStruct, i32 0, i32 0 + %0 = load ptr, ptr %ptr1, align 1 call void @UNSAFE_LOAD(ptr noundef %0) ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -32,4 +32,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_uninitialized.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_uninitialized.c.bc index 20d10d6a1..a965db79b 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_uninitialized.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_uninitialized.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_uninitialized.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_in_struct_uninitialized.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_in_struct_uninitialized.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_in_struct_uninitialized.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -9,18 +9,18 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %myStruct = alloca %struct.S, align 8 + %myStruct = alloca %struct.S, align 1 store i32 0, ptr %retval, align 4 - %ptr = getelementptr inbounds %struct.S, ptr %myStruct, i32 0, i32 0 - %0 = load ptr, ptr %ptr, align 8 + %ptr = getelementptr inbounds nuw %struct.S, ptr %myStruct, i32 0, i32 0 + %0 = load ptr, ptr %ptr, align 1 call void @UNSAFE_LOAD(ptr noundef %0) ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -30,4 +30,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_indirect_func_return_val.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_indirect_func_return_val.c.bc index e7a9ffb48..67790ac6c 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_indirect_func_return_val.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_indirect_func_return_val.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_indirect_func_return_val.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_indirect_func_return_val.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_indirect_func_return_val.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_indirect_func_return_val.c" +target datalayout = "e-m:e-p270:32:32-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 @getNullPointer() #0 { @@ -34,8 +34,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -45,4 +45,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_partial_nullptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_partial_nullptr.c.bc index 21c664e7e..6fffb0903 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_partial_nullptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_partial_nullptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_partial_nullptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_partial_nullptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_partial_nullptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_partial_nullptr.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -27,10 +27,10 @@ declare void @free(ptr noundef) #2 declare void @UNSAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } attributes #5 = { nounwind } @@ -42,4 +42,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_simple.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_simple.c.bc index 1c3958737..6bc067677 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_simple.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_simple.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_simple.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_simple.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_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" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { @@ -15,8 +15,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -26,4 +26,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_uninit_ptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_uninit_ptr.c.bc index 0ef399b87..f08cb5387 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/char_ptr_uninit_ptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/char_ptr_uninit_ptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_uninit_ptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_uninit_ptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/char_ptr_uninit_ptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/char_ptr_uninit_ptr.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -14,8 +14,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -25,4 +25,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_branch.c.bc b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_branch.c.bc index 2244c8355..83c7ae59d 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_branch.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_branch.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_branch.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_branch.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_branch.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_branch.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -44,10 +44,10 @@ declare void @UNSAFE_LOAD(ptr noundef) #3 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } attributes #5 = { nounwind } @@ -59,4 +59,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_reassign.c.bc b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_reassign.c.bc index bc5380bf1..55831d698 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_reassign.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_reassign.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_reassign.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_free_and_reassign.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_reassign.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_free_and_reassign.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -29,10 +29,10 @@ declare void @free(ptr noundef) #2 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } attributes #5 = { nounwind } @@ -44,4 +44,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_remalloc.c.bc b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_remalloc.c.bc index 955a12037..ba85380cd 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_remalloc.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_remalloc.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_remalloc.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_free_and_remalloc.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_free_and_remalloc.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_free_and_remalloc.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -34,10 +34,10 @@ declare void @UNSAFE_LOAD(ptr noundef) #3 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } attributes #5 = { nounwind } @@ -49,4 +49,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load.c.bc b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load.c.bc index 5e1455df2..e397a5f67 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_load.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_load.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -23,9 +23,9 @@ declare noalias ptr @malloc(i64 noundef) #1 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -36,4 +36,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c.bc b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c.bc new file mode 100644 index 000000000..7131b25b6 --- /dev/null +++ b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c.bc @@ -0,0 +1,58 @@ +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_safe_load_reassign.c" +target datalayout = "e-m:e-p270:32:32-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 { +entry: + %retval = alloca i32, align 4 + %safePtr = alloca ptr, align 8 + store i32 0, ptr %retval, align 4 + %call = call noalias ptr @malloc(i64 noundef 4) #4 + store ptr %call, ptr %safePtr, align 8 + %0 = load ptr, ptr %safePtr, align 8 + store i32 777, ptr %0, align 4 + %1 = load ptr, ptr %safePtr, align 8 + call void @SAFE_LOAD(ptr noundef %1) + %2 = load ptr, ptr %safePtr, align 8 + call void @free(ptr noundef %2) #5 + %call1 = call noalias ptr @malloc(i64 noundef 4) #4 + store ptr %call1, ptr %safePtr, align 8 + %3 = load ptr, ptr %safePtr, align 8 + store i32 888, ptr %3, align 4 + %4 = load ptr, ptr %safePtr, align 8 + call void @SAFE_LOAD(ptr noundef %4) + %5 = load ptr, ptr %safePtr, align 8 + %6 = load i32, ptr %5, align 4 + %cmp = icmp eq i32 %6, 888 + call void @svf_assert(i1 noundef zeroext %cmp) + ret i32 0 +} + +; Function Attrs: nounwind allocsize(0) +declare noalias ptr @malloc(i64 noundef) #1 + +declare void @SAFE_LOAD(ptr noundef) #2 + +; Function Attrs: nounwind +declare void @free(ptr noundef) #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"="+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 = { "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } + +!llvm.module.flags = !{!0, !1, !2, !3, !4} +!llvm.ident = !{!5} + +!0 = !{i32 1, !"wchar_size", i32 4} +!1 = !{i32 8, !"PIC Level", i32 2} +!2 = !{i32 7, !"PIE Level", i32 2} +!3 = !{i32 7, !"uwtable", i32 2} +!4 = !{i32 7, !"frame-pointer", i32 2} +!5 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_branch.c.bc b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_branch.c.bc index 5a9e59709..eddfaa85f 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_branch.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_branch.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_branch.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_unsafe_branch.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_branch.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_unsafe_branch.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -42,10 +42,10 @@ declare void @free(ptr noundef) #2 declare void @UNSAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } attributes #5 = { nounwind } @@ -57,4 +57,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_load_dangleptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_load_dangleptr.c.bc index 7c42d2bd7..73a4d0033 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_load_dangleptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_load_dangleptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_load_dangleptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_unsafe_load_dangleptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/dangleptr_unsafe_load_dangleptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/dangleptr_unsafe_load_dangleptr.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -30,10 +30,10 @@ declare void @free(ptr noundef) #2 declare void @UNSAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } attributes #5 = { nounwind } @@ -45,4 +45,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_1.c.bc b/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_1.c.bc index 768b02e02..8f8bfb566 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_1.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/func_nullptr_func_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/func_nullptr_func_1.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -17,8 +17,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -28,4 +28,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_2.c.bc b/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_2.c.bc index e482a4320..e60b27570 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_2.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/func_nullptr_func_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/func_nullptr_func_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/func_nullptr_func_2.c" +target datalayout = "e-m:e-p270:32:32-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 @invokeFunction(ptr noundef %func) #0 { @@ -27,8 +27,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} @@ -38,4 +38,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arg.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arg.c.bc index 764c8e404..5542d04ee 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arg.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arg.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arg.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_arg.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arg.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_arg.c" +target datalayout = "e-m:e-p270:32:32-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 %ptr) #0 { @@ -27,8 +27,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} @@ -38,4 +38,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arithmetic.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arithmetic.c.bc index 594ebcf19..aeeb824fe 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arithmetic.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arithmetic.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arithmetic.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_arithmetic.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_arithmetic.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_arithmetic.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -21,8 +21,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -32,4 +32,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_branch.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_branch.c.bc index 9323cffc3..424e9b05f 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_branch.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_branch.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_branch.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_branch.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_branch.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_branch.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -32,9 +32,9 @@ declare noalias ptr @malloc(i64 noundef) #1 declare void @UNSAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -45,4 +45,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_doubleptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_doubleptr.c.bc index 63aaeeef7..1d8100f9a 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_doubleptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_doubleptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_doubleptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_doubleptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_doubleptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_doubleptr.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -17,8 +17,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -28,4 +28,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_func_return_val.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_func_return_val.c.bc index a0544298a..deb10f6fc 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_func_return_val.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_func_return_val.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_func_return_val.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_func_return_val.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_func_return_val.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_func_return_val.c" +target datalayout = "e-m:e-p270:32:32-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 @getNullPointer() #0 { @@ -24,8 +24,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -35,4 +35,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_null.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_null.c.bc index c660d8110..a9bba1a37 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_null.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_null.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_null.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_in_struct_null.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_null.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_in_struct_null.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -9,23 +9,23 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %myStruct = alloca %struct.S, align 8 + %myStruct = alloca %struct.S, align 1 store i32 0, ptr %retval, align 4 - %ptr = getelementptr inbounds %struct.S, ptr %myStruct, i32 0, i32 0 - store ptr null, ptr %ptr, align 8 - %ptr1 = getelementptr inbounds %struct.S, ptr %myStruct, i32 0, i32 0 - %0 = load ptr, ptr %ptr1, align 8 + %ptr = getelementptr inbounds nuw %struct.S, ptr %myStruct, i32 0, i32 0 + store ptr null, ptr %ptr, align 1 + %ptr1 = getelementptr inbounds nuw %struct.S, ptr %myStruct, i32 0, i32 0 + %0 = load ptr, ptr %ptr1, align 1 call void @UNSAFE_LOAD(ptr noundef %0) - %ptr2 = getelementptr inbounds %struct.S, ptr %myStruct, i32 0, i32 0 - %1 = load ptr, ptr %ptr2, align 8 + %ptr2 = getelementptr inbounds nuw %struct.S, ptr %myStruct, i32 0, i32 0 + %1 = load ptr, ptr %ptr2, align 1 store i32 404, ptr %1, align 4 ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -35,4 +35,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_uninitialized.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_uninitialized.c.bc index b840f525c..47a0d4d06 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_uninitialized.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_uninitialized.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_uninitialized.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_in_struct_uninitialized.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_in_struct_uninitialized.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_in_struct_uninitialized.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -9,21 +9,21 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %myStruct = alloca %struct.S, align 8 + %myStruct = alloca %struct.S, align 1 store i32 0, ptr %retval, align 4 - %ptr = getelementptr inbounds %struct.S, ptr %myStruct, i32 0, i32 0 - %0 = load ptr, ptr %ptr, align 8 + %ptr = getelementptr inbounds nuw %struct.S, ptr %myStruct, i32 0, i32 0 + %0 = load ptr, ptr %ptr, align 1 call void @UNSAFE_LOAD(ptr noundef %0) - %ptr1 = getelementptr inbounds %struct.S, ptr %myStruct, i32 0, i32 0 - %1 = load ptr, ptr %ptr1, align 8 + %ptr1 = getelementptr inbounds nuw %struct.S, ptr %myStruct, i32 0, i32 0 + %1 = load ptr, ptr %ptr1, align 1 store i32 404, ptr %1, align 4 ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -33,4 +33,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_indirect_func_return_val.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_indirect_func_return_val.c.bc index f72918b69..21bd52ad9 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_indirect_func_return_val.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_indirect_func_return_val.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_indirect_func_return_val.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_indirect_func_return_val.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_indirect_func_return_val.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_indirect_func_return_val.c" +target datalayout = "e-m:e-p270:32:32-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 @getNullPointer() #0 { @@ -34,8 +34,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -45,4 +45,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_partial_nullptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_partial_nullptr.c.bc index f5c377ba0..8a44f2b1c 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_partial_nullptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_partial_nullptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_partial_nullptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_partial_nullptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_partial_nullptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_partial_nullptr.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -27,10 +27,10 @@ declare void @free(ptr noundef) #2 declare void @UNSAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } attributes #5 = { nounwind } @@ -42,4 +42,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_simple.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_simple.c.bc index e94e08d79..67eafa343 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_simple.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_simple.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_simple.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_simple.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_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" ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { @@ -15,8 +15,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -26,4 +26,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_uninit_ptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_uninit_ptr.c.bc index a0024312e..860a61e32 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/int_ptr_uninit_ptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/int_ptr_uninit_ptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_uninit_ptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_uninit_ptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/int_ptr_uninit_ptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/int_ptr_uninit_ptr.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -14,8 +14,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -25,4 +25,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/recursive_return_null.c.bc b/test_cases_bc/ae_nullptr_deref_tests/recursive_return_null.c.bc index 0c185d22d..01280442e 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/recursive_return_null.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/recursive_return_null.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/recursive_return_null.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/recursive_return_null.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/recursive_return_null.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/recursive_return_null.c" +target datalayout = "e-m:e-p270:32:32-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 @recursive_function(i32 noundef %depth) #0 { @@ -43,8 +43,8 @@ entry: declare void @UNSAFE_LOAD(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} @@ -54,4 +54,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_array_access.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_array_access.c.bc index 62e4778fb..2e37b2eec 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_array_access.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_array_access.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_array_access.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_array_access.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_array_access.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_array_access.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -42,9 +42,9 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 declare void @SAFE_LOAD(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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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"="+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" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -54,6 +54,6 @@ attributes #2 = { "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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_1.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_1.c.bc index 0d73d9061..e0244b068 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_1.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_1.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_array_of_struct_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_array_of_struct_1.c" +target datalayout = "e-m:e-p270:32:32-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, i8 } +%struct.Data = type <{ i32, i8 }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { @@ -12,7 +12,7 @@ entry: %arr = alloca [10 x %struct.Data], align 16 %i = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.memset.p0.i64(ptr align 16 %arr, i8 0, i64 80, i1 false) + call void @llvm.memset.p0.i64(ptr align 16 %arr, i8 0, i64 50, i1 false) store i32 0, ptr %i, align 4 br label %for.cond @@ -25,12 +25,12 @@ for.body: ; preds = %for.cond %1 = load i32, ptr %i, align 4 %idxprom = sext i32 %1 to i64 %arrayidx = getelementptr inbounds [10 x %struct.Data], ptr %arr, i64 0, i64 %idxprom - %number = getelementptr inbounds %struct.Data, ptr %arrayidx, i32 0, i32 0 + %number = getelementptr inbounds nuw %struct.Data, ptr %arrayidx, i32 0, i32 0 call void @SAFE_LOAD(ptr noundef %number) %2 = load i32, ptr %i, align 4 %idxprom1 = sext i32 %2 to i64 %arrayidx2 = getelementptr inbounds [10 x %struct.Data], ptr %arr, i64 0, i64 %idxprom1 - %character = getelementptr inbounds %struct.Data, ptr %arrayidx2, i32 0, i32 1 + %character = getelementptr inbounds nuw %struct.Data, ptr %arrayidx2, i32 0, i32 1 call void @SAFE_LOAD(ptr noundef %character) br label %for.inc @@ -50,9 +50,9 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 declare void @SAFE_LOAD(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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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"="+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" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -62,6 +62,6 @@ attributes #2 = { "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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_2.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_2.c.bc index 1cd2e9c7a..9d99a5b95 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_2.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_2.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_array_of_struct_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_array_of_struct_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_array_of_struct_2.c" +target datalayout = "e-m:e-p270:32:32-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 { ptr, i8 } +%struct.Data = type <{ ptr, i8 }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { @@ -12,7 +12,7 @@ entry: %arr = alloca [10 x %struct.Data], align 16 %i = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.memset.p0.i64(ptr align 16 %arr, i8 0, i64 160, i1 false) + call void @llvm.memset.p0.i64(ptr align 16 %arr, i8 0, i64 90, i1 false) store i32 0, ptr %i, align 4 br label %for.cond @@ -25,13 +25,13 @@ for.body: ; preds = %for.cond %1 = load i32, ptr %i, align 4 %idxprom = sext i32 %1 to i64 %arrayidx = getelementptr inbounds [10 x %struct.Data], ptr %arr, i64 0, i64 %idxprom - %number = getelementptr inbounds %struct.Data, ptr %arrayidx, i32 0, i32 0 - %2 = load ptr, ptr %number, align 16 + %number = getelementptr inbounds nuw %struct.Data, ptr %arrayidx, i32 0, i32 0 + %2 = load ptr, ptr %number, align 1 store i32 0, ptr %2, align 4 %3 = load i32, ptr %i, align 4 %idxprom1 = sext i32 %3 to i64 %arrayidx2 = getelementptr inbounds [10 x %struct.Data], ptr %arr, i64 0, i64 %idxprom1 - %number3 = getelementptr inbounds %struct.Data, ptr %arrayidx2, i32 0, i32 0 + %number3 = getelementptr inbounds nuw %struct.Data, ptr %arrayidx2, i32 0, i32 0 call void @SAFE_LOAD(ptr noundef %number3) br label %for.inc @@ -51,9 +51,9 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 declare void @SAFE_LOAD(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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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"="+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" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -63,6 +63,6 @@ attributes #2 = { "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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_double_ptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_double_ptr.c.bc index 8f139612c..591b39536 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_double_ptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_double_ptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_double_ptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_double_ptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_double_ptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_double_ptr.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -28,9 +28,9 @@ declare noalias ptr @malloc(i64 noundef) #1 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -41,4 +41,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_func_arg.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_func_arg.c.bc index aa40efab2..5ee447019 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_func_arg.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_func_arg.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_func_arg.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_func_arg.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_func_arg.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_func_arg.c" +target datalayout = "e-m:e-p270:32:32-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 %a) #0 { @@ -31,9 +31,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} @@ -44,4 +44,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_func_ptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_func_ptr.c.bc index 1cd8795f5..1041c9838 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_func_ptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_func_ptr.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_func_ptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_func_ptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_func_ptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_func_ptr.c" +target datalayout = "e-m:e-p270:32:32-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 [22 x i8] c"Test function called\0A\00", align 1 @@ -29,8 +29,8 @@ entry: declare i32 @SAFE_LOAD(...) #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} @@ -40,4 +40,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_func_return.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_func_return.c.bc index d58bc4019..aeb915439 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_func_return.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_func_return.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_func_return.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_func_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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_func_return.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_func_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" ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @foo() #0 { @@ -31,9 +31,9 @@ entry: declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -44,4 +44,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_loop_access.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_loop_access.c.bc index e8a64090c..8be976c5f 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_loop_access.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_loop_access.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_loop_access.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_loop_access.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_loop_access.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_loop_access.c" +target datalayout = "e-m:e-p270:32:32-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 [26 x i8] c"Memory allocation failed\0A\00", align 1 @@ -91,9 +91,9 @@ declare i32 @printf(ptr noundef, ...) #2 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -104,7 +104,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_pointer_access.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_pointer_access.c.bc index d2999fa11..04ba8af98 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_pointer_access.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_pointer_access.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_pointer_access.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_pointer_access.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_pointer_access.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_pointer_access.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -21,9 +21,9 @@ declare noalias ptr @malloc(i64 noundef) #1 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -34,4 +34,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_array_access.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_array_access.c.bc index accfce1df..d20ae02d0 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_array_access.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_array_access.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_array_access.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_ptr_array_access.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_array_access.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_ptr_array_access.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -15,19 +15,18 @@ entry: store ptr %call, ptr %n, align 8 %0 = load ptr, ptr %n, align 8 store i32 0, ptr %0, align 4 - %arrayinit.begin = getelementptr inbounds [5 x ptr], ptr %ptrs, i64 0, i64 0 %1 = load ptr, ptr %n, align 8 - store ptr %1, ptr %arrayinit.begin, align 8 - %arrayinit.element = getelementptr inbounds ptr, ptr %arrayinit.begin, i64 1 + store ptr %1, ptr %ptrs, align 8 + %arrayinit.element = getelementptr inbounds ptr, ptr %ptrs, i64 1 %2 = load ptr, ptr %n, align 8 store ptr %2, ptr %arrayinit.element, align 8 - %arrayinit.element1 = getelementptr inbounds ptr, ptr %arrayinit.element, i64 1 + %arrayinit.element1 = getelementptr inbounds ptr, ptr %ptrs, i64 2 %3 = load ptr, ptr %n, align 8 store ptr %3, ptr %arrayinit.element1, align 8 - %arrayinit.element2 = getelementptr inbounds ptr, ptr %arrayinit.element1, i64 1 + %arrayinit.element2 = getelementptr inbounds ptr, ptr %ptrs, i64 3 %4 = load ptr, ptr %n, align 8 store ptr %4, ptr %arrayinit.element2, align 8 - %arrayinit.element3 = getelementptr inbounds ptr, ptr %arrayinit.element2, i64 1 + %arrayinit.element3 = getelementptr inbounds ptr, ptr %ptrs, i64 4 %5 = load ptr, ptr %n, align 8 store ptr %5, ptr %arrayinit.element3, align 8 store i32 0, ptr %i, align 4 @@ -66,9 +65,9 @@ declare noalias ptr @malloc(i64 noundef) #1 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -79,6 +78,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_assign.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_assign.c.bc index 345e46191..014fb81d9 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_assign.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_assign.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_assign.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_ptr_assign.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_ptr_assign.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_ptr_assign.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -21,8 +21,8 @@ entry: declare void @SAFE_LOAD(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} @@ -32,4 +32,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_single_array_access.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_single_array_access.c.bc index f68295b3c..0fc366427 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_single_array_access.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_single_array_access.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_single_array_access.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_single_array_access.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_single_array_access.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_single_array_access.c" +target datalayout = "e-m:e-p270:32:32-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 { @@ -18,9 +18,9 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 declare void @SAFE_LOAD(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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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"="+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" } !llvm.module.flags = !{!0, !1, !2, !3, !4} !llvm.ident = !{!5} @@ -30,4 +30,4 @@ attributes #2 = { "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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/safe_struct_access.c.bc b/test_cases_bc/ae_nullptr_deref_tests/safe_struct_access.c.bc index 9029b7263..e7b2d4f43 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/safe_struct_access.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/safe_struct_access.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_struct_access.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/safe_struct_access.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/safe_struct_access.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/safe_struct_access.c" +target datalayout = "e-m:e-p270:32:32-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, i8 } +%struct.Data = type <{ i32, i8 }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { @@ -11,19 +11,19 @@ entry: %retval = alloca i32, align 4 %dataPtr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - %call = call noalias ptr @malloc(i64 noundef 8) #3 + %call = call noalias ptr @malloc(i64 noundef 5) #3 store ptr %call, ptr %dataPtr, align 8 %0 = load ptr, ptr %dataPtr, align 8 - %number = getelementptr inbounds %struct.Data, ptr %0, i32 0, i32 0 - store i32 0, ptr %number, align 4 + %number = getelementptr inbounds nuw %struct.Data, ptr %0, i32 0, i32 0 + store i32 0, ptr %number, align 1 %1 = load ptr, ptr %dataPtr, align 8 - %character = getelementptr inbounds %struct.Data, ptr %1, i32 0, i32 1 - store i8 97, ptr %character, align 4 + %character = getelementptr inbounds nuw %struct.Data, ptr %1, i32 0, i32 1 + store i8 97, ptr %character, align 1 %2 = load ptr, ptr %dataPtr, align 8 - %number1 = getelementptr inbounds %struct.Data, ptr %2, i32 0, i32 0 + %number1 = getelementptr inbounds nuw %struct.Data, ptr %2, i32 0, i32 0 call void @SAFE_LOAD(ptr noundef %number1) %3 = load ptr, ptr %dataPtr, align 8 - %character2 = getelementptr inbounds %struct.Data, ptr %3, i32 0, i32 1 + %character2 = getelementptr inbounds nuw %struct.Data, ptr %3, i32 0, i32 1 call void @SAFE_LOAD(ptr noundef %character2) ret i32 0 } @@ -33,9 +33,9 @@ declare noalias ptr @malloc(i64 noundef) #1 declare void @SAFE_LOAD(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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-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 = { "frame-pointer"="all" "no-trapping-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} @@ -46,4 +46,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_1.c.bc b/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_1.c.bc index e0a154bfa..cdc6f35e6 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_1.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_1.c.bc @@ -1,26 +1,26 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/struct_func_ptr_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/struct_func_ptr_1.c" +target datalayout = "e-m:e-p270:32:32-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.Operations = type { ptr } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { entry: - %ops = alloca %struct.Operations, align 8 - %op_function = getelementptr inbounds %struct.Operations, ptr %ops, i32 0, i32 0 - store ptr null, ptr %op_function, align 8 - %op_function1 = getelementptr inbounds %struct.Operations, ptr %ops, i32 0, i32 0 - %0 = load ptr, ptr %op_function1, align 8 + %ops = alloca %struct.Operations, align 1 + %op_function = getelementptr inbounds nuw %struct.Operations, ptr %ops, i32 0, i32 0 + store ptr null, ptr %op_function, align 1 + %op_function1 = getelementptr inbounds nuw %struct.Operations, ptr %ops, i32 0, i32 0 + %0 = load ptr, ptr %op_function1, align 1 call void @UNSAFE_LOAD(ptr noundef %0) ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -30,4 +30,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_2.c.bc b/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_2.c.bc index 24247908a..d7404db2b 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_2.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/struct_func_ptr_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/struct_func_ptr_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/struct_func_ptr_2.c" +target datalayout = "e-m:e-p270:32:32-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.Operations = type { ptr } @@ -11,15 +11,15 @@ entry: %ops = alloca ptr, align 8 store ptr null, ptr %ops, align 8 %0 = load ptr, ptr %ops, align 8 - %op_function = getelementptr inbounds %struct.Operations, ptr %0, i32 0, i32 0 + %op_function = getelementptr inbounds nuw %struct.Operations, ptr %0, i32 0, i32 0 call void @UNSAFE_LOAD(ptr noundef %op_function) ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -29,4 +29,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/struct_nullptr.c.bc b/test_cases_bc/ae_nullptr_deref_tests/struct_nullptr.c.bc index 2e2eb2ca2..ce6379ae8 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/struct_nullptr.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/struct_nullptr.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/struct_nullptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/struct_nullptr.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/struct_nullptr.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/struct_nullptr.c" +target datalayout = "e-m:e-p270:32:32-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, i8 } +%struct.Data = type <{ i32, i8 }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { @@ -13,18 +13,18 @@ entry: store i32 0, ptr %retval, align 4 store ptr null, ptr %dataPtr, align 8 %0 = load ptr, ptr %dataPtr, align 8 - %number = getelementptr inbounds %struct.Data, ptr %0, i32 0, i32 0 + %number = getelementptr inbounds nuw %struct.Data, ptr %0, i32 0, i32 0 call void @UNSAFE_LOAD(ptr noundef %number) %1 = load ptr, ptr %dataPtr, align 8 - %character = getelementptr inbounds %struct.Data, ptr %1, i32 0, i32 1 + %character = getelementptr inbounds nuw %struct.Data, ptr %1, i32 0, i32 1 call void @UNSAFE_LOAD(ptr noundef %character) ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -34,4 +34,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/struct_uninit_struct.c.bc b/test_cases_bc/ae_nullptr_deref_tests/struct_uninit_struct.c.bc index 796f8f7c7..7d1ee59d9 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/struct_uninit_struct.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/struct_uninit_struct.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/struct_uninit_struct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/struct_uninit_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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/struct_uninit_struct.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/struct_uninit_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.Data = type { i32, i8 } +%struct.Data = type <{ i32, i8 }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { @@ -12,18 +12,18 @@ entry: %dataPtr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 %0 = load ptr, ptr %dataPtr, align 8 - %number = getelementptr inbounds %struct.Data, ptr %0, i32 0, i32 0 + %number = getelementptr inbounds nuw %struct.Data, ptr %0, i32 0, i32 0 call void @UNSAFE_LOAD(ptr noundef %number) %1 = load ptr, ptr %dataPtr, align 8 - %character = getelementptr inbounds %struct.Data, ptr %1, i32 0, i32 1 + %character = getelementptr inbounds nuw %struct.Data, ptr %1, i32 0, i32 1 call void @UNSAFE_LOAD(ptr noundef %character) ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -33,4 +33,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/ae_nullptr_deref_tests/union_nullptr_member.c.bc b/test_cases_bc/ae_nullptr_deref_tests/union_nullptr_member.c.bc index bbdfe6d7f..a87bbf06f 100644 --- a/test_cases_bc/ae_nullptr_deref_tests/union_nullptr_member.c.bc +++ b/test_cases_bc/ae_nullptr_deref_tests/union_nullptr_member.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/union_nullptr_member.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_nullptr_deref_tests/union_nullptr_member.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/ae_nullptr_deref_tests/union_nullptr_member.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/ae_nullptr_deref_tests/union_nullptr_member.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" %union.Data = type { ptr } @@ -9,18 +9,18 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %data = alloca %union.Data, align 8 + %data = alloca %union.Data, align 1 store i32 0, ptr %retval, align 4 - store ptr null, ptr %data, align 8 - %0 = load ptr, ptr %data, align 8 + store ptr null, ptr %data, align 1 + %0 = load ptr, ptr %data, align 1 call void @UNSAFE_LOAD(ptr noundef %0) ret i32 0 } declare void @UNSAFE_LOAD(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} @@ -30,4 +30,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..f016be10c 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !36, globals: !39, splitDebugInlining: false, nameTableKind: None) +!35 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..13a631502 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !34, retainedTypes: !80, globals: !98, splitDebugInlining: false, nameTableKind: None) +!33 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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..708590b3d 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !34, globals: !37, splitDebugInlining: false, nameTableKind: None) +!33 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..59a7728fb 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..9f6f9e438 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..53f58ca51 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..533ddeee4 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..cfb31a519 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..7f031e12f 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..51b6f32fc 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..8ed4fd9a1 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..c1b1847c6 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..5f6e36c78 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..7218eac76 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..229c77939 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !32, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..9a2f024f6 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..9f49e2756 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d29b2a16a 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..e437bf754 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..314f0b016 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..43593531a 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !34, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c", directory: "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..c1490da46 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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/test/once_more/SVF/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..955616437 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !30, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..0c00f4419 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !35, splitDebugInlining: false, nameTableKind: None) +!29 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..6690ab1d2 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d64e51851 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..ad46242bb 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..b993ca8fa 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !32, splitDebugInlining: false, nameTableKind: None) +!29 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..3ea886cb6 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..0d7415f35 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..7e0b425b5 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..023eae838 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !30, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..7253811df 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..a7e72d847 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d4ba9c891 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..073024c63 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..6cadd3461 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !33, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..80099484c 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !33, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d2224f03c 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..5152af9b5 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !35, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c", directory: "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..b8a8161f7 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..5f9055ac4 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !36, splitDebugInlining: false, nameTableKind: None) +!29 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..8e15fa54c 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..3eebdaacf 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..0bcd0de1c 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..78413d2fc 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..3b212baba 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..7553139ea 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !36, globals: !39, splitDebugInlining: false, nameTableKind: None) +!35 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..7fa415578 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !39, globals: !41, splitDebugInlining: false, nameTableKind: None) +!38 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..e6633ff46 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !34, retainedTypes: !80, globals: !98, splitDebugInlining: false, nameTableKind: None) +!33 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!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..c522e0c1e 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..65faba00e 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..bb88c5f35 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..8bf5fbe15 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..70fee967d 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..aebb94e2f 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..c3250a994 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..0270e0e23 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..763b9c01f 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) +!23 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..e89c5a235 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_01.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !14, splitDebugInlining: false, nameTableKind: None) +!13 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_01.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..8fa732d55 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_02.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !33, splitDebugInlining: false, nameTableKind: None) +!32 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_02.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..23a3e130f 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_03.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) +!18 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_03.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..1cc4f7264 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/test/once_more/SVF/Test-Suite/test_cases_bc/ae_overflow_tests/ExtAPI_strcat_04.c.bc' +source_filename = "/root/test/once_more/SVF/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/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !16, splitDebugInlining: false, nameTableKind: None) +!15 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/ae_overflow_tests/ExtAPI_strcat_04.c", directory: "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..0ebc0c1ba 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/CI-funptr.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..9df37f482 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/CI-global.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..25bb998ba 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/CI-local.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..fb06cc1db 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/array-constIdx.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..b89b6d7b7 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/array-varIdx.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..9cb75dec5 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/array-varIdx2.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/basic_c_tests/arraycopy1.c.bc b/test_cases_bc/basic_c_tests/arraycopy1.c.bc index ef51da0ea..990589a9a 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/arraycopy1.c.bc' +source_filename = "/root/test/once_more/SVF/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,22 +12,21 @@ 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 store ptr %0, ptr %x, align 8 %1 = load ptr, ptr %x, align 8 - call void @MAYALIAS(ptr noundef %a, ptr noundef %1) + call void @NOALIAS(ptr noundef %a, ptr noundef %1) ret i32 0 } -declare void @MAYALIAS(ptr noundef, ptr noundef) #1 +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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..46cd45cfb 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/branch-call.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..5a40b451b 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/branch-intra.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/basic_c_tests/byteoffset1.c.bc b/test_cases_bc/basic_c_tests/byteoffset1.c.bc index a9fda41e5..5dc382b86 100644 --- a/test_cases_bc/basic_c_tests/byteoffset1.c.bc +++ b/test_cases_bc/basic_c_tests/byteoffset1.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/byteoffset1.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.StructA = type <{ i32, ptr }> @.str = private unnamed_addr constant [6 x i8] c"%c%c\0A\00", align 1 @@ -35,13 +35,13 @@ 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 - %1 = load ptr, ptr %f, align 8 + %f = getelementptr inbounds nuw %struct.StructA, ptr %0, i32 0, i32 1 + %1 = load ptr, ptr %f, align 1 %call = call i32 %1() store i32 %call, ptr %ret, align 4 %2 = load ptr, ptr %structA.addr, align 8 - %f1 = getelementptr inbounds %struct.StructA, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %f1, align 8 + %f1 = getelementptr inbounds nuw %struct.StructA, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %f1, align 1 call void @MAYALIAS(ptr noundef %3, ptr noundef @FuncA) %4 = load i32, ptr %ret, align 4 ret i32 %4 @@ -54,11 +54,11 @@ entry: %structA = alloca ptr, align 8 %ret = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %call = call ptr @malloc(i64 noundef 16) #3 + %call = call ptr @malloc(i64 noundef 12) #3 store ptr %call, ptr %structA, align 8 %0 = load ptr, ptr %structA, align 8 - %f = getelementptr inbounds %struct.StructA, ptr %0, i32 0, i32 1 - store ptr @FuncA, ptr %f, align 8 + %f = getelementptr inbounds nuw %struct.StructA, ptr %0, i32 0, i32 1 + store ptr @FuncA, ptr %f, align 1 %1 = load ptr, ptr %structA, align 8 %call1 = call i32 @CallF(ptr noundef %1) store i32 %call1, ptr %ret, align 4 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..9014678ae 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..af73c915c 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc' +source_filename = "/root/test/once_more/SVF/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,17 +163,17 @@ 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 - store ptr %call1, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.MyStruct, ptr %1, i32 0, i32 1 + store ptr %call1, ptr %next, align 1 %call2 = call noalias ptr @malloc(i64 noundef 4) #3 %2 = load ptr, ptr %p, align 8 - %next3 = getelementptr inbounds %struct.MyStruct, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %next3, align 8 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %3, i32 0, i32 0 - store ptr %call2, ptr %f1, align 8 + %next3 = getelementptr inbounds nuw %struct.MyStruct, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %next3, align 1 + %f1 = getelementptr inbounds nuw %struct.MyStruct, ptr %3, i32 0, i32 0 + store ptr %call2, ptr %f1, align 1 %4 = load ptr, ptr %p, align 8 - %next4 = getelementptr inbounds %struct.MyStruct, ptr %4, i32 0, i32 1 - %5 = load ptr, ptr %next4, align 8 + %next4 = getelementptr inbounds nuw %struct.MyStruct, ptr %4, i32 0, i32 1 + %5 = load ptr, ptr %next4, align 1 store ptr %5, ptr %p, align 8 br label %while.cond, !llvm.loop !6 @@ -181,22 +181,22 @@ while.end: ; preds = %while.cond %6 = load ptr, ptr %p, align 8 store ptr %6, ptr %q, align 8 %7 = load ptr, ptr %q, align 8 - %next5 = getelementptr inbounds %struct.MyStruct, ptr %7, i32 0, i32 1 - %8 = load ptr, ptr %next5, align 8 + %next5 = getelementptr inbounds nuw %struct.MyStruct, ptr %7, i32 0, i32 1 + %8 = load ptr, ptr %next5, align 1 %9 = load ptr, ptr %p, align 8 - %next6 = getelementptr inbounds %struct.MyStruct, ptr %9, i32 0, i32 1 - %10 = load ptr, ptr %next6, align 8 - %next7 = getelementptr inbounds %struct.MyStruct, ptr %10, i32 0, i32 1 - %11 = load ptr, ptr %next7, align 8 + %next6 = getelementptr inbounds nuw %struct.MyStruct, ptr %9, i32 0, i32 1 + %10 = load ptr, ptr %next6, align 1 + %next7 = getelementptr inbounds nuw %struct.MyStruct, ptr %10, i32 0, i32 1 + %11 = load ptr, ptr %next7, align 1 call void @MAYALIAS(ptr noundef %8, ptr noundef %11) %12 = load ptr, ptr %q, align 8 - %f18 = getelementptr inbounds %struct.MyStruct, ptr %12, i32 0, i32 0 - %13 = load ptr, ptr %f18, align 8 + %f18 = getelementptr inbounds nuw %struct.MyStruct, ptr %12, i32 0, i32 0 + %13 = load ptr, ptr %f18, align 1 %14 = load ptr, ptr %p, align 8 - %next9 = getelementptr inbounds %struct.MyStruct, ptr %14, i32 0, i32 1 - %15 = load ptr, ptr %next9, align 8 - %f110 = getelementptr inbounds %struct.MyStruct, ptr %15, i32 0, i32 0 - %16 = load ptr, ptr %f110, align 8 + %next9 = getelementptr inbounds nuw %struct.MyStruct, ptr %14, i32 0, i32 1 + %15 = load ptr, ptr %next9, align 1 + %f110 = getelementptr inbounds nuw %struct.MyStruct, ptr %15, i32 0, i32 0 + %16 = load ptr, ptr %f110, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..76a294f2f 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc' +source_filename = "/root/test/once_more/SVF/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,12 +18,12 @@ 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 - %1 = load ptr, ptr %stop_arcs, align 8 + %stop_arcs = getelementptr inbounds nuw %struct.network, ptr %0, i32 0, i32 1 + %1 = load ptr, ptr %stop_arcs, align 1 store ptr %1, ptr %stop, align 8 %2 = load ptr, ptr %net, align 8 - %arcs = getelementptr inbounds %struct.network, ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %arcs, align 8 + %arcs = getelementptr inbounds nuw %struct.network, ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %arcs, align 1 store ptr %3, ptr %arc, align 8 br label %for.cond @@ -35,8 +35,8 @@ 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 - %7 = load i64, ptr %ident, align 8 + %ident = getelementptr inbounds nuw %struct.arc, ptr %6, i32 0, i32 2 + %7 = load i64, ptr %ident, align 1 %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..b67eb5832 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/field-ptr-arith-constIdx.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -150,13 +150,13 @@ entry: %p = alloca ptr, align 8 %a = alloca i32, align 4 %b = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 + %s1 = alloca %struct.s, align 1 store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %a, ptr %f1, align 8 - %f2 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 1 - store ptr %b, ptr %f2, align 8 - %f11 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 + %f1 = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 0 + store ptr %a, ptr %f1, align 1 + %f2 = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 1 + store ptr %b, ptr %f2, align 1 + %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a42b52780 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/field-ptr-arith-varIdx.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -150,13 +150,13 @@ entry: %p = alloca ptr, align 8 %a = alloca i32, align 4 %b = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 + %s1 = alloca %struct.s, align 1 store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %a, ptr %f1, align 8 - %f2 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 1 - store ptr %b, ptr %f2, align 8 - %f11 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 + %f1 = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 0 + store ptr %a, ptr %f1, align 1 + %f2 = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 1 + store ptr %b, ptr %f2, align 1 + %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..4bad869dd 100644 --- a/test_cases_bc/basic_c_tests/funptr-global.c.bc +++ b/test_cases_bc/basic_c_tests/funptr-global.c.bc @@ -1,14 +1,14 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/funptr-global.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@defaultHashAllocOps = dso_local global %struct.PLHashAllocOps { ptr @DefaultAllocTable }, align 8 +@defaultHashAllocOps = dso_local global %struct.PLHashAllocOps { ptr @DefaultAllocTable }, align 1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { @@ -171,14 +171,14 @@ 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 - %1 = load ptr, ptr %allocTable, align 8 + %allocTable = getelementptr inbounds nuw %struct.PLHashAllocOps, ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %allocTable, align 1 %2 = load ptr, ptr %allocPriv.addr, align 8 %call = call ptr %1(ptr noundef %2, i32 noundef 4) store ptr %call, ptr %tmp___0, align 8 %3 = load ptr, ptr %allocOps, align 8 - %allocTable1 = getelementptr inbounds %struct.PLHashAllocOps, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %allocTable1, align 8 + %allocTable1 = getelementptr inbounds nuw %struct.PLHashAllocOps, ptr %3, i32 0, i32 0 + %4 = load ptr, ptr %allocTable1, align 1 %5 = load ptr, ptr %allocPriv.addr, align 8 %call2 = call ptr %4(ptr noundef %5, i32 noundef 4) store ptr %call2, ptr %tmp___1, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..2d8dbeb8b 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-call.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..12101b6c4 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-struct-simple.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%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 %struct.interesting <{ i32 0, ptr @f1, ptr @f2 }>, align 1 +@n1 = dso_local global %struct.nested_ptr <{ i32 0, ptr @i1 }>, align 1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @f1(ptr noundef %a) #0 { @@ -35,14 +35,14 @@ entry: ; Function Attrs: noinline nounwind optnone uwtable 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 - 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 - %1 = load ptr, ptr %f1, align 8 + %interesting_stub = alloca %struct.interesting, align 1 + %0 = load ptr, ptr getelementptr inbounds nuw (%struct.nested_ptr, ptr @n1, i32 0, i32 1), align 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %interesting_stub, ptr align 1 %0, i64 20, i1 false) + %f1 = getelementptr inbounds nuw %struct.interesting, ptr %interesting_stub, i32 0, i32 1 + %1 = load ptr, ptr %f1, align 1 call void %1(ptr noundef @g) - %f2 = getelementptr inbounds %struct.interesting, ptr %interesting_stub, i32 0, i32 2 - %2 = load ptr, ptr %f2, align 8 + %f2 = getelementptr inbounds nuw %struct.interesting, ptr %interesting_stub, i32 0, i32 2 + %2 = load ptr, ptr %f2, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..ca6e893fa 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-struct.c.bc' +source_filename = "/root/test/once_more/SVF/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 }> +%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 %struct.interesting <{ i32 0, ptr @f1, ptr @f2 }>, align 1 +@n1 = dso_local global %struct.nested_ptr <{ i32 0, ptr @i1 }>, align 1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @f1(ptr noundef %a) #0 { @@ -35,17 +35,17 @@ entry: ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @test_ptr() #0 { 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 - %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 - %1 = load ptr, ptr %f1, align 8 + %tmp = alloca %struct.nested_ptr, align 1 + %interesting_stub = alloca %struct.interesting, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %tmp, ptr align 1 @n1, i64 12, i1 false) + %ptr = getelementptr inbounds nuw %struct.nested_ptr, ptr %tmp, i32 0, i32 1 + %0 = load ptr, ptr %ptr, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %interesting_stub, ptr align 1 %0, i64 20, i1 false) + %f1 = getelementptr inbounds nuw %struct.interesting, ptr %interesting_stub, i32 0, i32 1 + %1 = load ptr, ptr %f1, align 1 call void %1(ptr noundef @g) - %f2 = getelementptr inbounds %struct.interesting, ptr %interesting_stub, i32 0, i32 2 - %2 = load ptr, ptr %f2, align 8 + %f2 = getelementptr inbounds nuw %struct.interesting, ptr %interesting_stub, i32 0, i32 2 + %2 = load ptr, ptr %f2, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a28ab6e06 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/funptr-simple.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..627cac665 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/funptr-struct.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -10,7 +10,7 @@ target triple = "x86_64-unknown-linux-gnu" @.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 @.str.3 = private unnamed_addr constant [15 x i8] c"Executing bar\0A\00", align 1 @g = dso_local global i32 0, align 4 -@__const.my_vsnprintf.pts = private unnamed_addr constant %struct.MYFILE { ptr @my_sn_write }, align 8 +@__const.my_vsnprintf.pts = private unnamed_addr constant %struct.MYFILE { ptr @my_sn_write }, align 1 @.str.4 = private unnamed_addr constant [23 x i8] c"Executing my_sn_write\0A\00", align 1 ; Function Attrs: noinline nounwind optnone uwtable @@ -155,8 +155,8 @@ 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 - %1 = load ptr, ptr %pt, align 8 + %pt = getelementptr inbounds nuw %struct.MYFILE, ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %pt, align 1 %2 = load ptr, ptr %p, align 8 %call1 = call i32 %1(ptr noundef %2) ret void @@ -165,8 +165,8 @@ entry: ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @my_vsnprintf() #0 { entry: - %pts = alloca %struct.MYFILE, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %pts, ptr align 8 @__const.my_vsnprintf.pts, i64 8, i1 false) + %pts = alloca %struct.MYFILE, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %pts, ptr align 1 @__const.my_vsnprintf.pts, i64 8, i1 false) call void @my_vfprintf(ptr noundef %pts) ret i32 0 } @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..c0555a0b7 100644 --- a/test_cases_bc/basic_c_tests/global-array.c.bc +++ b/test_cases_bc/basic_c_tests/global-array.c.bc @@ -1,14 +1,14 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-array.c.bc' +source_filename = "/root/test/once_more/SVF/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] } @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@context = dso_local global %struct.MyStruct zeroinitializer, align 8 +@context = dso_local global %struct.MyStruct zeroinitializer, align 1 @padding = internal global <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 ; Function Attrs: noinline nounwind optnone uwtable @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..be7b3d05c 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-call-noparam.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..4fc355664 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-call-struct.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu" @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 @x = dso_local global i32 0, align 4 -@global = dso_local global %struct.MyStruct { [20 x i8] c"abcdefg\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 20, ptr @x }, align 8 +@global = dso_local global %struct.MyStruct { [20 x i8] c"abcdefg\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 20, ptr @x }, align 1 @y = dso_local global i32 0, align 4 ; Function Attrs: noinline nounwind optnone uwtable @@ -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 1 %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a1c3a8e0d 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,16 +1,16 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-call-twoparms.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.MyStruct = type <{ i32, ptr }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 @x = dso_local global i32 0, align 4 @y = dso_local global i32 0, align 4 -@global = dso_local global %struct.MyStruct zeroinitializer, align 8 +@global = dso_local global %struct.MyStruct zeroinitializer, align 1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { @@ -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 1 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 1 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 1 %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..d26873346 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-const-struct.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -9,8 +9,8 @@ target triple = "x86_64-unknown-linux-gnu" @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@pts = dso_local constant %struct.MYFILE { ptr @my_sn_write }, align 8 -@ms = dso_local constant %struct.MyStruct { ptr @pts }, align 8 +@pts = dso_local constant %struct.MYFILE { ptr @my_sn_write }, align 1 +@ms = dso_local constant %struct.MyStruct { ptr @pts }, align 1 @.str.3 = private unnamed_addr constant [15 x i8] c"Executing bar\0A\00", align 1 @g = dso_local global i32 0, align 4 @.str.4 = private unnamed_addr constant [23 x i8] c"Executing my_sn_write\0A\00", align 1 @@ -168,10 +168,10 @@ 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 - %1 = load ptr, ptr %myfile, align 8 - %pt = getelementptr inbounds %struct.MYFILE, ptr %1, i32 0, i32 0 - %2 = load ptr, ptr %pt, align 8 + %myfile = getelementptr inbounds nuw %struct.MyStruct, ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %myfile, align 1 + %pt = getelementptr inbounds nuw %struct.MYFILE, ptr %1, i32 0, i32 0 + %2 = load ptr, ptr %pt, align 1 %3 = load ptr, ptr %p, align 8 %call1 = call i32 %2(ptr noundef %3) ret void @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..65e9c0e90 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-funptr.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -11,7 +11,7 @@ target triple = "x86_64-unknown-linux-gnu" @y = dso_local global i32 0, align 4 @p = dso_local global ptr null, align 8 @x = dso_local global i32 0, align 4 -@context = dso_local global %struct.MyStruct { ptr @foo, ptr @x }, align 8 +@context = dso_local global %struct.MyStruct { ptr @foo, ptr @x }, align 1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { @@ -159,7 +159,7 @@ entry: %retval = alloca i32, align 4 %q = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - %0 = load ptr, ptr @context, align 8 + %0 = load ptr, ptr @context, align 1 call void (...) %0() %1 = load ptr, ptr @p, align 8 store ptr %1, ptr %q, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..2d9fdc6ae 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-initializer.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..5bbf69a2b 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-nested-calls.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..baf2678b2 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/global-simple.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a7b8f0819 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/heap-indirect.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..9977f9d04 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc' +source_filename = "/root/test/once_more/SVF/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,8 +156,8 @@ 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 - store ptr null, ptr %data, align 8 + %data = getelementptr inbounds nuw %struct.Node, ptr %0, i32 0, i32 0 + store ptr null, ptr %data, align 1 br label %while.cond while.cond: ; preds = %while.body, %entry @@ -168,21 +168,21 @@ 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 - store ptr %call, ptr %data1, align 8 + %data1 = getelementptr inbounds nuw %struct.Node, ptr %2, i32 0, i32 0 + store ptr %call, ptr %data1, align 1 %3 = load ptr, ptr %p.addr, align 8 - %data2 = getelementptr inbounds %struct.Node, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %data2, align 8 + %data2 = getelementptr inbounds nuw %struct.Node, ptr %3, i32 0, i32 0 + %4 = load ptr, ptr %data2, align 1 store ptr %4, ptr %p_data1, align 8 %call3 = call noalias ptr @malloc(i64 noundef 16) #3 store ptr %call3, ptr %p_next, align 8 %5 = load ptr, ptr %p_next, align 8 %6 = load ptr, ptr %p.addr, align 8 - %next = getelementptr inbounds %struct.Node, ptr %6, i32 0, i32 1 - store ptr %5, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.Node, ptr %6, i32 0, i32 1 + store ptr %5, ptr %next, align 1 %7 = load ptr, ptr %p.addr, align 8 - %data4 = getelementptr inbounds %struct.Node, ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %data4, align 8 + %data4 = getelementptr inbounds nuw %struct.Node, ptr %7, i32 0, i32 0 + %8 = load ptr, ptr %data4, align 1 store ptr %8, ptr %p_data2, align 8 %9 = load i32, ptr %num.addr, align 4 %dec = add nsw i32 %9, -1 @@ -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 - %3 = load ptr, ptr %next, align 8 - %data = getelementptr inbounds %struct.Node, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %data, align 8 + %next = getelementptr inbounds nuw %struct.Node, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %next, align 1 + %data = getelementptr inbounds nuw %struct.Node, ptr %3, i32 0, i32 0 + %4 = load ptr, ptr %data, align 1 %5 = load ptr, ptr %head, align 8 - %next1 = getelementptr inbounds %struct.Node, ptr %5, i32 0, i32 1 - %6 = load ptr, ptr %next1, align 8 - %next2 = getelementptr inbounds %struct.Node, ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %next2, align 8 + %next1 = getelementptr inbounds nuw %struct.Node, ptr %5, i32 0, i32 1 + %6 = load ptr, ptr %next1, align 1 + %next2 = getelementptr inbounds nuw %struct.Node, ptr %6, i32 0, i32 1 + %7 = load ptr, ptr %next2, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..28b821df8 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/heap-wrapper.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/basic_c_tests/int2pointer.c.bc b/test_cases_bc/basic_c_tests/int2pointer.c.bc index 47ab9e4cb..0bba59e38 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/int2pointer.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -146,12 +146,12 @@ declare i32 @getchar() #1 define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %ms = alloca %struct.MyStruct, align 4 + %ms = alloca %struct.MyStruct, align 1 %p = alloca ptr, align 8 %q = alloca ptr, align 8 %addr = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %ms, i32 0, i32 0 + %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/basic_c_tests/mesa.c.bc b/test_cases_bc/basic_c_tests/mesa.c.bc index ac2e517e4..55dcd5396 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/mesa.c.bc' +source_filename = "/root/test/once_more/SVF/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,8 +74,8 @@ entry: %table.addr = alloca ptr, align 8 store ptr %table, ptr %table.addr, align 8 %0 = load ptr, ptr %table.addr, align 8 - %Accum = getelementptr inbounds %struct.gl_api_table, ptr %0, i32 0, i32 0 - store ptr @gl_Accum, ptr %Accum, align 8 + %Accum = getelementptr inbounds nuw %struct.gl_api_table, ptr %0, i32 0, i32 0 + store ptr @gl_Accum, ptr %Accum, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..c665d1cc0 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..b709dfbf0 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..acc72c744 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..8cd5ec37c 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/spec-equake.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..3944477ea 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/spec-gap.c.bc' +source_filename = "/root/test/once_more/SVF/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,16 +160,16 @@ 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 - %1 = load ptr, ptr %ptr, align 8 + %ptr = getelementptr inbounds nuw %struct.TypHeader, ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %ptr, align 1 %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 - %4 = load ptr, ptr %ptr2, align 8 + %ptr2 = getelementptr inbounds nuw %struct.TypHeader, ptr %3, i32 0, i32 0 + %4 = load ptr, ptr %ptr2, align 1 %add.ptr3 = getelementptr inbounds ptr, ptr %4, i64 -1 store ptr %add.ptr3, ptr %s, align 8 %5 = load ptr, ptr @FirstBag, align 8 @@ -213,23 +213,23 @@ for.body: ; preds = %for.cond %16 = load i64, ptr %needed, align 8 %div8 = udiv i64 %16, 8 %17 = load ptr, ptr %h, align 8 - %ptr9 = getelementptr inbounds %struct.TypHeader, ptr %17, i32 0, i32 0 - %18 = load ptr, ptr %ptr9, align 8 - %add.ptr10 = getelementptr inbounds ptr, ptr %18, i64 %div8 - store ptr %add.ptr10, ptr %ptr9, align 8 + %ptr9 = getelementptr inbounds nuw %struct.TypHeader, ptr %17, i32 0, i32 0 + %18 = load ptr, ptr %ptr9, align 1 + %add.ptr10 = getelementptr inbounds nuw ptr, ptr %18, i64 %div8 + store ptr %add.ptr10, ptr %ptr9, align 1 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 - store ptr %20, ptr %ptr12, align 8 + %ptr12 = getelementptr inbounds nuw %struct.TypHeader, ptr %21, i32 0, i32 0 + store ptr %20, ptr %ptr12, align 1 %22 = load ptr, ptr %h, align 8 store ptr %22, ptr @FreeHandle, align 8 %23 = load ptr, ptr @FreeHandle, align 8 @@ -246,8 +246,8 @@ 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 - %2 = load ptr, ptr %ptr, align 8 + %ptr = getelementptr inbounds nuw %struct.TypHeader, ptr %1, i32 0, i32 0 + %2 = load ptr, ptr %ptr, align 1 store ptr %0, ptr %2, align 8 ret void } @@ -260,8 +260,8 @@ 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 - %2 = load ptr, ptr %ptr, align 8 + %ptr = getelementptr inbounds nuw %struct.TypHeader, ptr %1, i32 0, i32 0 + %2 = load ptr, ptr %ptr, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..27cdea9f2 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/spec-mesa.c.bc' +source_filename = "/root/test/once_more/SVF/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,14 +190,14 @@ entry: %table.addr = alloca ptr, align 8 store ptr %table, ptr %table.addr, align 8 %0 = load ptr, ptr %table.addr, align 8 - %Begin = getelementptr inbounds %struct.api_table, ptr %0, i32 0, i32 0 - store ptr @begin, ptr %Begin, align 8 + %Begin = getelementptr inbounds nuw %struct.api_table, ptr %0, i32 0, i32 0 + store ptr @begin, ptr %Begin, align 1 %1 = load ptr, ptr %table.addr, align 8 - %End = getelementptr inbounds %struct.api_table, ptr %1, i32 0, i32 1 - store ptr @end, ptr %End, align 8 + %End = getelementptr inbounds nuw %struct.api_table, ptr %1, i32 0, i32 1 + store ptr @end, ptr %End, align 1 %2 = load ptr, ptr %table.addr, align 8 - %Render = getelementptr inbounds %struct.api_table, ptr %2, i32 0, i32 2 - store ptr @render, ptr %Render, align 8 + %Render = getelementptr inbounds nuw %struct.api_table, ptr %2, i32 0, i32 2 + store ptr @render, ptr %Render, align 1 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,10 +221,10 @@ 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 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %API, ptr align 8 %Exec, i64 24, i1 false) + %Exec = getelementptr inbounds nuw %struct.context, ptr %2, i32 0, i32 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %API, ptr align 1 %Exec, i64 24, i1 false) %3 = load ptr, ptr %ctx, align 8 ret ptr %3 } @@ -251,8 +251,8 @@ entry: %ctx.addr = alloca ptr, align 8 store ptr %ctx, ptr %ctx.addr, align 8 %0 = load ptr, ptr %ctx.addr, align 8 - %ctx1 = getelementptr inbounds %struct.mesa_context, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %ctx1, align 8 + %ctx1 = getelementptr inbounds nuw %struct.mesa_context, ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %ctx1, align 1 call void @change_context(ptr noundef %1) ret void } @@ -267,9 +267,9 @@ 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 - %1 = load ptr, ptr %Begin, align 8 + %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 1 %2 = load ptr, ptr %p.addr, align 8 %3 = load ptr, ptr %q.addr, align 8 call void %1(ptr noundef %2, ptr noundef %3) @@ -284,24 +284,24 @@ 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 - %7 = load ptr, ptr %Render, align 8 + %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 1 %tobool2 = icmp ne ptr %7, null br i1 %tobool2, label %if.then3, label %if.else if.then3: ; preds = %if.end %8 = load ptr, ptr @CC, align 8 - %API4 = getelementptr inbounds %struct.context, ptr %8, i32 0, i32 0 - %Render5 = getelementptr inbounds %struct.api_table, ptr %API4, i32 0, i32 2 - %9 = load ptr, ptr %Render5, align 8 + %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 1 %10 = load ptr, ptr %q.addr, align 8 %11 = load ptr, ptr %r.addr, align 8 call void %9(ptr noundef %10, ptr noundef %11) %12 = load ptr, ptr @CC, align 8 - %API6 = getelementptr inbounds %struct.context, ptr %12, i32 0, i32 0 - %End = getelementptr inbounds %struct.api_table, ptr %API6, i32 0, i32 1 - %13 = load ptr, ptr %End, align 8 + %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 1 %14 = load ptr, ptr %p.addr, align 8 %15 = load ptr, ptr %r.addr, align 8 call void %13(ptr noundef %14, ptr noundef %15) @@ -309,9 +309,9 @@ 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 - %17 = load ptr, ptr %End8, align 8 + %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 1 %18 = load ptr, ptr %q.addr, align 8 %19 = load ptr, ptr %p.addr, align 8 call void %17(ptr noundef %18, ptr noundef %19) @@ -347,25 +347,25 @@ 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 - store ptr %call1, ptr %ctx, align 8 + %ctx = getelementptr inbounds nuw %struct.mesa_context, ptr %0, i32 0, i32 0 + store ptr %call1, ptr %ctx, align 1 %1 = load ptr, ptr %mesa, align 8 call void @make_current(ptr noundef %1) call void @draw(ptr noundef %x, ptr noundef %y, ptr noundef %z) %2 = load ptr, ptr %mesa, align 8 - %ctx2 = getelementptr inbounds %struct.mesa_context, ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %ctx2, align 8 + %ctx2 = getelementptr inbounds nuw %struct.mesa_context, ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %ctx2, align 1 call void @delete_context(ptr noundef %3) %4 = load ptr, ptr %mesa, align 8 call void @free(ptr noundef %4) #6 ret i32 0 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..207a44f9f 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/spec-parser.c.bc' +source_filename = "/root/test/once_more/SVF/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,13 +175,13 @@ 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 - %2 = load ptr, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.clause_struct, ptr %1, i32 0, i32 0 + %2 = load ptr, ptr %next, align 1 store ptr %2, ptr %c2, align 8 %3 = load ptr, ptr %c, align 8 %4 = load ptr, ptr %c1, align 8 - %next1 = getelementptr inbounds %struct.clause_struct, ptr %4, i32 0, i32 0 - store ptr %3, ptr %next1, align 8 + %next1 = getelementptr inbounds nuw %struct.clause_struct, ptr %4, i32 0, i32 0 + store ptr %3, ptr %next1, align 1 %5 = load ptr, ptr %c1, align 8 store ptr %5, ptr %c, align 8 %6 = load ptr, ptr %c2, 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,17 +224,17 @@ 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 - store ptr %5, ptr %string6, align 8 + %string6 = getelementptr inbounds nuw %struct.X_node_struct, ptr %6, i32 0, i32 0 + store ptr %5, ptr %string6, align 1 br label %for.inc for.inc: ; preds = %for.body %7 = load ptr, ptr %e, align 8 - %next = getelementptr inbounds %struct.X_node_struct, ptr %7, i32 0, i32 1 - %8 = load ptr, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.X_node_struct, ptr %7, i32 0, i32 1 + %8 = load ptr, ptr %next, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..99ebd4029 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/spec-vortex.c.bc' +source_filename = "/root/test/once_more/SVF/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,15 +189,15 @@ 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 - store ptr %0, ptr %ChunkAddr, align 8 + %ChunkAddr = getelementptr inbounds nuw %struct.Ory, ptr %1, i32 0, i32 0 + store ptr %0, ptr %ChunkAddr, align 1 %cmp = icmp ne ptr %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %2 = load ptr, ptr @Theory, align 8 - %ChunkAddr1 = getelementptr inbounds %struct.Ory, ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %ChunkAddr1, align 8 + %ChunkAddr1 = getelementptr inbounds nuw %struct.Ory, ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %ChunkAddr1, align 1 store ptr %3, ptr %ChunkAddrPtr, align 8 %4 = load ptr, ptr %ChunkAddrPtr, align 8 %5 = 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 - %1 = load ptr, ptr %ChunkAddr, align 8 + %ChunkAddr = getelementptr inbounds nuw %struct.Ory, ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %ChunkAddr, align 1 %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,8 +257,8 @@ 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 - store ptr @Rectangle_draw, ptr %draw, align 8 + %draw = getelementptr inbounds nuw %struct.Rectangle, ptr %0, i32 0, i32 0 + store ptr @Rectangle_draw, ptr %draw, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a26c7e2bd 100644 --- a/test_cases_bc/basic_c_tests/struct-array.c.bc +++ b/test_cases_bc/basic_c_tests/struct-array.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-array.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.ArrayStruct = type <{ i32, i8, [100 x i32], i32 }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -147,40 +147,40 @@ define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 - %s = alloca %struct.ArrayStruct, align 4 + %s = alloca %struct.ArrayStruct, align 1 %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..8be1a25cc 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,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.s = type <{ ptr, i32 }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -146,22 +146,22 @@ declare i32 @getchar() #1 define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 - %s2 = alloca %struct.s, align 8 + %s1 = alloca %struct.s, align 1 + %s2 = alloca %struct.s, align 1 %p1 = alloca ptr, align 8 %x = alloca i32, align 4 %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %a = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %x, ptr %a, align 8 + %a = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 0 + store ptr %x, ptr %a, align 1 %0 = load i32, ptr %y, align 4 - %b = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 1 - store i32 %0, ptr %b, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %s2, ptr align 8 %s1, i64 16, i1 false) - %a1 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 0 - %1 = load ptr, ptr %a1, align 8 - %a2 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - %2 = load ptr, ptr %a2, align 8 + %b = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 1 + store i32 %0, ptr %b, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %s2, ptr align 1 %s1, i64 12, i1 false) + %a1 = getelementptr inbounds nuw %struct.s, ptr %s2, i32 0, i32 0 + %1 = load ptr, ptr %a1, align 1 + %a2 = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 0 + %2 = load ptr, ptr %a2, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..643bee64f 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -146,29 +146,29 @@ declare i32 @getchar() #1 define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 - %s2 = alloca %struct.s, align 8 + %s1 = alloca %struct.s, align 1 + %s2 = alloca %struct.s, align 1 %p1 = alloca ptr, align 8 %x = alloca i32, align 4 %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %a = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %x, ptr %a, align 8 - %b = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 1 - store ptr %y, ptr %b, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %s2, ptr align 8 %s1, i64 16, i1 false) + %a = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 0 + store ptr %x, ptr %a, align 1 + %b = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 1 + store ptr %y, ptr %b, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %s2, ptr align 1 %s1, i64 16, i1 false) store ptr %s1, ptr %p1, align 8 %0 = load ptr, ptr %p1, align 8 - %a1 = getelementptr inbounds %struct.s, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %a1, align 8 - %a2 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 0 - %2 = load ptr, ptr %a2, align 8 + %a1 = getelementptr inbounds nuw %struct.s, ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %a1, align 1 + %a2 = getelementptr inbounds nuw %struct.s, ptr %s2, i32 0, i32 0 + %2 = load ptr, ptr %a2, align 1 call void @MUSTALIAS(ptr noundef %1, ptr noundef %2) %3 = load ptr, ptr %p1, align 8 - %b3 = getelementptr inbounds %struct.s, ptr %3, i32 0, i32 1 - %4 = load ptr, ptr %b3, align 8 - %b4 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 1 - %5 = load ptr, ptr %b4, align 8 + %b3 = getelementptr inbounds nuw %struct.s, ptr %3, i32 0, i32 1 + %4 = load ptr, ptr %b3, align 1 + %b4 = getelementptr inbounds nuw %struct.s, ptr %s2, i32 0, i32 1 + %5 = load ptr, ptr %b4, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..88b2d2caa 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,11 +1,11 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc' +source_filename = "/root/test/once_more/SVF/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] } -%struct.InnerArrayStruct = type { [10 x ptr], [20 x ptr], i8 } +%struct.InnerArrayStruct = type <{ [10 x ptr], [20 x ptr], i8 }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -149,38 +149,38 @@ define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 - %s1 = alloca %struct.ArrayStruct, align 8 - %s2 = alloca %struct.ArrayStruct, align 8 + %s1 = alloca %struct.ArrayStruct, align 1 + %s2 = alloca %struct.ArrayStruct, align 1 %x = alloca i32, align 4 %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %out4 = getelementptr inbounds %struct.ArrayStruct, ptr %s1, i32 0, i32 2 - store ptr %x, ptr %out4, align 8 + %out4 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s1, i32 0, i32 2 + store ptr %x, ptr %out4, align 1 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 - %1 = load ptr, ptr %out42, align 8 + store ptr %y, ptr %arrayidx1, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %s2, ptr align 1 %s1, i64 1224, i1 false) + %out42 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s2, i32 0, i32 2 + %1 = load ptr, ptr %out42, align 1 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 + %2 = load ptr, ptr %arrayidx7, align 1 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 + %3 = load ptr, ptr %arrayidx12, align 1 call void @MAYALIAS(ptr noundef %3, ptr noundef %y) ret i32 0 } @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..7c283ba81 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-field-multi-dereference.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -148,30 +148,30 @@ entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 %q = alloca ptr, align 8 - %ms1 = alloca %struct.MyStruct, align 8 - %ms2 = alloca %struct.MyStruct, align 8 + %ms1 = alloca %struct.MyStruct, align 1 + %ms2 = alloca %struct.MyStruct, align 1 %x = alloca i32, align 4 store i32 0, ptr %retval, align 4 store ptr %ms1, ptr %p, align 8 store ptr %ms1, ptr %q, align 8 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %ms1, i32 0, i32 1 - store ptr %ms2, ptr %f2, align 8 + %f2 = getelementptr inbounds nuw %struct.MyStruct, ptr %ms1, i32 0, i32 1 + store ptr %ms2, ptr %f2, align 1 %0 = load ptr, ptr %p, align 8 - %f21 = getelementptr inbounds %struct.MyStruct, ptr %0, i32 0, i32 1 - %1 = load ptr, ptr %f21, align 8 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %1, i32 0, i32 0 - store ptr %x, ptr %f1, align 8 + %f21 = getelementptr inbounds nuw %struct.MyStruct, ptr %0, i32 0, i32 1 + %1 = load ptr, ptr %f21, align 1 + %f1 = getelementptr inbounds nuw %struct.MyStruct, ptr %1, i32 0, i32 0 + store ptr %x, ptr %f1, align 1 %2 = load ptr, ptr %q, align 8 - %f22 = getelementptr inbounds %struct.MyStruct, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %f22, align 8 - %f13 = getelementptr inbounds %struct.MyStruct, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %f13, align 8 + %f22 = getelementptr inbounds nuw %struct.MyStruct, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %f22, align 1 + %f13 = getelementptr inbounds nuw %struct.MyStruct, ptr %3, i32 0, i32 0 + %4 = load ptr, ptr %f13, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a00c887c1 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %s = alloca %struct.S, align 4 + %s = alloca %struct.S, align 1 %a = alloca ptr, align 8 %b = alloca ptr, align 8 %c = alloca ptr, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..6891bca5e 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %s = alloca %struct.S, align 4 + %s = alloca %struct.S, align 1 %a = alloca ptr, align 8 %b = alloca ptr, align 8 %c = alloca ptr, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..b54c9f23a 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,11 +1,11 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-incompab-typecast-nested.c.bc' +source_filename = "/root/test/once_more/SVF/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 } -%struct.DstStruct = type { [10 x ptr], [20 x i8], [5 x %struct.InnerStruct] } +%struct.InnerStruct = type <{ i8, ptr }> +%struct.DstStruct = type <{ [10 x ptr], [20 x i8], [5 x %struct.InnerStruct] }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -150,55 +150,55 @@ entry: %retval = alloca i32, align 4 %pdst = alloca ptr, align 8 %psrc = alloca ptr, align 8 - %s = alloca %struct.SrcStruct, align 8 + %s = alloca %struct.SrcStruct, align 1 %x = alloca i32, align 4 %y = alloca i32, align 4 %z = alloca i32, align 4 store i32 0, ptr %retval, align 4 store ptr %s, ptr %psrc, align 8 %0 = load ptr, ptr %psrc, align 8 - %f1 = getelementptr inbounds %struct.SrcStruct, ptr %0, i32 0, i32 0 + %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 + store ptr %x, ptr %arrayidx, align 1 %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 - store ptr %y, ptr %in2, align 8 + %in2 = getelementptr inbounds nuw %struct.InnerStruct, ptr %arrayidx1, i32 0, i32 1 + store ptr %y, ptr %in2, align 1 %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 + %4 = load ptr, ptr %arrayidx3, align 1 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 - %6 = load ptr, ptr %in26, align 8 + %in26 = getelementptr inbounds nuw %struct.InnerStruct, ptr %arrayidx5, i32 0, i32 1 + %6 = load ptr, ptr %in26, align 1 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 + %8 = load ptr, ptr %arrayidx8, align 1 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 - store ptr %z, ptr %in211, align 8 + %in211 = getelementptr inbounds nuw %struct.InnerStruct, ptr %arrayidx10, i32 0, i32 1 + store ptr %z, ptr %in211, align 1 %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 - %11 = load ptr, ptr %in214, align 8 + %in214 = getelementptr inbounds nuw %struct.InnerStruct, ptr %arrayidx13, i32 0, i32 1 + %11 = load ptr, ptr %in214, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..f9b0e5874 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,10 +1,10 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.SrcStruct = type <{ ptr, ptr, i8 }> +%struct.DstStruct = type <{ i8, ptr, ptr }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -149,40 +149,40 @@ entry: %retval = alloca i32, align 4 %pdst = alloca ptr, align 8 %psrc = alloca ptr, align 8 - %s = alloca %struct.SrcStruct, align 8 + %s = alloca %struct.SrcStruct, align 1 %x = alloca i32, align 4 %y = alloca i32, align 4 %z = alloca i32, align 4 store i32 0, ptr %retval, align 4 store ptr %s, ptr %psrc, align 8 %0 = load ptr, ptr %psrc, align 8 - %f1 = getelementptr inbounds %struct.SrcStruct, ptr %0, i32 0, i32 0 - store ptr %x, ptr %f1, align 8 + %f1 = getelementptr inbounds nuw %struct.SrcStruct, ptr %0, i32 0, i32 0 + store ptr %x, ptr %f1, align 1 %1 = load ptr, ptr %psrc, align 8 - %f2 = getelementptr inbounds %struct.SrcStruct, ptr %1, i32 0, i32 1 - store ptr %y, ptr %f2, align 8 + %f2 = getelementptr inbounds nuw %struct.SrcStruct, ptr %1, i32 0, i32 1 + store ptr %y, ptr %f2, align 1 %2 = load ptr, ptr %psrc, align 8 store ptr %2, ptr %pdst, align 8 %3 = load ptr, ptr %pdst, align 8 - %f21 = getelementptr inbounds %struct.DstStruct, ptr %3, i32 0, i32 1 - %4 = load ptr, ptr %f21, align 8 + %f21 = getelementptr inbounds nuw %struct.DstStruct, ptr %3, i32 0, i32 1 + %4 = load ptr, ptr %f21, align 1 call void @EXPECTEDFAIL_MAYALIAS(ptr noundef %4, ptr noundef %x) %5 = load ptr, ptr %pdst, align 8 - %f22 = getelementptr inbounds %struct.DstStruct, ptr %5, i32 0, i32 1 - %6 = load ptr, ptr %f22, align 8 + %f22 = getelementptr inbounds nuw %struct.DstStruct, ptr %5, i32 0, i32 1 + %6 = load ptr, ptr %f22, align 1 call void @MAYALIAS(ptr noundef %6, ptr noundef %y) %7 = load ptr, ptr %pdst, align 8 - %f3 = getelementptr inbounds %struct.DstStruct, ptr %7, i32 0, i32 2 - store ptr %z, ptr %f3, align 8 + %f3 = getelementptr inbounds nuw %struct.DstStruct, ptr %7, i32 0, i32 2 + store ptr %z, ptr %f3, align 1 %8 = load ptr, ptr %psrc, align 8 - %f23 = getelementptr inbounds %struct.SrcStruct, ptr %8, i32 0, i32 1 - %9 = load ptr, ptr %f23, align 8 + %f23 = getelementptr inbounds nuw %struct.SrcStruct, ptr %8, i32 0, i32 1 + %9 = load ptr, ptr %f23, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..b5c8db934 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,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-instance-return.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.MyStruct = type <{ ptr, i8 }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -147,42 +147,41 @@ declare i32 @getchar() #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local { ptr, i8 } @foo() #0 { entry: - %retval = alloca %struct.MyStruct, align 8 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %retval, i32 0, i32 0 - store ptr @x, ptr %f1, align 8 - %0 = load { ptr, i8 }, ptr %retval, align 8 + %retval = alloca %struct.MyStruct, align 1 + %retval.coerce = alloca { ptr, i8 }, align 8 + %f1 = getelementptr inbounds nuw %struct.MyStruct, ptr %retval, i32 0, i32 0 + store ptr @x, ptr %f1, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %0 = load { ptr, i8 }, ptr %retval.coerce, align 8 ret { ptr, i8 } %0 } +; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 + ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %m = alloca %struct.MyStruct, align 8 - %tmp = alloca %struct.MyStruct, align 8 + %m = alloca %struct.MyStruct, align 1 + %tmp = alloca %struct.MyStruct, align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 store i32 0, ptr %retval, align 4 %call = call { ptr, i8 } @foo() - %0 = getelementptr inbounds { ptr, i8 }, ptr %tmp, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %tmp, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %m, ptr align 8 %tmp, i64 16, i1 false) - %f1 = getelementptr inbounds %struct.MyStruct, ptr %m, i32 0, i32 0 - %4 = load ptr, ptr %f1, align 8 - call void @EXPECTEDFAIL_MAYALIAS(ptr noundef %4, ptr noundef @x) - %f11 = getelementptr inbounds %struct.MyStruct, ptr %m, i32 0, i32 0 - %5 = load ptr, ptr %f11, align 8 - call void @NOALIAS(ptr noundef %5, ptr noundef @y) + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %tmp, ptr align 8 %tmp.coerce, i64 9, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %m, ptr align 1 %tmp, i64 9, i1 false) + %f1 = getelementptr inbounds nuw %struct.MyStruct, ptr %m, i32 0, i32 0 + %0 = load ptr, ptr %f1, align 1 + call void @EXPECTEDFAIL_MAYALIAS(ptr noundef %0, ptr noundef @x) + %f11 = getelementptr inbounds nuw %struct.MyStruct, ptr %m, i32 0, i32 0 + %1 = load ptr, ptr %f11, align 1 + call void @NOALIAS(ptr noundef %1, ptr noundef @y) ret i32 0 } -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 +192,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..e689cfe2d 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-1-layer.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -147,45 +147,45 @@ declare i32 @getchar() #1 define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %ms = alloca %struct.MyStruct1, align 8 + %ms = alloca %struct.MyStruct1, align 1 %pms1 = alloca ptr, align 8 %pms2 = alloca ptr, align 8 %a = alloca i32, align 4 %b = alloca i32, align 4 %c = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.MyStruct1, ptr %ms, i32 0, i32 0 - store ptr %c, ptr %f1, align 8 - %f2 = getelementptr inbounds %struct.MyStruct1, ptr %ms, i32 0, i32 1 - %f3 = getelementptr inbounds %struct.MyStruct2, ptr %f2, i32 0, i32 0 - store ptr %a, ptr %f3, align 8 - %f21 = getelementptr inbounds %struct.MyStruct1, ptr %ms, i32 0, i32 1 - %f4 = getelementptr inbounds %struct.MyStruct2, ptr %f21, i32 0, i32 1 - store ptr %b, ptr %f4, align 8 + %f1 = getelementptr inbounds nuw %struct.MyStruct1, ptr %ms, i32 0, i32 0 + store ptr %c, ptr %f1, align 1 + %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 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 1 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 - %1 = load ptr, ptr %f43, align 8 + %f43 = getelementptr inbounds nuw %struct.MyStruct2, ptr %0, i32 0, i32 1 + %1 = load ptr, ptr %f43, align 1 %2 = load ptr, ptr %pms1, align 8 - %f24 = getelementptr inbounds %struct.MyStruct1, ptr %2, i32 0, i32 1 - %f35 = getelementptr inbounds %struct.MyStruct2, ptr %f24, i32 0, i32 0 - %3 = load ptr, ptr %f35, align 8 + %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 1 call void @NOALIAS(ptr noundef %1, ptr noundef %3) %4 = load ptr, ptr %pms2, align 8 - %f36 = getelementptr inbounds %struct.MyStruct2, ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %f36, align 8 + %f36 = getelementptr inbounds nuw %struct.MyStruct2, ptr %4, i32 0, i32 0 + %5 = load ptr, ptr %f36, align 1 %6 = load ptr, ptr %pms1, align 8 - %f27 = getelementptr inbounds %struct.MyStruct1, ptr %6, i32 0, i32 1 - %f38 = getelementptr inbounds %struct.MyStruct2, ptr %f27, i32 0, i32 0 - %7 = load ptr, ptr %f38, align 8 + %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 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a673069d6 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,11 +1,11 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-2-layers.c.bc' +source_filename = "/root/test/once_more/SVF/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 } -%struct.InnerStruct = type { i32, i8 } +%struct.MidStruct = type <{ i32, %struct.InnerStruct, i8 }> +%struct.InnerStruct = type <{ i32, i8 }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -153,60 +153,60 @@ entry: %ptmp = alloca ptr, align 8 %itmp = alloca ptr, align 8 %pin = alloca ptr, align 8 - %s = alloca %struct.OuterStruct, align 4 + %s = alloca %struct.OuterStruct, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..bbf954275 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,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array1.c.bc' +source_filename = "/root/test/once_more/SVF/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.ArrayStruct = type <{ i32, i8, %struct.InnerArrayStruct, i32 }> %struct.InnerArrayStruct = type { [100 x i32] } @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @@ -148,40 +148,40 @@ define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 - %s = alloca %struct.ArrayStruct, align 4 + %s = alloca %struct.ArrayStruct, align 1 %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..101c49f32 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,11 +1,11 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array2.c.bc' +source_filename = "/root/test/once_more/SVF/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] } -%struct.InnerArrayStruct = type { [10 x ptr], i8, double } +%struct.ArrayStruct = type <{ i32, i8, %struct.MidArrayStruct, ptr }> +%struct.MidArrayStruct = type <{ i8, [5 x %struct.InnerArrayStruct], [20 x double] }> +%struct.InnerArrayStruct = type <{ [10 x ptr], i8, double }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -149,49 +149,49 @@ define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 - %s = alloca %struct.ArrayStruct, align 8 + %s = alloca %struct.ArrayStruct, align 1 %x = alloca i32, align 4 %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %out4 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 3 - store ptr %x, ptr %out4, align 8 + %out4 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s, i32 0, i32 3 + store ptr %x, ptr %out4, align 1 store ptr %s, ptr %p, align 8 - %out41 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 3 - %0 = load ptr, ptr %out41, align 8 + %out41 = getelementptr inbounds nuw %struct.ArrayStruct, ptr %s, i32 0, i32 3 + %0 = load ptr, ptr %out41, align 1 %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 + store ptr %0, ptr %arrayidx2, align 1 %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 + store ptr %y, ptr %arrayidx7, align 1 %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 + %4 = load ptr, ptr %arrayidx12, align 1 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 + %5 = load ptr, ptr %arrayidx17, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..d686ab7fa 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,11 +1,11 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array3.c.bc' +source_filename = "/root/test/once_more/SVF/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] } -%struct.InnerArrayStruct = type { [10 x i32], i8, double } +%struct.ArrayStruct = type <{ i32, i8, %struct.MidArrayStruct, i32 }> +%struct.MidArrayStruct = type <{ i8, [5 x %struct.InnerArrayStruct], [20 x double] }> +%struct.InnerArrayStruct = type <{ [10 x i32], i8, double }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -149,52 +149,52 @@ define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 - %s = alloca %struct.ArrayStruct, align 8 + %s = alloca %struct.ArrayStruct, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..ad30c2f5d 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-onefld.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -149,7 +149,7 @@ entry: %retval = alloca i32, align 4 %pint1 = alloca ptr, align 8 %pint2 = alloca ptr, align 8 - %s = alloca %struct.IntStruct, align 4 + %s = alloca %struct.IntStruct, align 1 %qint1 = alloca ptr, align 8 %qint2 = alloca ptr, align 8 %t = alloca %struct.CharStruct, align 1 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..c9a92e3bd 100644 --- a/test_cases_bc/basic_c_tests/struct-simple.c.bc +++ b/test_cases_bc/basic_c_tests/struct-simple.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-simple.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.s = type <{ ptr, i32 }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -146,25 +146,25 @@ declare i32 @getchar() #1 define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 - %s2 = alloca %struct.s, align 8 + %s1 = alloca %struct.s, align 1 + %s2 = alloca %struct.s, align 1 %x = alloca i32, align 4 %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %a = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %x, ptr %a, align 8 - %a1 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - %0 = load ptr, ptr %a1, align 8 - %a2 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 0 - store ptr %0, ptr %a2, align 8 - %a3 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 0 - %1 = load ptr, ptr %a3, align 8 + %a = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 0 + store ptr %x, ptr %a, align 1 + %a1 = getelementptr inbounds nuw %struct.s, ptr %s1, i32 0, i32 0 + %0 = load ptr, ptr %a1, align 1 + %a2 = getelementptr inbounds nuw %struct.s, ptr %s2, i32 0, i32 0 + store ptr %0, ptr %a2, align 1 + %a3 = getelementptr inbounds nuw %struct.s, ptr %s2, i32 0, i32 0 + %1 = load ptr, ptr %a3, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a9ac838b1 100644 --- a/test_cases_bc/basic_c_tests/struct-twoflds.c.bc +++ b/test_cases_bc/basic_c_tests/struct-twoflds.c.bc @@ -1,10 +1,10 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/struct-twoflds.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.IntChar = type <{ i32, i8 }> +%struct.CharInt = type <{ i8, i32 }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @@ -149,50 +149,50 @@ entry: %retval = alloca i32, align 4 %pint1 = alloca ptr, align 8 %pint2 = alloca ptr, align 8 - %s = alloca %struct.IntChar, align 4 + %s = alloca %struct.IntChar, align 1 %qint1 = alloca ptr, align 8 %qint2 = alloca ptr, align 8 - %t = alloca %struct.CharInt, align 4 + %t = alloca %struct.CharInt, align 1 store i32 0, ptr %retval, align 4 store ptr %s, ptr %pint1, align 8 store ptr %s, ptr %pint2, align 8 %0 = load ptr, ptr %pint1, align 8 - %f1 = getelementptr inbounds %struct.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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/basic_c_tests/structcopy1.c.bc b/test_cases_bc/basic_c_tests/structcopy1.c.bc index e530c8881..45fc4a858 100644 --- a/test_cases_bc/basic_c_tests/structcopy1.c.bc +++ b/test_cases_bc/basic_c_tests/structcopy1.c.bc @@ -1,27 +1,27 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_c_tests/structcopy1.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.innerStruct = type <{ i32, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { entry: - %x = alloca %struct.myStruct, align 8 - %y = alloca %struct.myStruct, align 8 + %x = alloca %struct.myStruct, align 1 + %y = alloca %struct.myStruct, align 1 %call = call ptr @malloc(i64 noundef 10) #4 - %b = getelementptr inbounds %struct.myStruct, ptr %x, i32 0, i32 1 - %n = getelementptr inbounds %struct.innerStruct, ptr %b, i32 0, i32 1 - store ptr %call, ptr %n, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %y, ptr align 8 %x, i64 24, i1 false) - %b1 = getelementptr inbounds %struct.myStruct, ptr %x, i32 0, i32 1 - %n2 = getelementptr inbounds %struct.innerStruct, ptr %b1, i32 0, i32 1 - %0 = load ptr, ptr %n2, align 8 - %b3 = getelementptr inbounds %struct.myStruct, ptr %y, i32 0, i32 1 - %n4 = getelementptr inbounds %struct.innerStruct, ptr %b3, i32 0, i32 1 - %1 = load ptr, ptr %n4, align 8 + %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 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %y, ptr align 1 %x, i64 16, i1 false) + %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 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 1 %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/basic_cpp_tests/abstract.cpp.bc b/test_cases_bc/basic_cpp_tests/abstract.cpp.bc index 70a110b00..49f1783f9 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/abstract.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,50 +184,50 @@ 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 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) %3 = load ptr, ptr %a, align 8 %4 = load ptr, ptr %ptr_g, align 8 - %vtable1 = load ptr, ptr %3, align 8 + %vtable1 = load ptr, ptr %3, align 1 %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 1 %5 = load ptr, ptr %vfn2, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef %4) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -244,7 +244,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1gEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1gEPi(ptr noundef nonnull align 1 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 @@ -263,7 +263,7 @@ entry: declare void @__cxa_pure_virtual() unnamed_addr ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..b7ef0101c 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/array-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 { @@ -169,7 +167,7 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %aarray = alloca %"struct.std::array", align 8 + %aarray = alloca %"struct.std::array", align 1 %a0 = alloca ptr, align 8 %a1 = alloca ptr, align 8 %aptr = alloca ptr, align 8 @@ -177,59 +175,59 @@ 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 1 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 1 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 1 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 1 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 1 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 %4 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %3, align 8 + %vtable = load ptr, ptr %3, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %5 = load ptr, ptr %vfn, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef %4) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 1 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 store i64 %__n, ptr %__n.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_elems = getelementptr inbounds %"struct.std::array", ptr %this1, i32 0, i32 0 + %_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 -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..d64c50ae6 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/array-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 { @@ -177,7 +169,7 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %aarray = alloca %"struct.std::array", align 8 + %aarray = alloca %"struct.std::array", align 1 %a0 = alloca ptr, align 8 %a1 = alloca ptr, align 8 %aptr = alloca ptr, align 8 @@ -185,69 +177,70 @@ 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 1 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 1 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 1 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 1 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 1 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 %4 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %3, align 8 + %vtable = load ptr, ptr %3, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %5 = load ptr, ptr %vfn, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef %4) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 1 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 store i64 %__n, ptr %__n.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_elems = getelementptr inbounds %"struct.std::array", ptr %this1, i32 0, i32 0 + %_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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE5frontEv(ptr noundef nonnull align 1 dereferenceable(16) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt5arrayIPK1ALm2EE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #7 - ret ptr %call + %_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 -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..923270c2a 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/array-3.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 { @@ -177,7 +169,7 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %aarray = alloca %"struct.std::array", align 8 + %aarray = alloca %"struct.std::array", align 1 %a0 = alloca ptr, align 8 %a1 = alloca ptr, align 8 %aptr = alloca ptr, align 8 @@ -185,70 +177,70 @@ 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 1 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 1 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 1 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 1 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 1 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 %4 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %3, align 8 + %vtable = load ptr, ptr %3, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %5 = load ptr, ptr %vfn, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef %4) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 1 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 store i64 %__n, ptr %__n.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_elems = getelementptr inbounds %"struct.std::array", ptr %this1, i32 0, i32 0 + %_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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE4backEv(ptr noundef nonnull align 1 dereferenceable(16) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt5arrayIPK1ALm2EE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #7 - %add.ptr = getelementptr inbounds ptr, ptr %call, i64 -1 - ret ptr %add.ptr + %_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 -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..e4f94df94 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -178,16 +178,16 @@ define dso_local noundef i32 @main() #3 { entry: %retval = alloca i32, align 4 %i = alloca ptr, align 8 - %b = alloca %class.B, align 8 + %b = alloca %class.B, align 1 store i32 0, ptr %retval, align 4 store ptr @global_obj, ptr %i, align 8 %0 = load ptr, ptr %i, align 8 - call void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %b, ptr noundef %0) + call void @_ZN1BC2EPi(ptr noundef nonnull align 1 dereferenceable(8) %b, ptr noundef %0) ret i32 0 } -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #4 comdat align 2 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2EPi(ptr noundef nonnull align 1 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 @@ -195,35 +195,35 @@ entry: store ptr %i, ptr %i.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %i.addr, align 8 - call void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + call void @_ZN1AC2EPi(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef %0) + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2), ptr %this1, align 1 %1 = load ptr, ptr %i.addr, align 8 - %vtable = load ptr, ptr %this1, align 8 + %vtable = load ptr, ptr %this1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef %1) ret void } -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #4 comdat align 2 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2EPi(ptr noundef nonnull align 1 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 1 %0 = load ptr, ptr %i.addr, align 8 - %vtable = load ptr, ptr %this1, align 8 + %vtable = load ptr, ptr %this1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %1 = load ptr, ptr %vfn, align 8 - call void %1(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) + call void %1(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef %0) ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -237,7 +237,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..016bbbb0c 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -182,10 +182,10 @@ entry: store ptr %i, ptr %i.addr, align 8 %0 = load ptr, ptr %p.addr, align 8 %1 = load ptr, ptr %i.addr, align 8 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) ret void } @@ -196,18 +196,18 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %i = alloca ptr, align 8 - %b = alloca %class.B, align 8 + %b = alloca %class.B, align 1 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %i, align 8 %0 = load ptr, ptr %i, align 8 - call void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %b, ptr noundef %0) + call void @_ZN1BC2EPi(ptr noundef nonnull align 1 dereferenceable(8) %b, ptr noundef %0) ret i32 0 } -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #4 comdat align 2 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2EPi(ptr noundef nonnull align 1 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 @@ -215,29 +215,29 @@ entry: store ptr %i, ptr %i.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %i.addr, align 8 - call void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 + call void @_ZN1AC2EPi(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef %0) + store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2), ptr %this1, align 1 %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 1 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 1 %0 = load ptr, ptr %i.addr, align 8 call void @_Z1gP1APi(ptr noundef %this1, ptr noundef %0) ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -251,7 +251,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..39f1471e5 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -324,8 +294,8 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %adeque = alloca %"class.std::deque", align 8 - %a = alloca %class.A, align 8 + %adeque = alloca %"class.std::deque", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -334,27 +304,27 @@ 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 @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 + call void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %adeque) + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + invoke void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 1 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 1 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 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 + call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(80) %adeque) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -376,28 +346,28 @@ 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 1 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 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %this1) ret void } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -405,61 +375,61 @@ 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 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Deque_iterator", align 8 + %ref.tmp = alloca %"struct.std::_Deque_iterator", align 1 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 1 %ref.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #9 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 1 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 1 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 + %agg.tmp = alloca %"struct.std::_Deque_iterator", align 1 + %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) + call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #9 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp2, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #9 + invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 1 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 1 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 1 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 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) + %_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 1 dereferenceable(80) %_M_impl) #9 + invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 1 dereferenceable(80) %_M_impl) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -483,19 +453,24 @@ 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 1 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 1 dereferenceable(80) %this1) #9 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__num_elements.addr = alloca i64, align 8 @@ -520,34 +495,34 @@ 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 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 + %_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 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 1 + %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %3) + %_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 1 + %_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 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 1 %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 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) + invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #13 + %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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 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 1 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -595,35 +570,35 @@ 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 1 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 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_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 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 1 %24 = load i64, ptr %__num_elements.addr, align 8 %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds ptr, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 + %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 1 ret void eh.resume: ; preds = %invoke.cont24 @@ -637,73 +612,57 @@ 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 1 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 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 + 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 @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(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_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_map, align 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 1 + %_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 1 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 1 dereferenceable(32) %_M_finish) #9 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 1 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 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_first, align 1 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr null, ptr %_M_last, align 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr null, ptr %_M_node, align 1 ret void } @@ -760,8 +719,12 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 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 1 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 @@ -798,7 +772,7 @@ eh.resume: ; preds = %lpad } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -821,7 +795,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body @@ -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 1 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 @@ -893,8 +867,12 @@ unreachable: ; preds = %catch 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 1 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,17 +911,17 @@ 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 } declare void @_ZSt9terminatev() ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__new_node.addr = alloca ptr, align 8 @@ -943,91 +929,55 @@ 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 - store ptr %0, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr %0, ptr %_M_node, align 1 %1 = load ptr, ptr %__new_node.addr, align 8 %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #11 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr %2, ptr %_M_first, align 1 + %_M_first2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %3 = load ptr, ptr %_M_first2, align 1 + %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 - store ptr %add.ptr, ptr %_M_last, align 8 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr %add.ptr, ptr %_M_last, align 1 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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 @@ -1076,19 +1030,25 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 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 -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -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 1 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 1 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 @@ -1289,7 +1209,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -1303,297 +1223,306 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_finish) #9 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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 1 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 - %0 = load ptr, ptr %_M_map, align 8 + %_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 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #11 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #11 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 1 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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(32) %this, ptr noundef nonnull align 1 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 - %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_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur2, align 1 + store ptr %1, ptr %_M_cur, align 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 - %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_first3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %_M_first3, align 1 + store ptr %3, ptr %_M_first, align 1 + %_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 - %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_last4 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %_M_last4, align 1 + store ptr %5, ptr %_M_last, align 1 + %_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 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 + %_M_node5 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 + %7 = load ptr, ptr %_M_node5, align 1 + store ptr %7, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 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_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 + %1 = load ptr, ptr %_M_last, align 1 %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 + %_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 1 %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #11 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 + 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 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, i32 1 + store ptr %incdec.ptr, ptr %_M_cur10, align 1 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 1 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 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #9 + %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 1) + %call3 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 + %_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 1 %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 1 + %add.ptr12 = getelementptr inbounds ptr, ptr %9, i64 1 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__tmp = alloca %"struct.std::_Deque_iterator", align 8 + %__tmp = alloca %"struct.std::_Deque_iterator", align 1 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 1 %__tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #9 + %call = call noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 1 dereferenceable(32) %__tmp) #9 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 1 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 1 dereferenceable(32) %_M_finish, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #9 ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1602,16 +1531,16 @@ 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 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -1622,7 +1551,7 @@ entry: if.then: ; preds = %entry %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) + call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) br label %if.end if.end: ; preds = %if.then, %entry @@ -1630,86 +1559,89 @@ if.end: ; preds = %if.then, %entry } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 1 dereferenceable(32) %__x, ptr noundef nonnull align 1 dereferenceable(32) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #11 + %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 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_node, align 1 %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 + %3 = load ptr, ptr %_M_node1, align 1 %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 1 + %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 1 + %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 1 + %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 1 + %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 1 + %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,18 +1672,8 @@ 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1763,17 +1685,17 @@ 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 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 + %_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 1 + %_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 1 %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 @@ -1784,28 +1706,28 @@ 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 - %4 = load i64, ptr %_M_map_size, align 8 + %_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 1 %5 = load i64, ptr %__new_num_nodes, align 8 %mul = mul i64 2, %5 %cmp = icmp ugt i64 %4, %mul br i1 %cmp, label %if.then, label %if.else31 if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 + %_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 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 1 %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,43 +1738,43 @@ 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 - %12 = load ptr, ptr %_M_node12, align 8 + %_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 1 %cmp13 = icmp ult ptr %11, %12 br i1 %cmp13, label %if.then14, label %if.else if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 + %_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 1 + %_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 1 %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 %15 = load ptr, ptr %__new_nstart, align 8 %call = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) br label %if.end if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 + %_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 1 + %_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 1 %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,28 +1782,28 @@ if.end: ; preds = %if.else, %if.then14 br label %if.end65 if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 + %_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 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 %add38 = add i64 %add37, 2 store i64 %add38, ptr %__new_map_size, align 8 %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) + %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %22) store ptr %call39, ptr %__new_map, align 8 %23 = load ptr, ptr %__new_map, align 8 %24 = load i64, ptr %__new_map_size, align 8 %25 = load i64, ptr %__new_num_nodes, align 8 %sub40 = sub i64 %24, %25 %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 + %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 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 + %_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 1 + %_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 1 %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 %30 = load ptr, ptr %__new_nstart, align 8 %call56 = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 + %_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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 - store ptr %33, ptr %_M_map62, align 8 + %_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 1 %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 + %_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 1 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 1 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 1 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,74 +2125,88 @@ 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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %_M_first, align 1 %cmp = icmp eq ptr %0, %1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + %2 = load ptr, ptr %_M_node, align 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #11 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %3 = load ptr, ptr %_M_last, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr %3, ptr %_M_cur2, align 8 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_M_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr %3, ptr %_M_cur2, align 1 br label %if.end if.end: ; preds = %if.then, %entry - %_M_cur3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur3, align 8 + %_M_cur3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %4 = load ptr, ptr %_M_cur3, align 1 %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur3, align 8 + store ptr %incdec.ptr, ptr %_M_cur3, align 1 ret ptr %this1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..04e6546c1 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/deque-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -322,39 +292,39 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %adeque = alloca %"class.std::deque", align 8 - %a = alloca %class.A, align 8 + %adeque = alloca %"class.std::deque", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_Deque_iterator", align 8 + %it = alloca %"struct.std::_Deque_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 + call void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %adeque) + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + invoke void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 1 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 1 %it, ptr noundef nonnull align 1 dereferenceable(80) %adeque) #9 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 1 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 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 + call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(80) %adeque) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -376,28 +346,28 @@ 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 1 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 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %this1) ret void } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -405,74 +375,74 @@ 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 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind noalias writable sret(%"struct.std::_Deque_iterator") align 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #9 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 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 1 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 + %agg.tmp = alloca %"struct.std::_Deque_iterator", align 1 + %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) + call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #9 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp2, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #9 + invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 1 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 1 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 1 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 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) + %_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 1 dereferenceable(80) %_M_impl) #9 + invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 1 dereferenceable(80) %_M_impl) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -496,19 +466,24 @@ 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 1 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 1 dereferenceable(80) %this1) #9 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__num_elements.addr = alloca i64, align 8 @@ -533,34 +508,34 @@ 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 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 + %_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 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 1 + %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %3) + %_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 1 + %_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 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 1 %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 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) + invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #13 + %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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 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 1 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -608,35 +583,35 @@ 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 1 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 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_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 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 1 %24 = load i64, ptr %__num_elements.addr, align 8 %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds ptr, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 + %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 1 ret void eh.resume: ; preds = %invoke.cont24 @@ -650,73 +625,57 @@ 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 1 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 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 + 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 @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(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_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_map, align 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 1 + %_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 1 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 1 dereferenceable(32) %_M_finish) #9 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 1 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 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_first, align 1 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr null, ptr %_M_last, align 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr null, ptr %_M_node, align 1 ret void } @@ -773,8 +732,12 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 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 1 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 @@ -811,7 +785,7 @@ eh.resume: ; preds = %lpad } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -834,7 +808,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body @@ -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 1 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 @@ -906,8 +880,12 @@ unreachable: ; preds = %catch 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 1 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,17 +924,17 @@ 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 } declare void @_ZSt9terminatev() ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__new_node.addr = alloca ptr, align 8 @@ -956,91 +942,55 @@ 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 - store ptr %0, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr %0, ptr %_M_node, align 1 %1 = load ptr, ptr %__new_node.addr, align 8 %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #11 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr %2, ptr %_M_first, align 1 + %_M_first2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %3 = load ptr, ptr %_M_first2, align 1 + %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 - store ptr %add.ptr, ptr %_M_last, align 8 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr %add.ptr, ptr %_M_last, align 1 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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 @@ -1089,19 +1043,25 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 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 -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -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 1 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 1 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 @@ -1302,7 +1222,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -1316,283 +1236,292 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_finish) #9 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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 1 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 - %0 = load ptr, ptr %_M_map, align 8 + %_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 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #11 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #11 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 1 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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(32) %this, ptr noundef nonnull align 1 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 - %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_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur2, align 1 + store ptr %1, ptr %_M_cur, align 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 - %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_first3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %_M_first3, align 1 + store ptr %3, ptr %_M_first, align 1 + %_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 - %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_last4 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %_M_last4, align 1 + store ptr %5, ptr %_M_last, align 1 + %_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 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 + %_M_node5 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 + %7 = load ptr, ptr %_M_node5, align 1 + store ptr %7, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 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_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 + %1 = load ptr, ptr %_M_last, align 1 %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 + %_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 1 %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #11 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 + 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 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, i32 1 + store ptr %incdec.ptr, ptr %_M_cur10, align 1 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 1 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 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #9 + %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 1) + %call3 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 + %_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 1 %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 1 + %add.ptr12 = getelementptr inbounds ptr, ptr %9, i64 1 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__tmp = alloca %"struct.std::_Deque_iterator", align 8 + %__tmp = alloca %"struct.std::_Deque_iterator", align 1 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 1 %__tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #9 + %call = call noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 1 dereferenceable(32) %__tmp) #9 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 1 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 1 dereferenceable(32) %_M_finish, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #9 ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1601,16 +1530,16 @@ 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 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -1621,7 +1550,7 @@ entry: if.then: ; preds = %entry %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) + call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) br label %if.end if.end: ; preds = %if.then, %entry @@ -1629,86 +1558,89 @@ if.end: ; preds = %if.then, %entry } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 1 dereferenceable(32) %__x, ptr noundef nonnull align 1 dereferenceable(32) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #11 + %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 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_node, align 1 %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 + %3 = load ptr, ptr %_M_node1, align 1 %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 1 + %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 1 + %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 1 + %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 1 + %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 1 + %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,18 +1671,8 @@ 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1762,17 +1684,17 @@ 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 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 + %_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 1 + %_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 1 %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 @@ -1783,28 +1705,28 @@ 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 - %4 = load i64, ptr %_M_map_size, align 8 + %_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 1 %5 = load i64, ptr %__new_num_nodes, align 8 %mul = mul i64 2, %5 %cmp = icmp ugt i64 %4, %mul br i1 %cmp, label %if.then, label %if.else31 if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 + %_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 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 1 %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,43 +1737,43 @@ 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 - %12 = load ptr, ptr %_M_node12, align 8 + %_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 1 %cmp13 = icmp ult ptr %11, %12 br i1 %cmp13, label %if.then14, label %if.else if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 + %_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 1 + %_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 1 %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 %15 = load ptr, ptr %__new_nstart, align 8 %call = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) br label %if.end if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 + %_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 1 + %_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 1 %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,28 +1781,28 @@ if.end: ; preds = %if.else, %if.then14 br label %if.end65 if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 + %_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 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 %add38 = add i64 %add37, 2 store i64 %add38, ptr %__new_map_size, align 8 %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) + %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %22) store ptr %call39, ptr %__new_map, align 8 %23 = load ptr, ptr %__new_map, align 8 %24 = load i64, ptr %__new_map_size, align 8 %25 = load i64, ptr %__new_num_nodes, align 8 %sub40 = sub i64 %24, %25 %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 + %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 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 + %_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 1 + %_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 1 %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 %30 = load ptr, ptr %__new_nstart, align 8 %call56 = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 + %_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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 - store ptr %33, ptr %_M_map62, align 8 + %_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 1 %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 + %_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 1 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 1 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 1 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,63 +2124,77 @@ 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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %_M_first, align 1 %cmp = icmp eq ptr %0, %1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + %2 = load ptr, ptr %_M_node, align 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #11 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %3 = load ptr, ptr %_M_last, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr %3, ptr %_M_cur2, align 8 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_M_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr %3, ptr %_M_cur2, align 1 br label %if.end if.end: ; preds = %if.then, %entry - %_M_cur3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur3, align 8 + %_M_cur3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %4 = load ptr, ptr %_M_cur3, align 1 %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur3, align 8 + store ptr %incdec.ptr, ptr %_M_cur3, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..8ce25d8c7 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/deque-3.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -320,8 +290,8 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %adeque = alloca %"class.std::deque", align 8 - %a = alloca %class.A, align 8 + %adeque = alloca %"class.std::deque", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 %aptr = alloca ptr, align 8 @@ -329,25 +299,25 @@ 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 @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 - invoke void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %adeque, ptr noundef nonnull align 8 dereferenceable(8) %a) + call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %adeque) + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %a) #9 + invoke void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %adeque, ptr noundef nonnull align 1 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 1 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 + call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(80) %adeque) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -369,65 +339,83 @@ 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 1 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 - call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) + call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %this1) ret void } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 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_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 + %1 = load ptr, ptr %_M_last, align 1 %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 + %_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 1 %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #11 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 + 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 1 dereferenceable(8) %7, ptr noundef nonnull align 1 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 1 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, i32 1 + store ptr %incdec.ptr, ptr %_M_cur10, align 1 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 1 dereferenceable(80) %this1, ptr noundef nonnull align 1 dereferenceable(8) %10) br label %if.end if.end: ; preds = %if.else, %if.then @@ -437,54 +425,54 @@ if.end: ; preds = %if.else, %if.then declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Deque_iterator", align 8 + %ref.tmp = alloca %"struct.std::_Deque_iterator", align 1 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 1 %ref.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #9 + %call = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 1 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 1 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 + %agg.tmp = alloca %"struct.std::_Deque_iterator", align 1 + %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #9 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp2, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #9 + invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 1 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 1 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 1 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 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) + %_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 1 dereferenceable(80) %_M_impl) #9 + invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 1 dereferenceable(80) %_M_impl) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -508,19 +496,24 @@ 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 1 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 1 dereferenceable(80) %this1) #9 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__num_elements.addr = alloca i64, align 8 @@ -545,34 +538,34 @@ 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 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 + %_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 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 1 + %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %3) + %_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 1 + %_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 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 1 %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 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) + invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #13 + %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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 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 1 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -620,35 +613,35 @@ 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 1 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 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 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 1 %24 = load i64, ptr %__num_elements.addr, align 8 %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds %class.A, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 + %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 1 ret void eh.resume: ; preds = %invoke.cont24 @@ -662,73 +655,57 @@ 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 1 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 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 + 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 @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(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_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_map, align 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 1 + %_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 1 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 1 dereferenceable(32) %_M_finish) #9 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 1 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 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_first, align 1 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr null, ptr %_M_last, align 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr null, ptr %_M_node, align 1 ret void } @@ -785,8 +762,12 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 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 1 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 @@ -823,7 +815,7 @@ eh.resume: ; preds = %lpad } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -846,7 +838,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body @@ -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 1 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 @@ -918,8 +910,12 @@ unreachable: ; preds = %catch 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 1 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,17 +954,17 @@ 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 } declare void @_ZSt9terminatev() ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__new_node.addr = alloca ptr, align 8 @@ -968,91 +972,55 @@ 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 - store ptr %0, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr %0, ptr %_M_node, align 1 %1 = load ptr, ptr %__new_node.addr, align 8 %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #11 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr %2, ptr %_M_first, align 1 + %_M_first2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %3 = load ptr, ptr %_M_first2, align 1 + %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 - store ptr %add.ptr, ptr %_M_last, align 8 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr %add.ptr, ptr %_M_last, align 1 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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 @@ -1101,19 +1073,25 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 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 -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -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 1 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 1 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 @@ -1314,7 +1252,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -1328,249 +1266,239 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_finish) #9 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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 1 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 - %0 = load ptr, ptr %_M_map, align 8 + %_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 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #11 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #11 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 1 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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(32) %this, ptr noundef nonnull align 1 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 - %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_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur2, align 1 + store ptr %1, ptr %_M_cur, align 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 - %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_first3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %_M_first3, align 1 + store ptr %3, ptr %_M_first, align 1 + %_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 - %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_last4 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %_M_last4, align 1 + store ptr %5, ptr %_M_last, align 1 + %_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 - %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 + %_M_node5 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 + %7 = load ptr, ptr %_M_node5, align 1 + store ptr %7, ptr %_M_node, align 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #9 + %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 1) + %call3 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 + %_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 1 %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 1 dereferenceable(8) %6, ptr noundef nonnull align 1 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 1 + %add.ptr12 = getelementptr inbounds ptr, ptr %8, i64 1 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 + %_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 1 dereferenceable(32) %_M_finish, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #9 ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1579,16 +1507,16 @@ 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 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -1599,7 +1527,7 @@ entry: if.then: ; preds = %entry %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) + call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) br label %if.end if.end: ; preds = %if.then, %entry @@ -1607,86 +1535,89 @@ if.end: ; preds = %if.then, %entry } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 1 dereferenceable(32) %__x, ptr noundef nonnull align 1 dereferenceable(32) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #11 + %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 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_node, align 1 %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 + %3 = load ptr, ptr %_M_node1, align 1 %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 1 + %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 1 + %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 1 + %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 1 + %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 1 + %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,18 +1648,8 @@ 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1740,17 +1661,17 @@ 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 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 + %_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 1 + %_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 1 %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 @@ -1761,28 +1682,28 @@ 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 - %4 = load i64, ptr %_M_map_size, align 8 + %_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 1 %5 = load i64, ptr %__new_num_nodes, align 8 %mul = mul i64 2, %5 %cmp = icmp ugt i64 %4, %mul br i1 %cmp, label %if.then, label %if.else31 if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 + %_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 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 1 %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,43 +1714,43 @@ 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 - %12 = load ptr, ptr %_M_node12, align 8 + %_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 1 %cmp13 = icmp ult ptr %11, %12 br i1 %cmp13, label %if.then14, label %if.else if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 + %_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 1 + %_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 1 %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 %15 = load ptr, ptr %__new_nstart, align 8 %call = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) br label %if.end if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 + %_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 1 + %_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 1 %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,28 +1758,28 @@ if.end: ; preds = %if.else, %if.then14 br label %if.end65 if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 + %_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 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 %add38 = add i64 %add37, 2 store i64 %add38, ptr %__new_map_size, align 8 %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) + %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %22) store ptr %call39, ptr %__new_map, align 8 %23 = load ptr, ptr %__new_map, align 8 %24 = load i64, ptr %__new_map_size, align 8 %25 = load i64, ptr %__new_num_nodes, align 8 %sub40 = sub i64 %24, %25 %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 + %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 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 + %_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 1 + %_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 1 %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 %30 = load ptr, ptr %__new_nstart, align 8 %call56 = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 + %_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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 - store ptr %33, ptr %_M_map62, align 8 + %_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 1 %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 + %_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 1 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 1 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 1 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,42 +2101,56 @@ 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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..644da32c7 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/deque-4.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -318,36 +288,36 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %adeque = alloca %"class.std::deque", align 8 - %a = alloca %class.A, align 8 + %adeque = alloca %"class.std::deque", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_Deque_iterator", align 8 + %it = alloca %"struct.std::_Deque_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 - invoke void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %adeque, ptr noundef nonnull align 8 dereferenceable(8) %a) + call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %adeque) + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %a) #9 + invoke void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %adeque, ptr noundef nonnull align 1 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 1 %it, ptr noundef nonnull align 1 dereferenceable(80) %adeque) #9 + %call = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 + call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(80) %adeque) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -369,65 +339,83 @@ 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 1 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 - call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) + call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %this1) ret void } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 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_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 + %1 = load ptr, ptr %_M_last, align 1 %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 + %_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 1 %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #11 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 + 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 1 dereferenceable(8) %7, ptr noundef nonnull align 1 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 1 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, i32 1 + store ptr %incdec.ptr, ptr %_M_cur10, align 1 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 1 dereferenceable(80) %this1, ptr noundef nonnull align 1 dereferenceable(8) %10) br label %if.end if.end: ; preds = %if.else, %if.then @@ -437,67 +425,67 @@ 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #9 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 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 1 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 + %agg.tmp = alloca %"struct.std::_Deque_iterator", align 1 + %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #9 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp2, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #9 + invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 1 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 1 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 1 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 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) + %_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 1 dereferenceable(80) %_M_impl) #9 + invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 1 dereferenceable(80) %_M_impl) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -521,19 +509,24 @@ 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 1 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 1 dereferenceable(80) %this1) #9 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__num_elements.addr = alloca i64, align 8 @@ -558,34 +551,34 @@ 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 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 + %_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 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 1 + %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %3) + %_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 1 + %_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 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 1 %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 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) + invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #13 + %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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 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 1 + invoke void @__cxa_rethrow() #11 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -633,35 +626,35 @@ 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 1 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 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 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 1 %24 = load i64, ptr %__num_elements.addr, align 8 %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds %class.A, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 + %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 1 ret void eh.resume: ; preds = %invoke.cont24 @@ -675,73 +668,57 @@ 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 1 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 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 + 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 @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(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_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_map, align 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 1 + %_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 1 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 1 dereferenceable(32) %_M_finish) #9 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 1 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 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_first, align 1 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr null, ptr %_M_last, align 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr null, ptr %_M_node, align 1 ret void } @@ -798,8 +775,12 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 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 1 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 @@ -836,7 +828,7 @@ eh.resume: ; preds = %lpad } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -859,7 +851,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body @@ -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 1 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 @@ -931,8 +923,12 @@ unreachable: ; preds = %catch 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 1 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,17 +967,17 @@ 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 } declare void @_ZSt9terminatev() ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__new_node.addr = alloca ptr, align 8 @@ -981,91 +985,55 @@ 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 - store ptr %0, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr %0, ptr %_M_node, align 1 %1 = load ptr, ptr %__new_node.addr, align 8 %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #11 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr %2, ptr %_M_first, align 1 + %_M_first2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %3 = load ptr, ptr %_M_first2, align 1 + %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 - store ptr %add.ptr, ptr %_M_last, align 8 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr %add.ptr, ptr %_M_last, align 1 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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 @@ -1114,19 +1086,25 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 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 -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -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 1 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 1 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 @@ -1327,7 +1265,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -1341,235 +1279,225 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_finish) #9 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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 1 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 - %0 = load ptr, ptr %_M_map, align 8 + %_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 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #11 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #11 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 1 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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(32) %this, ptr noundef nonnull align 1 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 - %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_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur2, align 1 + store ptr %1, ptr %_M_cur, align 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 - %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_first3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %_M_first3, align 1 + store ptr %3, ptr %_M_first, align 1 + %_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 - %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_last4 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %_M_last4, align 1 + store ptr %5, ptr %_M_last, align 1 + %_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 - %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 + %_M_node5 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 + %7 = load ptr, ptr %_M_node5, align 1 + store ptr %7, ptr %_M_node, align 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #9 + %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 1) + %call3 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 + %_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 1 %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 1 dereferenceable(8) %6, ptr noundef nonnull align 1 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 1 + %add.ptr12 = getelementptr inbounds ptr, ptr %8, i64 1 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 + %_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 1 dereferenceable(32) %_M_finish, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #9 ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1578,16 +1506,16 @@ 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 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -1598,7 +1526,7 @@ entry: if.then: ; preds = %entry %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) + call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) br label %if.end if.end: ; preds = %if.then, %entry @@ -1606,86 +1534,89 @@ if.end: ; preds = %if.then, %entry } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 1 dereferenceable(32) %__x, ptr noundef nonnull align 1 dereferenceable(32) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #11 + %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 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_node, align 1 %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 + %3 = load ptr, ptr %_M_node1, align 1 %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 1 + %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 1 + %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 1 + %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 1 + %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 1 + %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,18 +1647,8 @@ 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1739,17 +1660,17 @@ 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 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 + %_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 1 + %_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 1 %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 @@ -1760,28 +1681,28 @@ 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 - %4 = load i64, ptr %_M_map_size, align 8 + %_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 1 %5 = load i64, ptr %__new_num_nodes, align 8 %mul = mul i64 2, %5 %cmp = icmp ugt i64 %4, %mul br i1 %cmp, label %if.then, label %if.else31 if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 + %_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 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 1 %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,43 +1713,43 @@ 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 - %12 = load ptr, ptr %_M_node12, align 8 + %_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 1 %cmp13 = icmp ult ptr %11, %12 br i1 %cmp13, label %if.then14, label %if.else if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 + %_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 1 + %_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 1 %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 %15 = load ptr, ptr %__new_nstart, align 8 %call = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) br label %if.end if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 + %_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 1 + %_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 1 %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,28 +1757,28 @@ if.end: ; preds = %if.else, %if.then14 br label %if.end65 if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 + %_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 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 %add38 = add i64 %add37, 2 store i64 %add38, ptr %__new_map_size, align 8 %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) + %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %22) store ptr %call39, ptr %__new_map, align 8 %23 = load ptr, ptr %__new_map, align 8 %24 = load i64, ptr %__new_map_size, align 8 %25 = load i64, ptr %__new_num_nodes, align 8 %sub40 = sub i64 %24, %25 %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 + %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 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 + %_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 1 + %_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 1 %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 %30 = load ptr, ptr %__new_nstart, align 8 %call56 = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 + %_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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 - store ptr %33, ptr %_M_map62, align 8 + %_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 1 %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 + %_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 1 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 1 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 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..df1f2263b 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,9 +193,9 @@ 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) + invoke void @_ZN1BC2EPi(ptr noundef nonnull align 1 dereferenceable(24) %call, ptr noundef %0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -205,10 +205,10 @@ invoke.cont: ; preds = %entry br i1 %isnull, label %delete.end, label %delete.notnull delete.notnull: ; preds = %invoke.cont - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %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 1 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 1 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 @@ -244,94 +244,94 @@ entry: store ptr %i, ptr %i.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %i.addr, align 8 - call void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(16) %this1, ptr noundef %0) - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %bptr = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 + call void @_ZN1AC2EPi(ptr noundef nonnull align 1 dereferenceable(16) %this1, ptr noundef %0) + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2), ptr %this1, align 1 + %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 + store ptr %1, ptr %bptr, align 1 ret void } 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 1 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 1 + %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 + store ptr %0, ptr %aptr, align 1 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 1 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 - %vtable = load ptr, 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 1 + %vtable = load ptr, ptr %this1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 2 %0 = load ptr, ptr %vfn, align 8 - invoke void %0(ptr noundef nonnull align 8 dereferenceable(24) %this1) + invoke void %0(ptr noundef nonnull align 1 dereferenceable(24) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry - call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #10 + call void @_ZN1AD2Ev(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(24) %this1) #8 + call void @_ZdlPvm(ptr noundef %this1, i64 noundef 24) #9 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEv(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEv(ptr noundef nonnull align 1 dereferenceable(24) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr @global_ptr, align 8 - %bptr = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %bptr, align 8 + %bptr = getelementptr inbounds nuw %class.B, ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %bptr, align 1 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 1 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 - %vtable = load ptr, 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 1 + %vtable = load ptr, ptr %this1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 2 %0 = load ptr, ptr %vfn, align 8 - invoke void %0(ptr noundef nonnull align 8 dereferenceable(16) %this1) + invoke void %0(ptr noundef nonnull align 1 dereferenceable(16) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -341,38 +341,38 @@ 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 1 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 1 dereferenceable(16) %this1) #8 + call void @_ZdlPvm(ptr noundef %this1, i64 noundef 16) #9 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEv(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEv(ptr noundef nonnull align 1 dereferenceable(16) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr @global_ptr, align 8 - %aptr = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %aptr, align 8 + %aptr = getelementptr inbounds nuw %class.A, ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %aptr, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..86f991ed6 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -189,10 +189,10 @@ entry: %p.addr = alloca ptr, align 8 store ptr %p, ptr %p.addr, align 8 %0 = load ptr, ptr %p.addr, align 8 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 2 %1 = load ptr, ptr %vfn, align 8 - call void %1(ptr noundef nonnull align 8 dereferenceable(16) %0) + call void %1(ptr noundef nonnull align 1 dereferenceable(16) %0) ret void } @@ -206,9 +206,9 @@ 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) + invoke void @_ZN1BC2EPi(ptr noundef nonnull align 1 dereferenceable(24) %call, ptr noundef %0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -218,10 +218,10 @@ invoke.cont: ; preds = %entry br i1 %isnull, label %delete.end, label %delete.notnull delete.notnull: ; preds = %invoke.cont - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %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 1 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 1 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 @@ -257,87 +257,87 @@ entry: store ptr %i, ptr %i.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %i.addr, align 8 - call void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(16) %this1, ptr noundef %0) - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %bptr = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 + call void @_ZN1AC2EPi(ptr noundef nonnull align 1 dereferenceable(16) %this1, ptr noundef %0) + store ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2), ptr %this1, align 1 + %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 + store ptr %1, ptr %bptr, align 1 ret void } 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 1 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 1 + %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 + store ptr %0, ptr %aptr, align 1 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 1 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 1 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 1 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 1 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 1 dereferenceable(24) %this1) #8 + call void @_ZdlPvm(ptr noundef %this1, i64 noundef 24) #9 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEv(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEv(ptr noundef nonnull align 1 dereferenceable(24) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr @global_ptr, align 8 - %bptr = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %bptr, align 8 + %bptr = getelementptr inbounds nuw %class.B, ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %bptr, align 1 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 1 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 1 invoke void @_Z1gP1A(ptr noundef %this1) to label %invoke.cont unwind label %terminate.lpad @@ -348,38 +348,38 @@ 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 1 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 1 dereferenceable(16) %this1) #8 + call void @_ZdlPvm(ptr noundef %this1, i64 noundef 16) #9 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEv(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEv(ptr noundef nonnull align 1 dereferenceable(16) %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr @global_ptr, align 8 - %aptr = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %aptr, align 8 + %aptr = getelementptr inbounds nuw %class.A, ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %aptr, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..475cd8504 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -208,20 +208,20 @@ entry: %retval = alloca i32, align 4 %ptr_b = alloca ptr, align 8 %ptr_c = alloca ptr, align 8 - %d = alloca %class.D, align 8 + %d = alloca %class.D, align 1 %b = alloca ptr, align 8 %c = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store ptr @global_obj_b, ptr %ptr_b, align 8 store ptr @global_obj_c, ptr %ptr_c, align 8 - call void @_ZN1DC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %d) #5 + call void @_ZN1DC2Ev(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) %3 = icmp eq ptr %d, null br i1 %3, label %cast.end, label %cast.notnull @@ -234,52 +234,52 @@ cast.end: ; preds = %cast.notnull, %entr store ptr %cast.result, ptr %c, align 8 %4 = load ptr, ptr %c, align 8 %5 = load ptr, ptr %ptr_c, align 8 - %vtable1 = load ptr, ptr %4, align 8 + %vtable1 = load ptr, ptr %4, align 1 %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 0 %6 = load ptr, ptr %vfn2, align 8 - call void %6(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) + call void %6(ptr noundef nonnull align 1 dereferenceable(8) %4, ptr noundef %5) ret i32 0 } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1DC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #4 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1DC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 %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 1 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 1 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 1 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -296,7 +296,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1C1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1C1fEPi(ptr noundef nonnull align 1 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 @@ -312,18 +312,18 @@ 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..18d67798b 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 1 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 @@ -207,10 +207,10 @@ dynamic_cast.end: ; preds = %dynamic_cast.null, if.then: ; preds = %dynamic_cast.end %5 = load ptr, ptr %pb, align 8 %6 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %5, align 8 + %vtable = load ptr, ptr %5, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %7 = load ptr, ptr %vfn, align 8 - call void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) + call void %7(ptr noundef nonnull align 1 dereferenceable(8) %5, ptr noundef %6) br label %if.end if.end: ; preds = %if.then, %dynamic_cast.end @@ -220,32 +220,32 @@ 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 1 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -259,7 +259,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..104e5e774 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,30 +221,14 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::forward_list", align 8 + %alist = alloca %"class.std::forward_list", align 1 %a = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -275,18 +237,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 @_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 1 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 1 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) + invoke void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 1 dereferenceable(8) %alist, ptr noundef nonnull align 8 dereferenceable(8) %a) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont - %call3 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) + %call3 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(8) %alist) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont1 @@ -294,15 +256,15 @@ invoke.cont2: ; preds = %invoke.cont1 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont2 store i32 0, ptr %retval, align 4 - call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 + call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(8) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -324,136 +286,122 @@ 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__val.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__val, ptr %__val.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 + %call = call ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 1 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 1 %0 = load ptr, ptr %__val.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %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 1 + %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 1 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__front = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 + %_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 1 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 1 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 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 + call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 dereferenceable(8) %this1) #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_EEC2Ev(ptr noundef nonnull align 1 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 @_ZNSaISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %_M_head, i8 0, i64 8, i1 false) - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #5 + %_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 1 dereferenceable(8) %_M_impl) #9 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 { +; 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 1 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 @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev(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 + %_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 1 %_M_head, i8 0, i64 8, i1 false) + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 1 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 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_next, align 8 - ret void -} +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 @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev(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 @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_next, align 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 1 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 - %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) + %_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 1 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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS6_(ptr noundef nonnull align 1 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,8 +455,8 @@ 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 - %1 = load ptr, ptr %_M_next, align 8 + %_M_next = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_next, align 1 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 - %6 = load ptr, ptr %_M_next2, align 8 + %_M_next2 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %5, i32 0, i32 0 + %6 = load ptr, ptr %_M_next2, align 1 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 1 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 1 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 1 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 1 + %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,53 +509,46 @@ 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 1 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 + 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(16) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 + %_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 1 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 { +define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS2_E(ptr noundef nonnull align 1 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,48 +556,42 @@ 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this1) #9 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 1 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 + %_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 1 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 @@ -707,132 +629,128 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { entry: - %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__to = alloca ptr, align 8 %__thing = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - store ptr %__pos.coerce, ptr %coerce.dive, align 8 + %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 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 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) + %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) store ptr %call, ptr %__thing, align 8 %2 = load ptr, ptr %__to, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_next, align 8 + %_M_next = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %_M_next, align 1 %4 = load ptr, ptr %__thing, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 - store ptr %3, ptr %_M_next2, align 8 + %_M_next2 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 + store ptr %3, ptr %_M_next2, align 1 %5 = load ptr, ptr %__thing, align 8 %6 = load ptr, ptr %__to, align 8 - %_M_next3 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 - store ptr %5, ptr %_M_next3, align 8 + %_M_next3 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 + store ptr %5, ptr %_M_next3, align 1 %7 = load ptr, ptr %__to, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %_M_next4, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 + %8 = load ptr, ptr %_M_next4, align 1 ret ptr %8 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_head) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 1 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 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) + %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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() + store ptr %0, ptr %_M_node, align 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..cbcdc3bd4 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,67 +226,51 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::forward_list", align 8 + %alist = alloca %"class.std::forward_list", align 1 %a = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_Fwd_list_iterator", align 8 + %it = alloca %"struct.std::_Fwd_list_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #13 + call void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 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 1 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) + invoke void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 1 dereferenceable(8) %alist, ptr noundef nonnull align 8 dereferenceable(8) %a) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont - %call2 = call ptr @_ZNSt12forward_listIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %it, i32 0, i32 0 - store ptr %call2, ptr %coerce.dive, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 + %call2 = call ptr @_ZNSt12forward_listIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 1 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 1 + %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorIPK1AEdeEv(ptr noundef nonnull align 1 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 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont1 store i32 0, ptr %retval, align 4 - call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 + call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(8) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -330,148 +292,134 @@ 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__val.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__val, ptr %__val.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 + %call = call ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 1 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 1 %0 = load ptr, ptr %__val.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %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 1 + %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 1 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt12forward_listIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt12forward_listIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Fwd_list_iterator", align 8 + %retval = alloca %"struct.std::_Fwd_list_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - call void @_ZNSt18_Fwd_list_iteratorIPK1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 + %_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 1 + call void @_ZNSt18_Fwd_list_iteratorIPK1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 1 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 1 ret ptr %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorIPK1AEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 + %_M_node = getelementptr inbounds nuw %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 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 + call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 dereferenceable(8) %this1) #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_EEC2Ev(ptr noundef nonnull align 1 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 @_ZNSaISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %_M_head, i8 0, i64 8, i1 false) - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #5 + %_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 1 dereferenceable(8) %_M_impl) #9 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 { +; 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 1 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 @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev(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 + %_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 1 %_M_head, i8 0, i64 8, i1 false) + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 1 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 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_next, align 8 - ret void -} +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 @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev(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 @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_next, align 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 1 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 - %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) + %_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 1 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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS6_(ptr noundef nonnull align 1 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,8 +473,8 @@ 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 - %1 = load ptr, ptr %_M_next, align 8 + %_M_next = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_next, align 1 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 - %6 = load ptr, ptr %_M_next2, align 8 + %_M_next2 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %5, i32 0, i32 0 + %6 = load ptr, ptr %_M_next2, align 1 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 1 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 1 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 1 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 1 + %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,53 +527,46 @@ 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 1 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 + 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(16) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 + %_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 1 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 { +define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS2_E(ptr noundef nonnull align 1 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,48 +574,42 @@ 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this1) #9 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 1 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 + %_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 1 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 @@ -725,132 +647,128 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { entry: - %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__to = alloca ptr, align 8 %__thing = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - store ptr %__pos.coerce, ptr %coerce.dive, align 8 + %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 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 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) + %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) store ptr %call, ptr %__thing, align 8 %2 = load ptr, ptr %__to, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_next, align 8 + %_M_next = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %_M_next, align 1 %4 = load ptr, ptr %__thing, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 - store ptr %3, ptr %_M_next2, align 8 + %_M_next2 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 + store ptr %3, ptr %_M_next2, align 1 %5 = load ptr, ptr %__thing, align 8 %6 = load ptr, ptr %__to, align 8 - %_M_next3 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 - store ptr %5, ptr %_M_next3, align 8 + %_M_next3 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 + store ptr %5, ptr %_M_next3, align 1 %7 = load ptr, ptr %__to, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %_M_next4, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 + %8 = load ptr, ptr %_M_next4, align 1 ret ptr %8 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_head) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 1 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 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) + %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 + store ptr %0, ptr %_M_node, align 1 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 1 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() + store ptr %0, ptr %_M_node, align 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..da3be41e2 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc' +source_filename = "/root/test/once_more/SVF/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" } @@ -11,8 +12,8 @@ target triple = "x86_64-unknown-linux-gnu" %class.A = type { ptr } %"struct.std::_Fwd_list_const_iterator" = type { ptr } %"struct.std::_Fwd_list_node" = type { %"struct.std::_Fwd_list_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 8>::type" } -%"union.std::aligned_storage<8, 8>::type" = type { [8 x i8] } +%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 1>::type" } +%"union.std::aligned_storage<8, 1>::type" = type { [8 x i8] } $_ZNSt12forward_listI1ASaIS0_EEC2Ev = comdat any @@ -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,31 +224,15 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::forward_list", align 8 - %a = alloca %class.A, align 8 + %alist = alloca %"class.std::forward_list", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 %aptr = alloca ptr, align 8 @@ -278,28 +240,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 @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %alist, ptr noundef nonnull align 8 dereferenceable(8) %a) + call void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %alist) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %a) #9 + invoke void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 1 dereferenceable(8) %alist, ptr noundef nonnull align 1 dereferenceable(8) %a) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) + %call = invoke noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt12forward_listI1ASaIS0_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(8) %alist) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store ptr %call, ptr %aptr, align 8 %0 = load ptr, ptr %aptr, align 8 %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont1 store i32 0, ptr %retval, align 4 - call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 + call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(8) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -321,133 +283,119 @@ 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %__val) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__val.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__val, ptr %__val.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 + %call = call ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 1 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 1 %0 = load ptr, ptr %__val.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %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 1 + %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 1 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 1 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt12forward_listI1ASaIS0_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__front = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 + %_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 1 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 1 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 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 + call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 dereferenceable(8) %this1) #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_EEC2Ev(ptr noundef nonnull align 1 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 @_ZNSaISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %_M_head, i8 0, i64 8, i1 false) - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #5 + %_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 1 dereferenceable(8) %_M_impl) #9 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 { +; 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 1 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 @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev(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 + %_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 1 %_M_head, i8 0, i64 8, i1 false) + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 1 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 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_next, align 8 - ret void -} +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 @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev(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 @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_next, align 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 1 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 - %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) + %_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 1 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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS4_(ptr noundef nonnull align 1 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,8 +449,8 @@ 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 - %1 = load ptr, ptr %_M_next, align 8 + %_M_next = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_next, align 1 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 - %6 = load ptr, ptr %_M_next2, align 8 + %_M_next2 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %5, i32 0, i32 0 + %6 = load ptr, ptr %_M_next2, align 1 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 1 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 1 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 1 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 1 + %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,53 +503,46 @@ 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(16) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 + %_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 1 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 { +define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS0_E(ptr noundef nonnull align 1 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,48 +550,42 @@ 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 1 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 1 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) + 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 } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this1) #9 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 1 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 + %_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 1 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 @@ -701,132 +623,127 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 1 dereferenceable(8) %__args) #0 comdat align 2 { entry: - %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__to = alloca ptr, align 8 %__thing = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - store ptr %__pos.coerce, ptr %coerce.dive, align 8 + %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 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 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) + %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef nonnull align 1 dereferenceable(8) %1) store ptr %call, ptr %__thing, align 8 %2 = load ptr, ptr %__to, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_next, align 8 + %_M_next = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %_M_next, align 1 %4 = load ptr, ptr %__thing, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 - store ptr %3, ptr %_M_next2, align 8 + %_M_next2 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 + store ptr %3, ptr %_M_next2, align 1 %5 = load ptr, ptr %__thing, align 8 %6 = load ptr, ptr %__to, align 8 - %_M_next3 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 - store ptr %5, ptr %_M_next3, align 8 + %_M_next3 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 + store ptr %5, ptr %_M_next3, align 1 %7 = load ptr, ptr %__to, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %_M_next4, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 + %8 = load ptr, ptr %_M_next4, align 1 ret ptr %8 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_head) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) + %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 dereferenceable(8) %6, ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 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 1 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() + store ptr %0, ptr %_M_node, align 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..4a97ffe72 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc' +source_filename = "/root/test/once_more/SVF/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" } @@ -12,8 +13,8 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::_Fwd_list_iterator" = type { ptr } %"struct.std::_Fwd_list_const_iterator" = type { ptr } %"struct.std::_Fwd_list_node" = type { %"struct.std::_Fwd_list_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 8>::type" } -%"union.std::aligned_storage<8, 8>::type" = type { [8 x i8] } +%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 1>::type" } +%"union.std::aligned_storage<8, 1>::type" = type { [8 x i8] } $_ZNSt12forward_listI1ASaIS0_EEC2Ev = comdat any @@ -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,61 +229,45 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::forward_list", align 8 - %a = alloca %class.A, align 8 + %alist = alloca %"class.std::forward_list", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_Fwd_list_iterator", align 8 + %it = alloca %"struct.std::_Fwd_list_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %alist, ptr noundef nonnull align 8 dereferenceable(8) %a) + call void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %alist) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %a) #9 + invoke void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 1 dereferenceable(8) %alist, ptr noundef nonnull align 1 dereferenceable(8) %a) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = call ptr @_ZNSt12forward_listI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %it, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 + %call = call ptr @_ZNSt12forward_listI1ASaIS0_EE5beginEv(ptr noundef nonnull align 1 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 1 + %call1 = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorI1AEdeEv(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 + call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(8) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -327,145 +289,131 @@ 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %__val) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__val.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__val, ptr %__val.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 + %call = call ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 1 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 1 %0 = load ptr, ptr %__val.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %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 1 + %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 1 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 1 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt12forward_listI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt12forward_listI1ASaIS0_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Fwd_list_iterator", align 8 + %retval = alloca %"struct.std::_Fwd_list_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - call void @_ZNSt18_Fwd_list_iteratorI1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 + %_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 1 + call void @_ZNSt18_Fwd_list_iteratorI1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 1 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 1 ret ptr %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorI1AEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 + %_M_node = getelementptr inbounds nuw %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 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 + call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 dereferenceable(8) %this1) #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_EEC2Ev(ptr noundef nonnull align 1 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 @_ZNSaISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %_M_head, i8 0, i64 8, i1 false) - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #5 + %_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 1 dereferenceable(8) %_M_impl) #9 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 { +; 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 1 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 @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev(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 + %_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 1 %_M_head, i8 0, i64 8, i1 false) + call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 1 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 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_next, align 8 - ret void -} +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 @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev(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 @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_next, align 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 1 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 - %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) + %_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 1 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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS4_(ptr noundef nonnull align 1 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,8 +467,8 @@ 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 - %1 = load ptr, ptr %_M_next, align 8 + %_M_next = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_next, align 1 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 - %6 = load ptr, ptr %_M_next2, align 8 + %_M_next2 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %5, i32 0, i32 0 + %6 = load ptr, ptr %_M_next2, align 1 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 1 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 1 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 1 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 1 + %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,53 +521,46 @@ 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 + %_M_impl = getelementptr inbounds nuw %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 ret ptr %_M_impl } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(16) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 + %_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 1 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 { +define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS0_E(ptr noundef nonnull align 1 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,48 +568,42 @@ 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 1 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 1 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) + 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 } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this1) #9 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 1 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 + %_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 1 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 @@ -719,132 +641,127 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 1 dereferenceable(8) %__args) #0 comdat align 2 { entry: - %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__to = alloca ptr, align 8 %__thing = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - store ptr %__pos.coerce, ptr %coerce.dive, align 8 + %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 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 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) + %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef nonnull align 1 dereferenceable(8) %1) store ptr %call, ptr %__thing, align 8 %2 = load ptr, ptr %__to, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_next, align 8 + %_M_next = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %_M_next, align 1 %4 = load ptr, ptr %__thing, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 - store ptr %3, ptr %_M_next2, align 8 + %_M_next2 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 + store ptr %3, ptr %_M_next2, align 1 %5 = load ptr, ptr %__thing, align 8 %6 = load ptr, ptr %__to, align 8 - %_M_next3 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 - store ptr %5, ptr %_M_next3, align 8 + %_M_next3 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 + store ptr %5, ptr %_M_next3, align 1 %7 = load ptr, ptr %__to, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %_M_next4, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 + %8 = load ptr, ptr %_M_next4, align 1 ret ptr %8 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 8 + %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_head) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) + %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 dereferenceable(8) %6, ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 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 1 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 + store ptr %0, ptr %_M_node, align 1 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 1 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() + store ptr %0, ptr %_M_node, align 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..fd7df48b5 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/func-ptr-in-class.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,55 +220,55 @@ 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 1 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 - store ptr @_Z1fPi, ptr %pf, align 8 + %pf = getelementptr inbounds nuw %class.A, ptr %0, i32 0, i32 1 + store ptr @_Z1fPi, ptr %pf, align 1 %1 = load ptr, ptr %a, align 8 - %pg = getelementptr inbounds %class.A, ptr %1, i32 0, i32 2 - store ptr @_Z1gPi, ptr %pg, align 8 + %pg = getelementptr inbounds nuw %class.A, ptr %1, i32 0, i32 2 + store ptr @_Z1gPi, ptr %pg, align 1 %2 = load ptr, ptr %a, align 8 - %pf1 = getelementptr inbounds %class.A, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %pf1, align 8 + %pf1 = getelementptr inbounds nuw %class.A, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %pf1, align 1 %4 = load ptr, ptr %ptr_f, align 8 call void %3(ptr noundef %4) %5 = load ptr, ptr %a, align 8 - %pg2 = getelementptr inbounds %class.A, ptr %5, i32 0, i32 2 - %6 = load ptr, ptr %pg2, align 8 + %pg2 = getelementptr inbounds nuw %class.A, ptr %5, i32 0, i32 2 + %6 = load ptr, ptr %pg2, align 1 %7 = load ptr, ptr %ptr_g, align 8 call void %6(ptr noundef %7) %8 = load ptr, ptr %a, align 8 %9 = load ptr, ptr %ptr_f_v, align 8 - %vtable = load ptr, ptr %8, align 8 + %vtable = load ptr, ptr %8, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %10 = load ptr, ptr %vfn, align 8 - call void %10(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef %9) + call void %10(ptr noundef nonnull align 1 dereferenceable(24) %8, ptr noundef %9) %11 = load ptr, ptr %a, align 8 %12 = load ptr, ptr %ptr_g_v, align 8 - %vtable3 = load ptr, ptr %11, align 8 + %vtable3 = load ptr, ptr %11, align 1 %vfn4 = getelementptr inbounds ptr, ptr %vtable3, i64 1 %13 = load ptr, ptr %vfn4, align 8 - call void %13(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef %12) + call void %13(ptr noundef nonnull align 1 dereferenceable(24) %11, ptr noundef %12) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -291,7 +291,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..937dcc208 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,14 +1,15 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/global-obj-in-array.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/global-obj-in-array.cpp" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%class.A = type <{ ptr, i32, [4 x i8] }> -%struct.TableEntry = type { i32, ptr } -%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" } -%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr } -%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" } +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/global-obj-in-array.cpp.bc' +source_filename = "/root/test/once_more/SVF/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.A = type <{ ptr, i32 }> +%struct.TableEntry = type <{ i32, ptr }> +%"class.std::basic_ostream" = type <{ ptr, %"class.std::basic_ios" }> +%"class.std::basic_ios" = type <{ %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }> +%"class.std::ios_base" = type <{ ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }> %"struct.std::ios_base::_Words" = type { ptr, i64 } %"class.std::locale" = type { ptr } @@ -18,47 +19,29 @@ $_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 @globalObj = dso_local global i32 10, align 4 @globalPtr = dso_local global ptr @globalObj, align 8 -@a1 = dso_local global %class.A zeroinitializer, align 8 -@a2 = dso_local global %class.A zeroinitializer, align 8 -@a3 = dso_local global %class.A zeroinitializer, align 8 -@theTable = dso_local global [4 x %struct.TableEntry] [%struct.TableEntry { i32 1, ptr @a1 }, %struct.TableEntry { i32 2, ptr @a2 }, %struct.TableEntry { i32 3, ptr @a3 }, %struct.TableEntry zeroinitializer], align 16 +@a1 = dso_local global %class.A zeroinitializer, align 1 +@a2 = dso_local global %class.A zeroinitializer, align 1 +@a3 = dso_local global %class.A zeroinitializer, align 1 +@theTable = dso_local global [4 x %struct.TableEntry] [%struct.TableEntry <{ i32 1, ptr @a1 }>, %struct.TableEntry <{ i32 2, ptr @a2 }>, %struct.TableEntry <{ i32 3, ptr @a3 }>, %struct.TableEntry zeroinitializer], align 16 @_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 @_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZSt4cout = external global %"class.std::basic_ostream", align 8 -@.str.6 = private unnamed_addr constant [7 x i8] c"data: \00", align 1 +@_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 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) + call void @_ZN1AC2Ei(ptr noundef nonnull align 1 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 1 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 1 + %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 + store i32 %0, ptr %data, align 1 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) + call void @_ZN1AC2Ei(ptr noundef nonnull align 1 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) + call void @_ZN1AC2Ei(ptr noundef nonnull align 1 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,27 +225,27 @@ 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 - %1 = load i32, ptr %num, align 8 + %num = getelementptr inbounds nuw %struct.TableEntry, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %num, align 1 %cmp = icmp ne i32 %1, 0 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load ptr, ptr %theEntry, align 8 - %p1 = getelementptr inbounds %struct.TableEntry, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %p1, align 8 + %p1 = getelementptr inbounds nuw %struct.TableEntry, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %p1, align 1 store ptr %3, ptr %p, align 8 %4 = load ptr, ptr %p, align 8 %5 = load ptr, ptr @globalPtr, align 8 - %vtable = load ptr, ptr %4, align 8 + %vtable = load ptr, ptr %4, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %6 = load ptr, ptr %vfn, align 8 - call void %6(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef %5) + call void %6(ptr noundef nonnull align 1 dereferenceable(12) %4, ptr noundef %5) br label %for.inc for.inc: ; preds = %for.body %7 = load ptr, ptr %theEntry, align 8 - %incdec.ptr = getelementptr inbounds %struct.TableEntry, ptr %7, i32 1 + %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,46 +254,42 @@ 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 1 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 - %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) + %call = call noundef nonnull align 1 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 1 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 1 + %call2 = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 1 dereferenceable(8) %call, i32 noundef %0) + %call3 = call noundef nonnull align 1 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 1 dereferenceable(8) %call2, ptr noundef @.str) %1 = load ptr, ptr %p.addr, align 8 %2 = load ptr, ptr @globalPtr, align 8 call void @_Z9MUSTALIASPvS_(ptr noundef %1, ptr noundef %2) ret void } -declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1 +declare noundef nonnull align 1 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 1 dereferenceable(8), ptr noundef) #1 -declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #1 +declare noundef nonnull align 1 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..97500868c 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/list-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 { @@ -263,43 +243,43 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::__cxx11::list", align 8 - %a = alloca %class.A, align 8 + %alist = alloca %"class.std::__cxx11::list", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_List_const_iterator", align 8 - %ref.tmp1 = alloca %"struct.std::_List_iterator", align 8 + %it = alloca %"struct.std::_List_const_iterator", align 1 + %ref.tmp1 = alloca %"struct.std::_List_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #10 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(24) %alist) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + invoke void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 1 dereferenceable(24) %alist, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %ref.tmp1, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - call void @_ZNSt20_List_const_iteratorIPK1AEC2ERKSt14_List_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp1) #10 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt20_List_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #10 + %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 1 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 1 + call void @_ZNSt20_List_const_iteratorIPK1AEC2ERKSt14_List_iteratorIS2_E(ptr noundef nonnull align 1 dereferenceable(8) %it, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp1) #9 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt20_List_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 1 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 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(24) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -321,89 +301,89 @@ 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_List_iterator", align 8 + %agg.tmp = alloca %"struct.std::_List_iterator", 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 - %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 + %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 1 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 1 %0 = load ptr, ptr %__x.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 1 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_List_iterator", align 8 + %retval = alloca %"struct.std::_List_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %_M_node, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 + %_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 1 + call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_node2, align 1 + store ptr %1, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt20_List_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt20_List_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = invoke noundef ptr @_ZNKSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) + %_M_node = getelementptr inbounds nuw %"struct.std::_List_const_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = invoke noundef ptr @_ZNKSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(24) %0) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -413,89 +393,75 @@ 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 1 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 1 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 1 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 1 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 1 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 1 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 1 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 1 dereferenceable(24) %this1) #9 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_prev = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 1 - store ptr %this1, ptr %_M_prev, align 8 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 0 - store ptr %this1, ptr %_M_next, align 8 - %_M_size = getelementptr inbounds %"struct.std::__detail::_List_node_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_size, align 8 + %_M_prev = getelementptr inbounds nuw %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 1 + store ptr %this1, ptr %_M_prev, align 1 + %_M_next = getelementptr inbounds nuw %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 0 + store ptr %this1, ptr %_M_next, align 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 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 1 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 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_next, align 8 + %_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 1 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,58 +517,68 @@ while.body: ; preds = %while.cond %2 = load ptr, ptr %__cur, align 8 store ptr %2, ptr %__tmp, align 8 %3 = load ptr, ptr %__tmp, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %_M_next4, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::__detail::_List_node_base", ptr %3, i32 0, i32 0 + %4 = load ptr, ptr %_M_next4, align 1 store ptr %4, ptr %__cur, align 8 %5 = load ptr, ptr %__tmp, align 8 - %call = invoke noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %5) + %call = invoke noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(24) %5) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %while.body store ptr %call, ptr %__val, align 8 - %call5 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 + %call5 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 1 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_List_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #10 + %_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 1 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 } @@ -607,130 +587,90 @@ 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 { +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 1 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 { +define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_put_nodeEPSt10_List_nodeIS3_E(ptr noundef nonnull align 1 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 } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #10 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this1) #9 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 + %_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 @@ -739,77 +679,96 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { entry: - %__position = alloca %"struct.std::_List_iterator", align 8 + %__position = alloca %"struct.std::_List_iterator", align 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__tmp = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 + store ptr %__position.coerce, ptr %coerce.dive, align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_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) + %call = call noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) store ptr %call, ptr %__tmp, align 8 %1 = load ptr, ptr %__tmp, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 - %2 = load ptr, ptr %_M_node, align 8 - call void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef %2) #10 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1) + %_M_node = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 + %2 = load ptr, ptr %_M_node, align 1 + call void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 1 dereferenceable(16) %1, ptr noundef %2) #9 + call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 1 dereferenceable(24) %this1, i64 noundef 1) ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_List_iterator", align 8 + %retval = alloca %"struct.std::_List_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_node) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 1 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 %__alloc = alloca ptr, align 8 - %__guard = alloca %"struct.std::__allocated_ptr", align 8 + %__guard = alloca %"struct.std::__allocated_ptr", align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) + %call = call noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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) + %call3 = call noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 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 1 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 1 dereferenceable(16) %__guard, ptr null) #9 + %11 = load ptr, ptr %__p, align 8 + call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev(ptr noundef nonnull align 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 1 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -817,28 +776,34 @@ 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 - %1 = load i64, ptr %_M_size, align 8 + %_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 1 %add = add i64 %1, %0 - store i64 %add, ptr %_M_size, align 8 + store i64 %add, ptr %_M_size, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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,62 +812,55 @@ 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 + store ptr %0, ptr %_M_alloc, align 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 + store ptr %1, ptr %_M_ptr, align 1 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 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 1 dereferenceable(16) %this, ptr %0) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %0, ptr %.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_ptr, align 8 + %_M_ptr = getelementptr inbounds nuw %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_ptr, align 1 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 1 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 - %0 = load ptr, ptr %_M_ptr, align 8 + %_M_ptr = getelementptr inbounds nuw %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 + %0 = load ptr, ptr %_M_ptr, align 1 %cmp = icmp ne ptr %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %_M_alloc = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_alloc, align 8 - %_M_ptr2 = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_ptr2, align 8 - invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad + %_M_alloc = getelementptr inbounds nuw %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 0 + %1 = load ptr, ptr %_M_alloc, align 1 + %_M_ptr2 = getelementptr inbounds nuw %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 + %2 = load ptr, ptr %_M_ptr2, align 1 + 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,112 +888,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_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 1 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 + store ptr %0, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_List_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #10 + %_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 1 dereferenceable(8) %_M_storage) #9 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #10 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this1) #9 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 + %_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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..e28d277a9 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/list-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 { @@ -256,8 +236,8 @@ entry: %argc.addr = alloca i32, align 4 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::__cxx11::list", align 8 - %a = alloca %class.A, align 8 + %alist = alloca %"class.std::__cxx11::list", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -266,27 +246,27 @@ 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 1 dereferenceable(24) %alist) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + invoke void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 1 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 1 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 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(24) %alist) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -308,140 +288,126 @@ 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_List_iterator", align 8 + %agg.tmp = alloca %"struct.std::_List_iterator", 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 - %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 + %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 1 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 1 %0 = load ptr, ptr %__x.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 1 + call void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_List_iterator", align 8 + %ref.tmp = alloca %"struct.std::_List_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #10 + %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 1 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 1 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorIPK1AEdeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 1 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 1 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 1 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 1 dereferenceable(24) %this1) #9 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_prev = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 1 - store ptr %this1, ptr %_M_prev, align 8 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 0 - store ptr %this1, ptr %_M_next, align 8 - %_M_size = getelementptr inbounds %"struct.std::__detail::_List_node_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_size, align 8 + %_M_prev = getelementptr inbounds nuw %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 1 + store ptr %this1, ptr %_M_prev, align 1 + %_M_next = getelementptr inbounds nuw %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 0 + store ptr %this1, ptr %_M_next, align 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 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 1 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 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_next, align 8 + %_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 1 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,58 +463,68 @@ while.body: ; preds = %while.cond %2 = load ptr, ptr %__cur, align 8 store ptr %2, ptr %__tmp, align 8 %3 = load ptr, ptr %__tmp, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %_M_next4, align 8 + %_M_next4 = getelementptr inbounds nuw %"struct.std::__detail::_List_node_base", ptr %3, i32 0, i32 0 + %4 = load ptr, ptr %_M_next4, align 1 store ptr %4, ptr %__cur, align 8 %5 = load ptr, ptr %__tmp, align 8 - %call = invoke noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %5) + %call = invoke noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(24) %5) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %while.body store ptr %call, ptr %__val, align 8 - %call5 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 + %call5 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 1 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_List_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #10 + %_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 1 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 } @@ -553,130 +533,90 @@ 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 { +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 1 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 { +define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_put_nodeEPSt10_List_nodeIS3_E(ptr noundef nonnull align 1 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 } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #10 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this1) #9 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 + %_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 @@ -685,77 +625,96 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { entry: - %__position = alloca %"struct.std::_List_iterator", align 8 + %__position = alloca %"struct.std::_List_iterator", align 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__tmp = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 + %coerce.dive = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 + store ptr %__position.coerce, ptr %coerce.dive, align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_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) + %call = call noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) store ptr %call, ptr %__tmp, align 8 %1 = load ptr, ptr %__tmp, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 - %2 = load ptr, ptr %_M_node, align 8 - call void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef %2) #10 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1) + %_M_node = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 + %2 = load ptr, ptr %_M_node, align 1 + call void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 1 dereferenceable(16) %1, ptr noundef %2) #9 + call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 1 dereferenceable(24) %this1, i64 noundef 1) ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_List_iterator", align 8 + %retval = alloca %"struct.std::_List_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_node) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 1 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 %__alloc = alloca ptr, align 8 - %__guard = alloca %"struct.std::__allocated_ptr", align 8 + %__guard = alloca %"struct.std::__allocated_ptr", align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) + %call = call noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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 1 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) + %call3 = call noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 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 1 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 1 dereferenceable(16) %__guard, ptr null) #9 + %11 = load ptr, ptr %__p, align 8 + call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev(ptr noundef nonnull align 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 1 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -763,28 +722,34 @@ 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 - %1 = load i64, ptr %_M_size, align 8 + %_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 1 %add = add i64 %1, %0 - store i64 %add, ptr %_M_size, align 8 + store i64 %add, ptr %_M_size, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 1 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 1 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,62 +758,55 @@ 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 + store ptr %0, ptr %_M_alloc, align 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 + store ptr %1, ptr %_M_ptr, align 1 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 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 1 dereferenceable(16) %this, ptr %0) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %0, ptr %.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_ptr, align 8 + %_M_ptr = getelementptr inbounds nuw %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_ptr, align 1 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 1 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 - %0 = load ptr, ptr %_M_ptr, align 8 + %_M_ptr = getelementptr inbounds nuw %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 + %0 = load ptr, ptr %_M_ptr, align 1 %cmp = icmp ne ptr %0, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %_M_alloc = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_alloc, align 8 - %_M_ptr2 = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_ptr2, align 8 - invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad + %_M_alloc = getelementptr inbounds nuw %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 0 + %1 = load ptr, ptr %_M_alloc, align 1 + %_M_ptr2 = getelementptr inbounds nuw %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 + %2 = load ptr, ptr %_M_ptr2, align 1 + 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,110 +834,97 @@ 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 1 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 + store ptr %0, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_List_iterator", align 8 + %retval = alloca %"struct.std::_List_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %_M_node, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 + %_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 1 + call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 1 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 1 ret ptr %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorIPK1AEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) + %_M_node = getelementptr inbounds nuw %"struct.std::_List_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..80dbb11c7 100644 --- a/test_cases_bc/basic_cpp_tests/map-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/map-1.cpp.bc @@ -1,26 +1,27 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/map-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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_header" = type { %"struct.std::_Rb_tree_node_base", i64 } -%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } +%"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Rb_tree_impl" = type { 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 } -%"struct.std::pair.0" = type { i32, %class.A } -%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }> +%"struct.std::pair.0" = type <{ i32, %class.A }> +%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8 }> %"struct.std::_Rb_tree_iterator" = type { ptr } %"struct.std::_Rb_tree_const_iterator" = type { ptr } -%"struct.std::pair.2" = type { i32, %class.A } +%"struct.std::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.__gnu_cxx::__aligned_membuf" = type { [12 x i8] } %"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,89 +324,70 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %amap = alloca %"class.std::map", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca %"struct.std::pair.0", align 8 + %amap = alloca %"class.std::map", align 1 + %a = alloca %class.A, align 1 + %ref.tmp = alloca %"struct.std::pair.0", align 1 %ref.tmp1 = alloca i32, align 4 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 8 + %coerce = alloca %"struct.std::pair", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %it = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 + call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(37) %amap) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(12) %ref.tmp, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp1, ptr noundef nonnull align 1 dereferenceable(8) %a) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = invoke { ptr, i8 } @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE6insertIS3_IiS0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_(ptr noundef nonnull align 8 dereferenceable(48) %amap, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) + %call = invoke { ptr, i8 } @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE6insertIS3_IiS0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_(ptr noundef nonnull align 1 dereferenceable(37) %amap, ptr noundef nonnull align 1 dereferenceable(12) %ref.tmp) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - %call4 = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp3, i32 0, i32 0 - store ptr %call4, ptr %coerce.dive, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKi1AEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp3) #5 - %call5 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %second = getelementptr inbounds %"struct.std::pair.2", ptr %call5, i32 0, i32 1 + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %coerce, ptr align 8 %tmp.coerce, i64 9, i1 false) + %call4 = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 + call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKi1AEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 1 dereferenceable(8) %it, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp3) #11 + %call5 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEEptEv(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %4, align 8 + %0 = load ptr, ptr %aptr, align 8 + %1 = load ptr, ptr %ptr, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %6 = load ptr, ptr %vfn, align 8 - invoke void %6(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) + %2 = load ptr, ptr %vfn, align 8 + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont2 store i32 0, ptr %retval, align 4 - call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - %7 = load i32, ptr %retval, align 4 - ret i32 %7 + call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %amap) #11 + %3 = load i32, ptr %retval, align 4 + ret i32 %3 lpad: ; preds = %invoke.cont2, %invoke.cont, %entry - %8 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } cleanup - %9 = extractvalue { ptr, i32 } %8, 0 - store ptr %9, ptr %exn.slot, align 8 - %10 = extractvalue { ptr, i32 } %8, 1 - store i32 %10, ptr %ehselector.slot, align 4 - call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 + %5 = extractvalue { ptr, i32 } %4, 0 + store ptr %5, ptr %exn.slot, align 8 + %6 = extractvalue { ptr, i32 } %4, 1 + store i32 %6, ptr %ehselector.slot, align 4 + call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %amap) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -397,51 +398,97 @@ 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 1 dereferenceable(37) %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 1 dereferenceable(37) %_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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE6insertIS3_IiS0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, i8 } @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE6insertIS3_IiS0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 1 dereferenceable(12) %__x) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::pair", align 1 %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 1 + %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 1 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %ref.tmp13 = alloca i8, align 1 + %ref.tmp14 = alloca i8, align 1 + %retval.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::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 1 dereferenceable(37) %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 1 + %call2 = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE3endEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 + %call4 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_(ptr noundef nonnull align 1 dereferenceable(8) %__i, ptr noundef nonnull align 1 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 1 dereferenceable(37) %this1) + %2 = load ptr, ptr %__k, align 8 + %call6 = call noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKi1AEEdeEv(ptr noundef nonnull align 1 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 1 dereferenceable(8) %agg.tmp, ptr noundef nonnull align 1 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 1 + %call11 = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE12emplace_hintIJS3_IiS0_EEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %this1, ptr %5, ptr noundef nonnull align 1 dereferenceable(12) %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 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %__i, ptr align 1 %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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 dereferenceable(8) %__i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp14) + br label %return + +return: ; preds = %if.end, %if.then + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %6 = load { ptr, i8 }, ptr %retval.coerce, 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 1 dereferenceable(12) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x, ptr noundef nonnull align 1 dereferenceable(8) %__y) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -450,128 +497,125 @@ 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 + store i32 %1, ptr %first, align 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 1 dereferenceable(8) %second, ptr noundef nonnull align 1 dereferenceable(8) %2) #11 ret void } declare i32 @__gxx_personality_v0(...) +; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 + ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 + %_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 1 dereferenceable(37) %_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 1 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %0 = load ptr, ptr %coerce.dive2, align 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_node2, align 1 + store ptr %1, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEEptEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %0) ret ptr %call } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %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_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 1 dereferenceable(37) %_M_t) #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_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(37) %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 @_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #5 + %_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 1 dereferenceable(37) %_M_impl) #11 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 { +; 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 1 dereferenceable(37) %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_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEEC2Ev(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 1 + call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 1 dereferenceable(36) %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 1 dereferenceable(36) %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 - store i32 0, ptr %_M_color, align 8 - invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this1) + %_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 1 + invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 1 dereferenceable(36) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -581,45 +625,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 { +define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 1 dereferenceable(36) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - store ptr null, ptr %_M_parent, align 8 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header3, i32 0, i32 2 - store ptr %_M_header2, ptr %_M_left, align 8 - %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header5, i32 0, i32 3 - store ptr %_M_header4, ptr %_M_right, align 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_node_count, align 8 + %_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 1 + %_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 1 + %_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 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 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) #5 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -628,7 +663,7 @@ declare ptr @__cxa_begin_catch(ptr) declare void @_ZSt9terminatev() ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -641,43 +676,43 @@ 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 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 1 dereferenceable(37) %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 - 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) + %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this1) #11 + invoke void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %_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 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -694,13 +729,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 void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) + %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 @@ -710,26 +745,25 @@ while.end: ; preds = %while.cond } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { 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 1 dereferenceable(37) %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 1 dereferenceable(37) %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,8 +773,8 @@ entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_right, align 8 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_right, align 1 ret ptr %1 } @@ -750,13 +784,13 @@ entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 - %1 = load ptr, ptr %_M_left, align 8 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 + %1 = load ptr, ptr %_M_left, align 1 ret ptr %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__p) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -764,432 +798,391 @@ 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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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) + %call2 = invoke noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %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 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 { +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 1 dereferenceable(37) %this) #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 + %this.addr = 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 ptr %_M_impl } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 1 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_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl + %_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 1 dereferenceable(12) %_M_storage) #11 + ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %this1) #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 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_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 @_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 + %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__p, ptr %__p.addr, align 8 + store i64 %__n, ptr %__n.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__p.addr, align 8 + %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 @_ZdlPvm(ptr noundef, i64 noundef) #6 + ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE9_M_mbeginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 1 + %_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 1 + ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +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 %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 + ret void } ; 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 { +define linkonce_odr dso_local ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE11lower_boundERS4_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x) #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 + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %this.addr = alloca ptr, align 8 + %__x.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + store ptr %__x, ptr %__x.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_t = getelementptr inbounds 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 1 dereferenceable(37) %_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 1 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 1 + ret ptr %1 +} + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_(ptr noundef nonnull align 1 dereferenceable(8) %__x, ptr noundef nonnull align 1 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 1 + %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 1 + %cmp = icmp eq ptr %1, %3 + ret i1 %cmp } ; 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 ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE3endEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void + %_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 1 dereferenceable(37) %_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 1 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %0 = load ptr, ptr %coerce.dive2, align 1 + ret ptr %0 } -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNKSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE8key_compEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #0 comdat align 2 { entry: %this.addr = 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 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + %_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 1 dereferenceable(37) %_M_t) ret void } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; 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 - ret void + %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 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKi1AEEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__z = alloca ptr, align 8 - %__res = alloca %"struct.std::pair.4", align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp8 = alloca i8, align 1 - %ref.tmp10 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp12 = alloca i8, align 1 store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_create_nodeIJS0_IiS2_EEEEPSt13_Rb_tree_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 8 dereferenceable(16) %0) - store ptr %call, ptr %__z, align 8 - %1 = load ptr, ptr %__z, align 8 - %call2 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E(ptr noundef %1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call4 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE24_M_get_insert_unique_posERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 4 dereferenceable(4) %call2) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont - %2 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 0 - %3 = extractvalue { ptr, ptr } %call4, 0 - store ptr %3, ptr %2, align 8 - %4 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 1 - %5 = extractvalue { ptr, ptr } %call4, 1 - store ptr %5, ptr %4, align 8 - %second = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 1 - %6 = load ptr, ptr %second, align 8 - %tobool = icmp ne ptr %6, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %invoke.cont3 - %first = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 0 - %7 = load ptr, ptr %first, align 8 - %second5 = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 1 - %8 = load ptr, ptr %second5, align 8 - %9 = load ptr, ptr %__z, align 8 - %call7 = invoke ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSB_PSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %7, ptr noundef %8, ptr noundef %9) - to label %invoke.cont6 unwind label %lpad - -invoke.cont6: ; preds = %if.then - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call7, ptr %coerce.dive, align 8 - store i8 1, ptr %ref.tmp8, align 1 - invoke void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IS4_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp8) - to label %invoke.cont9 unwind label %lpad - -invoke.cont9: ; preds = %invoke.cont6 - br label %return - -lpad: ; preds = %if.end, %invoke.cont6, %if.then, %invoke.cont, %entry - %10 = landingpad { ptr, i32 } - catch ptr null - %11 = extractvalue { ptr, i32 } %10, 0 - store ptr %11, ptr %exn.slot, align 8 - %12 = extractvalue { ptr, i32 } %10, 1 - store i32 %12, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %13 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %14 = load ptr, ptr %__z, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %14) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad14 - -if.end: ; preds = %invoke.cont3 - %15 = load ptr, ptr %__z, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %15) #5 - %first11 = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 0 - %16 = load ptr, ptr %first11, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp10, ptr noundef %16) #5 - store i8 0, ptr %ref.tmp12, align 1 - invoke void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IS4_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp10, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp12) - to label %invoke.cont13 unwind label %lpad - -invoke.cont13: ; preds = %if.end - br label %return - -lpad14: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont15 unwind label %terminate.lpad - -invoke.cont15: ; preds = %lpad14 - br label %eh.resume - -try.cont: ; No predecessors! - call void @llvm.trap() - unreachable - -return: ; preds = %invoke.cont13, %invoke.cont9 - %20 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %20 - -eh.resume: ; preds = %invoke.cont15 - %exn16 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn16, 0 - %lpad.val17 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val17 - -terminate.lpad: ; preds = %lpad14 - %21 = landingpad { ptr, i32 } - catch ptr null - %22 = extractvalue { ptr, i32 } %21, 0 - call void @__clang_call_terminate(ptr %22) #15 - unreachable - -unreachable: ; preds = %catch - unreachable + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %0) + ret ptr %call } ; 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 { +define linkonce_odr dso_local ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE12emplace_hintIJS3_IiS0_EEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr %__pos.coerce, ptr noundef nonnull align 1 dereferenceable(12) %__args) #0 comdat align 2 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %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 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %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 + %_M_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %agg.tmp, ptr align 1 %__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 1 + %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 1 dereferenceable(37) %_M_t, ptr %1, ptr noundef nonnull align 1 dereferenceable(12) %0) + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive3, align 1 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %2 = load ptr, ptr %coerce.dive4, align 1 ret ptr %2 } -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE24_M_get_insert_unique_posERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +; 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 1 dereferenceable(9) %this, ptr noundef nonnull align 1 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #2 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 + %__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 1 %first, ptr align 1 %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 1 + 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 1 dereferenceable(37) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 1 dereferenceable(37) %this1) #11 + %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive4, align 1 + 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 1 dereferenceable(37) %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 1 + %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 1 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 1 + 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 1 dereferenceable(37) %this) #2 comdat align 2 { +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 1 + %_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 @@ -1199,127 +1192,513 @@ entry: %ref.tmp = alloca %"struct.std::_Select1st", align 1 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - %call1 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt10_Select1stISt4pairIKi1AEEclERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %call) + %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %0) + %call1 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt10_Select1stISt4pairIKi1AEEclERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(12) %call) ret ptr %call1 } -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSB_PSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef %__z) #0 comdat align 2 { +; 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 1 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 1 + 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 1 dereferenceable(12) %__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 1 dereferenceable(40) %this) #2 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_storage = getelementptr inbounds 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 1 dereferenceable(12) %_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 1 dereferenceable(12) %this) #2 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(12) %this) #2 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_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 1 dereferenceable(37) %this) #2 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %this.addr = 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 1 + %_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 1 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 1 + 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 1 dereferenceable(37) %this) #2 comdat align 2 { +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: 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 1 dereferenceable(37) %this, ptr %__pos.coerce, ptr noundef nonnull align 1 dereferenceable(12) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %this.addr = alloca ptr, align 8 + %__args.addr = alloca ptr, align 8 + %__z = alloca %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Auto_node", align 1 + %__res = alloca %"struct.std::pair.4", align 1 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %exn.slot = alloca ptr, align 8 + %ehselector.slot = alloca i32, align 4 + %agg.tmp5 = alloca %"struct.std::pair.4", align 1 + %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 1 + store ptr %this, ptr %this.addr, align 8 + store ptr %__args, ptr %__args.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %0 = load ptr, ptr %__args.addr, align 8 + call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_nodeC2IJS0_IiS2_EEEERS9_DpOT_(ptr noundef nonnull align 1 dereferenceable(16) %__z, ptr noundef nonnull align 1 dereferenceable(37) %this1, ptr noundef nonnull align 1 dereferenceable(12) %0) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %agg.tmp, ptr align 1 %__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 1 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 1 + %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 1 dereferenceable(37) %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 1 + %4 = getelementptr inbounds nuw { ptr, ptr }, ptr %__res, i32 0, i32 1 + %5 = extractvalue { ptr, ptr } %call4, 1 + store ptr %5, ptr %4, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__res, i32 0, i32 1 + %6 = load ptr, ptr %second, align 1 + %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 1 %agg.tmp5, ptr align 1 %__res, i64 16, i1 false) + %7 = getelementptr inbounds nuw { ptr, ptr }, ptr %agg.tmp5, i32 0, i32 0 + %8 = load ptr, ptr %7, align 1 + %9 = getelementptr inbounds nuw { ptr, ptr }, ptr %agg.tmp5, i32 0, i32 1 + %10 = load ptr, ptr %9, align 1 + %call7 = invoke ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE10_Auto_node9_M_insertES0_IPSt18_Rb_tree_node_baseSC_E(ptr noundef nonnull align 1 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 1 + 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 1 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 1 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 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 1 + 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 1 dereferenceable(16) %this, ptr noundef nonnull align 1 dereferenceable(37) %__t, ptr noundef nonnull align 1 dereferenceable(12) %__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 1 + %_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 1 dereferenceable(37) %1, ptr noundef nonnull align 1 dereferenceable(12) %2) + store ptr %call, ptr %_M_node, align 1 + ret void +} + +; 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 1 dereferenceable(37) %this, ptr %__position.coerce, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::pair.4", align 1 + %__position = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %this.addr = alloca ptr, align 8 + %__k.addr = alloca ptr, align 8 + %__pos = alloca %"struct.std::_Rb_tree_iterator", align 1 + %ref.tmp = alloca ptr, align 8 + %__before = alloca %"struct.std::_Rb_tree_iterator", align 1 + %ref.tmp35 = alloca ptr, align 8 + %__after = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 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 ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEE13_M_const_castEv(ptr noundef nonnull align 1 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 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call3 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv(ptr noundef nonnull align 1 dereferenceable(37) %this1) #11 + %cmp = icmp eq ptr %0, %call3 + br i1 %cmp, label %if.then, label %if.else12 + +if.then: ; preds = %entry + %call4 = call noundef i64 @_ZNKSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 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 1 dereferenceable(37) %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 1 + %6 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %7 = extractvalue { ptr, ptr } %call11, 1 + store ptr %7, ptr %6, align 1 + 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 1 + %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 1 %__before, ptr align 1 %__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 1 + %call19 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_leftmostEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %this1) #11 + %call23 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_leftmostEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv(ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 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 1 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 1 dereferenceable(37) %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 1 + %18 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %19 = extractvalue { ptr, ptr } %call41, 1 + store ptr %19, ptr %18, align 1 + 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 1 + %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 1 %__after, ptr align 1 %__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 1 + %call49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_rightmostEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp52, ptr noundef nonnull align 8 dereferenceable(8) %call53) + br label %return + +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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEppEv(ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 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 1 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 1 dereferenceable(37) %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 1 + %30 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %31 = extractvalue { ptr, ptr } %call71, 1 + store ptr %31, ptr %30, align 1 + 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 1 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 1 + 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 1 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 1 + %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 1 dereferenceable(16) %this, ptr %__p.coerce0, ptr %__p.coerce1) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %__p = alloca %"struct.std::pair.4", align 1 + %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 1 + %1 = getelementptr inbounds nuw { ptr, ptr }, ptr %__p, i32 0, i32 1 + store ptr %__p.coerce1, ptr %1, align 1 + 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 1 + %first = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__p, i32 0, i32 0 + %3 = load ptr, ptr %first, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__p, i32 0, i32 1 + %4 = load ptr, ptr %second, align 1 + %_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 1 + %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 1 dereferenceable(37) %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 1 + %_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 1 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %6 = load ptr, ptr %coerce.dive3, align 1 + 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 1 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 1 + %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 1 + %_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 1 + call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 1 dereferenceable(37) %1, ptr noundef %2) #11 + br label %if.end + +if.end: ; preds = %if.then, %entry 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 noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_create_nodeIJS0_IiS2_EEEEPSt13_Rb_tree_nodeIS3_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 1 dereferenceable(12) %__args) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__x.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 %__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 - ret void + %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %this1, ptr noundef %0, ptr noundef nonnull align 1 dereferenceable(12) %1) + %2 = load ptr, ptr %__tmp, align 8 + ret ptr %2 } -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #10 - ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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: +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 1 dereferenceable(37) %this, ptr noundef %__node, ptr noundef nonnull align 1 dereferenceable(12) %__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 +1709,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 1 dereferenceable(37) %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) + %call2 = call noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %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 1 dereferenceable(12) %6, ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(37) %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 +1776,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 +1787,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 +1798,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, 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() #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.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_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 +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) #15 + 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 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 1 dereferenceable(12) %this, ptr noundef nonnull align 1 dereferenceable(12) %__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 + store i32 %1, ptr %first, align 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 1 dereferenceable(8) %second, ptr noundef nonnull align 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 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 1 dereferenceable(8) %this) #2 comdat align 2 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = 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 1 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 + 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 1 dereferenceable(37) %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 1 + %_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 1 + 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 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 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 1 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 + store ptr %1, ptr %first, align 1 + %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 + store ptr %3, ptr %second, align 1 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 1 dereferenceable(37) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { entry: + %retval = alloca %"struct.std::pair.4", align 1 %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 1 + %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 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 1 dereferenceable(37) %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 1 + %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_(ptr noundef nonnull align 1 dereferenceable(8) %__j, ptr noundef nonnull align 1 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 1 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv(ptr noundef nonnull align 1 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 1 + %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 1 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 1 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 1 + 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 1 dereferenceable(37) %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 1 + %_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 1 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 +2068,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 + store ptr %1, ptr %first, align 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 + store ptr %3, ptr %second, align 1 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv(ptr noundef nonnull align 1 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 1 + %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 1 + 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEppEv(ptr noundef nonnull align 1 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 1 + %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 1 + 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 1 dereferenceable(37) %this) #2 comdat align 2 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %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 1 + %_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 1 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 + 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 1 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 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 1 + 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 1 dereferenceable(37) %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 1 + %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 1 dereferenceable(37) %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 1 + %_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 1 dereferenceable(28) %_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 1 + %_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 1 + %inc = add i64 %8, 1 + store i64 %inc, ptr %_M_node_count, align 1 + %9 = load ptr, ptr %__z.addr, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 + 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 1 dereferenceable(28)) #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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +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 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 +2239,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..694812f28 100644 --- a/test_cases_bc/basic_cpp_tests/map-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/map-2.cpp.bc @@ -1,26 +1,27 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/map-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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_header" = type { %"struct.std::_Rb_tree_node_base", i64 } -%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } +%"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Rb_tree_impl" = type { 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 } -%"struct.std::pair.0" = type { i32, ptr } -%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }> +%"struct.std::pair.0" = type <{ i32, ptr }> +%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8 }> %"struct.std::_Rb_tree_iterator" = type { ptr } %"struct.std::_Rb_tree_const_iterator" = type { ptr } -%"struct.std::pair.2" = type { i32, ptr } +%"struct.std::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.__gnu_cxx::__aligned_membuf" = type { [12 x i8] } %"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,92 +320,73 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %amap = alloca %"class.std::map", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca %"struct.std::pair.0", align 8 + %amap = alloca %"class.std::map", align 1 + %a = alloca %class.A, align 1 + %ref.tmp = alloca %"struct.std::pair.0", align 1 %ref.tmp1 = alloca i32, align 4 %ref.tmp2 = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %ref.tmp4 = alloca %"struct.std::_Rb_tree_iterator", align 8 + %coerce = alloca %"struct.std::pair", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %it = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %ref.tmp4 = alloca %"struct.std::_Rb_tree_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 + call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(37) %amap) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(12) %ref.tmp, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp1, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = invoke { ptr, i8 } @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE6insertIS5_IiS2_EEENSt9enable_ifIXsr16is_constructibleIS7_T_EE5valueES5_ISt17_Rb_tree_iteratorIS7_EbEE4typeEOSD_(ptr noundef nonnull align 8 dereferenceable(48) %amap, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) + %call = invoke { ptr, i8 } @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE6insertIS5_IiS2_EEENSt9enable_ifIXsr16is_constructibleIS7_T_EE5valueES5_ISt17_Rb_tree_iteratorIS7_EbEE4typeEOSD_(ptr noundef nonnull align 1 dereferenceable(37) %amap, ptr noundef nonnull align 1 dereferenceable(12) %ref.tmp) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - %call5 = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp4, i32 0, i32 0 - store ptr %call5, ptr %coerce.dive, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp4) #5 - %call6 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %second = getelementptr inbounds %"struct.std::pair.2", ptr %call6, i32 0, i32 1 - %4 = load ptr, ptr %second, align 8 - store ptr %4, ptr %aptr, align 8 - %5 = load ptr, ptr %aptr, align 8 - %6 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %5, align 8 + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %coerce, ptr align 8 %tmp.coerce, i64 9, i1 false) + %call5 = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 + call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 1 dereferenceable(8) %it, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp4) #11 + %call6 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEptEv(ptr noundef nonnull align 1 dereferenceable(8) %it) #11 + %second = getelementptr inbounds nuw %"struct.std::pair.2", ptr %call6, i32 0, i32 1 + %0 = load ptr, ptr %second, align 1 + store ptr %0, ptr %aptr, align 8 + %1 = load ptr, ptr %aptr, align 8 + %2 = load ptr, ptr %ptr, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %7 = load ptr, ptr %vfn, align 8 - invoke void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) + %3 = load ptr, ptr %vfn, align 8 + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont3 store i32 0, ptr %retval, align 4 - call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - %8 = load i32, ptr %retval, align 4 - ret i32 %8 + call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %amap) #11 + %4 = load i32, ptr %retval, align 4 + ret i32 %4 lpad: ; preds = %invoke.cont3, %invoke.cont, %entry - %9 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup - %10 = extractvalue { ptr, i32 } %9, 0 - store ptr %10, ptr %exn.slot, align 8 - %11 = extractvalue { ptr, i32 } %9, 1 - store i32 %11, ptr %ehselector.slot, align 4 - call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 + %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 @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %amap) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -396,51 +397,97 @@ 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 1 dereferenceable(37) %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 1 dereferenceable(37) %_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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE6insertIS5_IiS2_EEENSt9enable_ifIXsr16is_constructibleIS7_T_EE5valueES5_ISt17_Rb_tree_iteratorIS7_EbEE4typeEOSD_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, i8 } @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE6insertIS5_IiS2_EEENSt9enable_ifIXsr16is_constructibleIS7_T_EE5valueES5_ISt17_Rb_tree_iteratorIS7_EbEE4typeEOSD_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 1 dereferenceable(12) %__x) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::pair", align 1 %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 1 + %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 1 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %ref.tmp13 = alloca i8, align 1 + %ref.tmp14 = alloca i8, align 1 + %retval.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::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 1 dereferenceable(37) %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 1 + %call2 = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE3endEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 + %call4 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_(ptr noundef nonnull align 1 dereferenceable(8) %__i, ptr noundef nonnull align 1 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 1 dereferenceable(37) %this1) + %2 = load ptr, ptr %__k, align 8 + %call6 = call noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKiPK1AEEdeEv(ptr noundef nonnull align 1 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 1 dereferenceable(8) %agg.tmp, ptr noundef nonnull align 1 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 1 + %call11 = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE12emplace_hintIJS5_IiS2_EEEESt17_Rb_tree_iteratorIS7_ESt23_Rb_tree_const_iteratorIS7_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %this1, ptr %5, ptr noundef nonnull align 1 dereferenceable(12) %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 1 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %__i, ptr align 1 %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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 dereferenceable(8) %__i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp14) + br label %return + +return: ; preds = %if.end, %if.then + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %6 = load { ptr, i8 }, ptr %retval.coerce, 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 1 dereferenceable(12) %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,129 +496,126 @@ 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 + store i32 %1, ptr %first, align 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 + store ptr %3, ptr %second, align 1 ret void } declare i32 @__gxx_personality_v0(...) +; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 + ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 + %_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 1 dereferenceable(37) %_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 1 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %0 = load ptr, ptr %coerce.dive2, align 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_node2, align 1 + store ptr %1, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEptEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %0) ret ptr %call } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %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_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 1 dereferenceable(37) %_M_t) #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_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(37) %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 @_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #5 + %_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 1 dereferenceable(37) %_M_impl) #11 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 { +; 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 1 dereferenceable(37) %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_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEEC2Ev(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 1 + call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 1 dereferenceable(36) %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 1 dereferenceable(36) %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 - store i32 0, ptr %_M_color, align 8 - invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this1) + %_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 1 + invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 1 dereferenceable(36) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -581,45 +625,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 { +define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 1 dereferenceable(36) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - store ptr null, ptr %_M_parent, align 8 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header3, i32 0, i32 2 - store ptr %_M_header2, ptr %_M_left, align 8 - %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header5, i32 0, i32 3 - store ptr %_M_header4, ptr %_M_right, align 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_node_count, align 8 + %_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 1 + %_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 1 + %_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 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 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) #5 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -628,7 +663,7 @@ declare ptr @__cxa_begin_catch(ptr) declare void @_ZSt9terminatev() ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -641,31 +676,31 @@ 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 1 dereferenceable(37) %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 - 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) + %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this1) #11 + invoke void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %_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 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -682,13 +717,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 void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) + %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 @@ -698,26 +733,25 @@ while.end: ; preds = %while.cond } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { 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 1 dereferenceable(37) %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 1 dereferenceable(37) %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,8 +761,8 @@ entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_right, align 8 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_right, align 1 ret ptr %1 } @@ -738,13 +772,13 @@ entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 - %1 = load ptr, ptr %_M_left, align 8 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 + %1 = load ptr, ptr %_M_left, align 1 ret ptr %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__p) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -752,432 +786,391 @@ 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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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) + %call2 = invoke noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %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 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 { +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 1 dereferenceable(37) %this) #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 + %this.addr = 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 ptr %_M_impl } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 1 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_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl + %_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 1 dereferenceable(12) %_M_storage) #11 + ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_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 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %this1) #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 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_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 @_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 + %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__p, ptr %__p.addr, align 8 + store i64 %__n, ptr %__n.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__p.addr, align 8 + %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 @_ZdlPvm(ptr noundef, i64 noundef) #6 + ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE9_M_mbeginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 1 + %_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 1 + ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +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 %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 + ret void } ; 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 { +define linkonce_odr dso_local ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE11lower_boundERS6_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x) #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 + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %this.addr = alloca ptr, align 8 + %__x.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + store ptr %__x, ptr %__x.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_t = getelementptr inbounds 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 1 dereferenceable(37) %_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 1 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive2, align 1 + ret ptr %1 +} + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_(ptr noundef nonnull align 1 dereferenceable(8) %__x, ptr noundef nonnull align 1 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 1 + %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 1 + %cmp = icmp eq ptr %1, %3 + ret i1 %cmp } ; 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 ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE3endEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void + %_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 1 dereferenceable(37) %_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 1 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %0 = load ptr, ptr %coerce.dive2, align 1 + ret ptr %0 } -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNKSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE8key_compEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #0 comdat align 2 { entry: %this.addr = 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 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 + %_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 1 dereferenceable(37) %_M_t) ret void } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; 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 - ret void + %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 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKiPK1AEEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__z = alloca ptr, align 8 - %__res = alloca %"struct.std::pair.4", align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp8 = alloca i8, align 1 - %ref.tmp10 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp12 = alloca i8, align 1 store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_create_nodeIJS0_IiS4_EEEEPSt13_Rb_tree_nodeIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 8 dereferenceable(16) %0) - store ptr %call, ptr %__z, align 8 - %1 = load ptr, ptr %__z, align 8 - %call2 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(ptr noundef %1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call4 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE24_M_get_insert_unique_posERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 4 dereferenceable(4) %call2) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont - %2 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 0 - %3 = extractvalue { ptr, ptr } %call4, 0 - store ptr %3, ptr %2, align 8 - %4 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 1 - %5 = extractvalue { ptr, ptr } %call4, 1 - store ptr %5, ptr %4, align 8 - %second = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 1 - %6 = load ptr, ptr %second, align 8 - %tobool = icmp ne ptr %6, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %invoke.cont3 - %first = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 0 - %7 = load ptr, ptr %first, align 8 - %second5 = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 1 - %8 = load ptr, ptr %second5, align 8 - %9 = load ptr, ptr %__z, align 8 - %call7 = invoke ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSD_PSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %7, ptr noundef %8, ptr noundef %9) - to label %invoke.cont6 unwind label %lpad - -invoke.cont6: ; preds = %if.then - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call7, ptr %coerce.dive, align 8 - store i8 1, ptr %ref.tmp8, align 1 - invoke void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IS6_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp8) - to label %invoke.cont9 unwind label %lpad - -invoke.cont9: ; preds = %invoke.cont6 - br label %return - -lpad: ; preds = %if.end, %invoke.cont6, %if.then, %invoke.cont, %entry - %10 = landingpad { ptr, i32 } - catch ptr null - %11 = extractvalue { ptr, i32 } %10, 0 - store ptr %11, ptr %exn.slot, align 8 - %12 = extractvalue { ptr, i32 } %10, 1 - store i32 %12, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %13 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %14 = load ptr, ptr %__z, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %14) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad14 - -if.end: ; preds = %invoke.cont3 - %15 = load ptr, ptr %__z, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %15) #5 - %first11 = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 0 - %16 = load ptr, ptr %first11, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp10, ptr noundef %16) #5 - store i8 0, ptr %ref.tmp12, align 1 - invoke void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IS6_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp10, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp12) - to label %invoke.cont13 unwind label %lpad - -invoke.cont13: ; preds = %if.end - br label %return - -lpad14: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont15 unwind label %terminate.lpad - -invoke.cont15: ; preds = %lpad14 - br label %eh.resume - -try.cont: ; No predecessors! - call void @llvm.trap() - unreachable - -return: ; preds = %invoke.cont13, %invoke.cont9 - %20 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %20 - -eh.resume: ; preds = %invoke.cont15 - %exn16 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn16, 0 - %lpad.val17 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val17 - -terminate.lpad: ; preds = %lpad14 - %21 = landingpad { ptr, i32 } - catch ptr null - %22 = extractvalue { ptr, i32 } %21, 0 - call void @__clang_call_terminate(ptr %22) #15 - unreachable - -unreachable: ; preds = %catch - unreachable + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %0) + ret ptr %call } ; 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 { +define linkonce_odr dso_local ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE12emplace_hintIJS5_IiS2_EEEESt17_Rb_tree_iteratorIS7_ESt23_Rb_tree_const_iteratorIS7_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr %__pos.coerce, ptr noundef nonnull align 1 dereferenceable(12) %__args) #0 comdat align 2 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %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 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %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 + %_M_t = getelementptr inbounds nuw %"class.std::map", ptr %this1, i32 0, i32 0 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %agg.tmp, ptr align 1 %__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 1 + %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 1 dereferenceable(37) %_M_t, ptr %1, ptr noundef nonnull align 1 dereferenceable(12) %0) + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + store ptr %call, ptr %coerce.dive3, align 1 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %2 = load ptr, ptr %coerce.dive4, align 1 ret ptr %2 } -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE24_M_get_insert_unique_posERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +; 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 1 dereferenceable(9) %this, ptr noundef nonnull align 1 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #2 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 + %__x.addr = alloca ptr, align 8 + %__y.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.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 1 %first, ptr align 1 %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 1 + ret void +} + +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11lower_boundERS1_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 1 dereferenceable(37) %this1) #11 + %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 + %coerce.dive4 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %1 = load ptr, ptr %coerce.dive4, align 1 + ret ptr %1 +} + +; 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 1 dereferenceable(37) %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 1 + %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 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call, ptr %__x, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call2, ptr %__y, align 8 - store i8 1, ptr %__comp, align 1 br label %while.cond -while.cond: ; preds = %cond.end, %entry - %0 = load ptr, ptr %__x, align 8 +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_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_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_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 + %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_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_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_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 -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 +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 -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_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef %7) #5 - %8 = load i8, ptr %__comp, align 1 - %tobool7 = trunc i8 %8 to i1 - br i1 %tobool7, label %if.then, label %if.end12 - -if.then: ; preds = %while.end - %call8 = call ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call8, ptr %coerce.dive, align 8 - %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - br i1 %call9, label %if.then10, label %if.else - -if.then10: ; preds = %if.then - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.else: ; preds = %if.then - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__j) #5 - br label %if.end - -if.end: ; preds = %if.else - br label %if.end12 - -if.end12: ; preds = %if.end, %while.end - %_M_impl13 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare14 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl13, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - %9 = load ptr, ptr %_M_node, align 8 - %call15 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %9) - %10 = load ptr, ptr %__k.addr, align 8 - %call16 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare14, ptr noundef nonnull align 4 dereferenceable(4) %call15, ptr noundef nonnull align 4 dereferenceable(4) %10) - br i1 %call16, label %if.then17, label %if.end18 - -if.then17: ; preds = %if.end12 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.end18: ; preds = %if.end12 - %_M_node19 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - store ptr null, ptr %ref.tmp20, align 8 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node19, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp20) - br label %return + %6 = load ptr, ptr %__y.addr, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 + 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 1 dereferenceable(37) %this) #2 comdat align 2 { +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 1 + %_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 @@ -1187,127 +1180,513 @@ entry: %ref.tmp = alloca %"struct.std::_Select1st", align 1 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - %call1 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt10_Select1stISt4pairIKiPK1AEEclERKS5_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %call) + %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %0) + %call1 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt10_Select1stISt4pairIKiPK1AEEclERKS5_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(12) %call) ret ptr %call1 } -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSD_PSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef %__z) #0 comdat align 2 { +; 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 1 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 1 + 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 1 dereferenceable(12) %__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 1 dereferenceable(40) %this) #2 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_M_storage = getelementptr inbounds 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 1 dereferenceable(12) %_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 1 dereferenceable(12) %this) #2 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(12) %this) #2 comdat align 2 { +entry: + %this.addr = alloca ptr, align 8 + store ptr %this, ptr %this.addr, align 8 + %this1 = load ptr, ptr %this.addr, align 8 + %_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 1 dereferenceable(37) %this) #2 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %this.addr = 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 1 + %_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 1 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 1 + 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 1 dereferenceable(37) %this) #2 comdat align 2 { +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 1 dereferenceable(37) %this, ptr %__pos.coerce, ptr noundef nonnull align 1 dereferenceable(12) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %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 1 + %__res = alloca %"struct.std::pair.4", align 1 + %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %exn.slot = alloca ptr, align 8 + %ehselector.slot = alloca i32, align 4 + %agg.tmp5 = alloca %"struct.std::pair.4", align 1 + %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 1 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 1 dereferenceable(16) %__z, ptr noundef nonnull align 1 dereferenceable(37) %this1, ptr noundef nonnull align 1 dereferenceable(12) %0) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %agg.tmp, ptr align 1 %__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 1 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 1 + %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 1 dereferenceable(37) %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 1 + %4 = getelementptr inbounds nuw { ptr, ptr }, ptr %__res, i32 0, i32 1 + %5 = extractvalue { ptr, ptr } %call4, 1 + store ptr %5, ptr %4, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__res, i32 0, i32 1 + %6 = load ptr, ptr %second, align 1 + %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 1 %agg.tmp5, ptr align 1 %__res, i64 16, i1 false) + %7 = getelementptr inbounds nuw { ptr, ptr }, ptr %agg.tmp5, i32 0, i32 0 + %8 = load ptr, ptr %7, align 1 + %9 = getelementptr inbounds nuw { ptr, ptr }, ptr %agg.tmp5, i32 0, i32 1 + %10 = load ptr, ptr %9, align 1 + %call7 = invoke ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE10_Auto_node9_M_insertES0_IPSt18_Rb_tree_node_baseSE_E(ptr noundef nonnull align 1 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 1 + 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 1 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 1 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 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 1 + 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 1 dereferenceable(16) %this, ptr noundef nonnull align 1 dereferenceable(37) %__t, ptr noundef nonnull align 1 dereferenceable(12) %__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 1 + %_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 1 dereferenceable(37) %1, ptr noundef nonnull align 1 dereferenceable(12) %2) + store ptr %call, ptr %_M_node, align 1 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 1 dereferenceable(37) %this, ptr %__position.coerce, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::pair.4", align 1 + %__position = alloca %"struct.std::_Rb_tree_const_iterator", align 1 + %this.addr = alloca ptr, align 8 + %__k.addr = alloca ptr, align 8 + %__pos = alloca %"struct.std::_Rb_tree_iterator", align 1 + %ref.tmp = alloca ptr, align 8 + %__before = alloca %"struct.std::_Rb_tree_iterator", align 1 + %ref.tmp35 = alloca ptr, align 8 + %__after = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 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 ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEE13_M_const_castEv(ptr noundef nonnull align 1 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 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %__pos, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call3 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 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 1 dereferenceable(37) %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 1 + %6 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %7 = extractvalue { ptr, ptr } %call11, 1 + store ptr %7, ptr %6, align 1 + 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 1 + %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 1 %__before, ptr align 1 %__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 1 + %call19 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_leftmostEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %this1) #11 + %call23 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_leftmostEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv(ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 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 1 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 1 dereferenceable(37) %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 1 + %18 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %19 = extractvalue { ptr, ptr } %call41, 1 + store ptr %19, ptr %18, align 1 + 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 1 + %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 1 %__after, ptr align 1 %__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 1 + %call49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_rightmostEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp52, ptr noundef nonnull align 8 dereferenceable(8) %call53) + br label %return + +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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEppEv(ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 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 1 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 1 dereferenceable(37) %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 1 + %30 = getelementptr inbounds nuw { ptr, ptr }, ptr %retval, i32 0, i32 1 + %31 = extractvalue { ptr, ptr } %call71, 1 + store ptr %31, ptr %30, align 1 + 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 1 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 1 + 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 1 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 1 + %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 1 dereferenceable(16) %this, ptr %__p.coerce0, ptr %__p.coerce1) #0 comdat align 2 { +entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 + %__p = alloca %"struct.std::pair.4", align 1 + %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 1 + %1 = getelementptr inbounds nuw { ptr, ptr }, ptr %__p, i32 0, i32 1 + store ptr %__p.coerce1, ptr %1, align 1 + 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 1 + %first = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__p, i32 0, i32 0 + %3 = load ptr, ptr %first, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.4", ptr %__p, i32 0, i32 1 + %4 = load ptr, ptr %second, align 1 + %_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 1 + %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 1 dereferenceable(37) %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 1 + %_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 1 + %coerce.dive3 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 + %6 = load ptr, ptr %coerce.dive3, align 1 + ret ptr %6 +} -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #10 +; 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 1 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 1 + %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 1 + %_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 1 + call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 1 dereferenceable(37) %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_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { +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 1 dereferenceable(37) %this, ptr noundef nonnull align 1 dereferenceable(12) %__args) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 + %__args.addr = alloca ptr, align 8 + %__tmp = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 + store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef 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 ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_get_nodeEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %this1, ptr noundef %0, ptr noundef nonnull align 1 dereferenceable(12) %1) + %2 = load ptr, ptr %__tmp, align 8 + ret ptr %2 } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_get_nodeEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 dereferenceable(37) %this, ptr noundef %__node, ptr noundef nonnull align 1 dereferenceable(12) %__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 +1697,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 1 dereferenceable(37) %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) + %call2 = call noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %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 1 dereferenceable(12) %6, ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(37) %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 +1764,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 +1775,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 +1786,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, 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() #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.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_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 +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) #15 + 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 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 1 dereferenceable(12) %this, ptr noundef nonnull align 1 dereferenceable(12) %__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 + store i32 %1, ptr %first, align 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 + store ptr %3, ptr %second, align 1 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 1 dereferenceable(8) %this) #2 comdat align 2 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = 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 1 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 + 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 1 dereferenceable(37) %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 1 + %_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 1 + 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 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 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 1 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 + store ptr %1, ptr %first, align 1 + %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 + store ptr %3, ptr %second, align 1 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 1 dereferenceable(37) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { entry: + %retval = alloca %"struct.std::pair.4", align 1 %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 1 + %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 1 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 1 dereferenceable(37) %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 1 + %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_(ptr noundef nonnull align 1 dereferenceable(8) %__j, ptr noundef nonnull align 1 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 1 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv(ptr noundef nonnull align 1 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 1 + %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 1 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 1 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 1 + 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 1 dereferenceable(37) %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 1 + %_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 1 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 +2045,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 + store ptr %1, ptr %first, align 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 + store ptr %3, ptr %second, align 1 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv(ptr noundef nonnull align 1 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 1 + %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 1 + 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEppEv(ptr noundef nonnull align 1 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 1 + %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 1 + 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 1 dereferenceable(37) %this) #2 comdat align 2 { entry: + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %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 1 + %_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 1 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 + 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 1 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 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 1 + 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 1 dereferenceable(37) %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 1 + %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 1 dereferenceable(37) %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 1 + %_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 1 dereferenceable(28) %_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 1 + %_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 1 + %inc = add i64 %8, 1 + store i64 %inc, ptr %_M_node_count, align 1 + %9 = load ptr, ptr %__z.addr, align 8 + call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 + 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 1 dereferenceable(28)) #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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +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 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 +2216,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..dbfd10640 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,30 +190,30 @@ 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 1 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) + invoke void @_ZN1BC2EP1A(ptr noundef nonnull align 1 dereferenceable(16) %call1, ptr noundef %0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store ptr %call1, ptr %b, align 8 %1 = load ptr, ptr %b, align 8 %2 = load ptr, ptr %j, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef %2) + call void %3(ptr noundef nonnull align 1 dereferenceable(16) %1, ptr noundef %2) %4 = load ptr, ptr %b, align 8 - %_a = getelementptr inbounds %class.B, ptr %4, i32 0, i32 1 - %5 = load ptr, ptr %_a, align 8 + %_a = getelementptr inbounds nuw %class.B, ptr %4, i32 0, i32 1 + %5 = load ptr, ptr %_a, align 1 %6 = load ptr, ptr %i, align 8 - %vtable2 = load ptr, ptr %5, align 8 + %vtable2 = load ptr, ptr %5, align 1 %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 0 %7 = load ptr, ptr %vfn3, align 8 - call void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) + call void %7(ptr noundef nonnull align 1 dereferenceable(8) %5, ptr noundef %6) ret i32 0 lpad: ; preds = %entry @@ -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,38 +237,38 @@ 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 1 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 1 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 1 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 1 + %_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 + store ptr %0, ptr %_a, align 1 ret void } 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 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -285,7 +285,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %i.addr = alloca ptr, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/basic_cpp_tests/namespace.cpp.bc b/test_cases_bc/basic_cpp_tests/namespace.cpp.bc index 25ad49355..706773b2d 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/namespace.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,50 +182,50 @@ 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 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) %3 = load ptr, ptr %b, align 8 %4 = load ptr, ptr %ptr_g, align 8 - %vtable1 = load ptr, ptr %3, align 8 + %vtable1 = load ptr, ptr %3, align 1 %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 1 %5 = load ptr, ptr %vfn2, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef %4) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1n1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1n1BC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1n1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1n1B1fEPi(ptr noundef nonnull align 1 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 @@ -242,7 +242,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1n1B1gEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1n1B1gEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/basic_cpp_tests/pwc.cpp.bc b/test_cases_bc/basic_cpp_tests/pwc.cpp.bc index 33b12c1db..35c224edf 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/pwc.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 1 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 @@ -215,31 +215,31 @@ for.inc: ; preds = %for.body for.end: ; preds = %for.cond %3 = load ptr, ptr %pa, align 8 %4 = load ptr, ptr %ptr_f, align 8 - %vtable = load ptr, ptr %3, align 8 + %vtable = load ptr, ptr %3, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %5 = load ptr, ptr %vfn, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(32) %3, ptr noundef %4) %6 = load ptr, ptr %pa, align 8 %7 = load ptr, ptr %ptr_g, align 8 - %vtable1 = load ptr, ptr %6, align 8 + %vtable1 = load ptr, ptr %6, align 1 %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 1 %8 = load ptr, ptr %vfn2, align 8 - call void %8(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %7) + call void %8(ptr noundef nonnull align 1 dereferenceable(32) %6, ptr noundef %7) ret i32 0 } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #4 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %i.addr = alloca ptr, align 8 @@ -256,7 +256,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %i.addr = alloca ptr, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d160e96d3 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/queue-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,31 +300,15 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %aqueue = alloca %"class.std::queue", align 8 - %a = alloca %class.A, align 8 + %aqueue = alloca %"class.std::queue", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 %aptr = alloca ptr, align 8 @@ -368,32 +316,32 @@ 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 @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %aqueue, ptr noundef nonnull align 8 dereferenceable(8) %a) + call void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 1 dereferenceable(80) %aqueue) + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %a) #10 + invoke void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %aqueue, ptr noundef nonnull align 1 dereferenceable(8) %a) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) + %call = invoke noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %aqueue) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store ptr %call, ptr %aptr, align 8 - invoke void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) + invoke void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 1 dereferenceable(80) %aqueue) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont1 %0 = load ptr, ptr %aptr, align 8 %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont2 store i32 0, ptr %retval, align 4 - call void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #5 + call void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(80) %aqueue) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -415,79 +363,79 @@ 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 1 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 - 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) + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + call void @llvm.memset.p0.i64(ptr align 1 %c, i8 0, i64 80, i1 false) + call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__x, ptr %__x.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 + %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) + call void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %c, ptr noundef nonnull align 1 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + %call = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %c) #10 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeI1ASaIS0_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeI1ASaIS0_EE9pop_frontEv(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(80) %c) #10 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -500,85 +448,89 @@ 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 1 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 + %agg.tmp = alloca %"struct.std::_Deque_iterator", align 1 + %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #10 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp2, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #10 + invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_finish) #10 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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,77 +538,77 @@ 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 1 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 - %0 = load ptr, ptr %_M_map, align 8 + %_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 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #5 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #5 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 1 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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(32) %this, ptr noundef nonnull align 1 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 - %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_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur2, align 1 + store ptr %1, ptr %_M_cur, align 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 - %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_first3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %_M_first3, align 1 + store ptr %3, ptr %_M_first, align 1 + %_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 - %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_last4 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %_M_last4, align 1 + store ptr %5, ptr %_M_last, align 1 + %_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 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 + %_M_node5 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 + %7 = load ptr, ptr %_M_node5, align 1 + store ptr %7, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -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 1 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 @@ -693,8 +645,12 @@ 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 1 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,129 +758,83 @@ 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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,29 +843,29 @@ 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 1 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 - call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) + call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %this1) ret void } -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 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 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) + %_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 1 dereferenceable(80) %_M_impl) #10 + invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 1 dereferenceable(80) %_M_impl) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -975,19 +889,24 @@ 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 1 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 1 dereferenceable(80) %this1) #10 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__num_elements.addr = alloca i64, align 8 @@ -1012,34 +931,34 @@ 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 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 + %_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 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 1 + %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %3) + %_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 1 + %_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 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 1 %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 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) + invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #5 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #16 + %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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 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 1 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -1087,35 +1006,35 @@ 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 1 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 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 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 1 %24 = load i64, ptr %__num_elements.addr, align 8 %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds %class.A, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 + %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 1 ret void eh.resume: ; preds = %invoke.cont24 @@ -1129,63 +1048,44 @@ 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_map, align 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 1 + %_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 1 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 1 dereferenceable(32) %_M_finish) #10 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 1 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 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_first, align 1 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr null, ptr %_M_last, align 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr null, ptr %_M_node, align 1 ret void } @@ -1220,8 +1120,12 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 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 1 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 @@ -1258,7 +1173,7 @@ eh.resume: ; preds = %lpad } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -1281,7 +1196,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body @@ -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 1 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 @@ -1355,7 +1270,7 @@ declare void @__cxa_rethrow() declare void @__cxa_end_catch() ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__new_node.addr = alloca ptr, align 8 @@ -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 - store ptr %0, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr %0, ptr %_M_node, align 1 %1 = load ptr, ptr %__new_node.addr, align 8 %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #5 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr %2, ptr %_M_first, align 1 + %_M_first2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %3 = load ptr, ptr %_M_first2, align 1 + %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 - store ptr %add.ptr, ptr %_M_last, align 8 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr %add.ptr, ptr %_M_last, align 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 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 @@ -1500,176 +1402,180 @@ 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: +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 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_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 + %1 = load ptr, ptr %_M_last, align 1 %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 + %_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 1 %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 + 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 1 dereferenceable(8) %7, ptr noundef nonnull align 1 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 1 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, i32 1 + store ptr %incdec.ptr, ptr %_M_cur10, align 1 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 1 dereferenceable(80) %this1, ptr noundef nonnull align 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #10 + %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 1) + %call3 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 + %_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 1 %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 1 dereferenceable(8) %6, ptr noundef nonnull align 1 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 1 + %add.ptr12 = getelementptr inbounds ptr, ptr %8, i64 1 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 + %_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 1 dereferenceable(32) %_M_finish, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #10 ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1678,16 +1584,16 @@ 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 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -1698,7 +1604,7 @@ entry: if.then: ; preds = %entry %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) + call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) br label %if.end if.end: ; preds = %if.then, %entry @@ -1706,86 +1612,89 @@ if.end: ; preds = %if.then, %entry } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 1 dereferenceable(32) %__x, ptr noundef nonnull align 1 dereferenceable(32) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #5 + %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 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_node, align 1 %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 + %3 = load ptr, ptr %_M_node1, align 1 %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 1 + %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 1 + %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 1 + %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 1 + %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 1 + %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,18 +1725,8 @@ 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1839,17 +1738,17 @@ 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 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 + %_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 1 + %_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 1 %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 @@ -1860,28 +1759,28 @@ 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 - %4 = load i64, ptr %_M_map_size, align 8 + %_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 1 %5 = load i64, ptr %__new_num_nodes, align 8 %mul = mul i64 2, %5 %cmp = icmp ugt i64 %4, %mul br i1 %cmp, label %if.then, label %if.else31 if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 + %_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 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 1 %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,43 +1791,43 @@ 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 - %12 = load ptr, ptr %_M_node12, align 8 + %_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 1 %cmp13 = icmp ult ptr %11, %12 br i1 %cmp13, label %if.then14, label %if.else if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 + %_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 1 + %_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 1 %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 %15 = load ptr, ptr %__new_nstart, align 8 %call = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) br label %if.end if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 + %_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 1 + %_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 1 %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,28 +1835,28 @@ if.end: ; preds = %if.else, %if.then14 br label %if.end65 if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 + %_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 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 %add38 = add i64 %add37, 2 store i64 %add38, ptr %__new_map_size, align 8 %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) + %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %22) store ptr %call39, ptr %__new_map, align 8 %23 = load ptr, ptr %__new_map, align 8 %24 = load i64, ptr %__new_map_size, align 8 %25 = load i64, ptr %__new_num_nodes, align 8 %sub40 = sub i64 %24, %25 %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 + %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 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 + %_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 1 + %_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 1 %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 %30 = load ptr, ptr %__new_nstart, align 8 %call56 = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #5 + %_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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 - store ptr %33, ptr %_M_map62, align 8 + %_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 1 %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 + %_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 1 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 1 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 1 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,74 +2178,100 @@ 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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Deque_iterator", align 8 + %ref.tmp = alloca %"struct.std::_Deque_iterator", align 1 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 1 %ref.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #10 + %call = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %ref.tmp) #10 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9pop_frontEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start5, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur6, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %2) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 2 - %_M_cur9 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start8, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur9, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %3, i32 1 - store ptr %incdec.ptr, ptr %_M_cur9, align 8 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 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 1 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %6, i32 1 + store ptr %incdec.ptr, ptr %_M_cur9, align 1 br label %if.end if.else: ; preds = %entry - invoke void @_ZNSt5dequeI1ASaIS0_EE16_M_pop_front_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + invoke void @_ZNSt5dequeI1ASaIS0_EE16_M_pop_front_auxEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %if.else @@ -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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_pop_front_auxEv(ptr noundef nonnull align 1 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 - %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() + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 + 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 1 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 1 + %add.ptr = getelementptr inbounds ptr, ptr %5, i64 1 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..05fac97d9 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/queue-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,30 +297,14 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %aqueue = alloca %"class.std::queue", align 8 + %aqueue = alloca %"class.std::queue", align 1 %a = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -365,38 +313,38 @@ 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 @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEEC2IS4_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) - %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #15 + call void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEEC2IS4_vEEv(ptr noundef nonnull align 1 dereferenceable(80) %aqueue) + %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 1 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) + invoke void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE4pushERKS1_(ptr noundef nonnull align 1 dereferenceable(80) %aqueue, ptr noundef nonnull align 8 dereferenceable(8) %a) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont - %call3 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) + %call3 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %aqueue) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont1 %0 = load ptr, ptr %call3, align 8 store ptr %0, ptr %aptr, align 8 - invoke void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) + invoke void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 1 dereferenceable(80) %aqueue) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont2 %1 = load ptr, ptr %aptr, align 8 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont5 unwind label %lpad invoke.cont5: ; preds = %invoke.cont4 store i32 0, ptr %retval, align 4 - call void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #5 + call void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(80) %aqueue) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -418,82 +366,82 @@ 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 1 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 - 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) + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + call void @llvm.memset.p0.i64(ptr align 1 %c, i8 0, i64 80, i1 false) + call void @_ZNSt5dequeIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE4pushERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE4pushERKS1_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__x, ptr %__x.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 + %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) + call void @_ZNSt5dequeIP1ASaIS1_EE9push_backERKS1_(ptr noundef nonnull align 1 dereferenceable(80) %c, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIP1ASaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 + %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 1 dereferenceable(80) %c) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeIP1ASaIS1_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 + %c = getelementptr inbounds nuw %"class.std::queue", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeIP1ASaIS1_EE9pop_frontEv(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(80) %c) #11 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -506,85 +454,89 @@ 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 1 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 + %agg.tmp = alloca %"struct.std::_Deque_iterator", align 1 + %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIP1ASaIS1_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSt5dequeIP1ASaIS1_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - invoke void @_ZNSt5dequeIP1ASaIS1_EE15_M_destroy_dataESt15_Deque_iteratorIS1_RS1_PS1_ES7_RKS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) + call void @_ZNSt5dequeIP1ASaIS1_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #11 + call void @_ZNSt5dequeIP1ASaIS1_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp2, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #11 + invoke void @_ZNSt5dequeIP1ASaIS1_EE15_M_destroy_dataESt15_Deque_iteratorIS1_RS1_PS1_ES7_RKS2_(ptr noundef nonnull align 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE15_M_destroy_dataESt15_Deque_iteratorIS1_RS1_PS1_ES7_RKS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE15_M_destroy_dataESt15_Deque_iteratorIS1_RS1_PS1_ES7_RKS2_(ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_finish) #11 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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,77 +544,77 @@ 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 1 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 - %0 = load ptr, ptr %_M_map, align 8 + %_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 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #5 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #5 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_(ptr noundef nonnull align 1 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 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 1 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(32) %this, ptr noundef nonnull align 1 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 - %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_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur2, align 1 + store ptr %1, ptr %_M_cur, align 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 - %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_first3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %_M_first3, align 1 + store ptr %3, ptr %_M_first, align 1 + %_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 - %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_last4 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %_M_last4, align 1 + store ptr %5, ptr %_M_last, align 1 + %_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 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 + %_M_node5 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 + %7 = load ptr, ptr %_M_node5, align 1 + store ptr %7, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -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 1 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 @@ -699,8 +651,12 @@ 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 1 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 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE18_M_deallocate_nodeEPS1_(ptr noundef nonnull align 1 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,129 +764,83 @@ 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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,29 +849,29 @@ 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 1 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 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) + call void @_ZNSt11_Deque_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %this1) ret void } -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 1 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 - invoke void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) + %_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 1 dereferenceable(80) %_M_impl) #11 + invoke void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 1 dereferenceable(80) %_M_impl) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -981,19 +895,24 @@ 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 1 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 1 dereferenceable(80) %this1) #11 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__num_elements.addr = alloca i64, align 8 @@ -1018,34 +937,34 @@ 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 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 + %_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 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 1 + %call7 = call noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %3) + %_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 1 + %_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 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 1 %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 - invoke void @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_create_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) + invoke void @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_create_nodesEPPS1_S5_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #5 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #17 + %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 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 1 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 1 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 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 1 + invoke void @__cxa_rethrow() #14 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -1093,35 +1012,35 @@ 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 1 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 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 + call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 1 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 1 + %_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 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 1 %24 = load i64, ptr %__num_elements.addr, align 8 %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds ptr, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 + %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 1 ret void eh.resume: ; preds = %invoke.cont24 @@ -1135,63 +1054,44 @@ 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #9 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_map, align 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 1 + %_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 1 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 1 dereferenceable(32) %_M_finish) #11 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 1 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 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_first, align 1 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr null, ptr %_M_last, align 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr null, ptr %_M_node, align 1 ret void } @@ -1226,8 +1126,12 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 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 1 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 @@ -1264,7 +1179,7 @@ eh.resume: ; preds = %lpad } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_create_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_create_nodesEPPS1_S5_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -1287,7 +1202,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + %call = invoke noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body @@ -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 1 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 @@ -1361,7 +1276,7 @@ declare void @__cxa_rethrow() declare void @__cxa_end_catch() ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__new_node.addr = alloca ptr, align 8 @@ -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 - store ptr %0, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr %0, ptr %_M_node, align 1 %1 = load ptr, ptr %__new_node.addr, align 8 %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E14_S_buffer_sizeEv() #5 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr %2, ptr %_M_first, align 1 + %_M_first2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %3 = load ptr, ptr %_M_first2, align 1 + %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 - store ptr %add.ptr, ptr %_M_last, align 8 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr %add.ptr, ptr %_M_last, align 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 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 -} - -; 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 + 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 @_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 @@ -1503,165 +1405,170 @@ 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: +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE9push_backERKS1_(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 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_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 + %1 = load ptr, ptr %_M_last, align 1 %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 + %_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 1 %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 + 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 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, i32 1 + store ptr %incdec.ptr, ptr %_M_cur10, align 1 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 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE16_M_push_back_auxIJRKS1_EEEvDpOT_(ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #11 + %call2 = call noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt5dequeIP1ASaIS1_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 1) + %call3 = call noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 + %_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 1 %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 1 + %add.ptr12 = getelementptr inbounds ptr, ptr %9, i64 1 + call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 1 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 1 + %_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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorIP1ARS1_PS1_ES6_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 + %_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 1 dereferenceable(32) %_M_finish, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #11 ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNSt5dequeIP1ASaIS1_EE11_S_max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1670,16 +1577,16 @@ 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 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -1690,7 +1597,7 @@ entry: if.then: ; preds = %entry %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeIP1ASaIS1_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) + call void @_ZNSt5dequeIP1ASaIS1_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) br label %if.end if.end: ; preds = %if.then, %entry @@ -1698,86 +1605,89 @@ if.end: ; preds = %if.then, %entry } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIP1ARS1_PS1_ES6_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIP1ARS1_PS1_ES6_(ptr noundef nonnull align 1 dereferenceable(32) %__x, ptr noundef nonnull align 1 dereferenceable(32) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E14_S_buffer_sizeEv() #5 + %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 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_node, align 1 %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 + %3 = load ptr, ptr %_M_node1, align 1 %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 1 + %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 1 + %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 1 + %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 1 + %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 1 + %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,18 +1718,8 @@ 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1831,17 +1731,17 @@ 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 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 + %_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 1 + %_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 1 %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 @@ -1852,28 +1752,28 @@ 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 - %4 = load i64, ptr %_M_map_size, align 8 + %_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 1 %5 = load i64, ptr %__new_num_nodes, align 8 %mul = mul i64 2, %5 %cmp = icmp ugt i64 %4, %mul br i1 %cmp, label %if.then, label %if.else31 if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 + %_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 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 1 %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,43 +1784,43 @@ 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 - %12 = load ptr, ptr %_M_node12, align 8 + %_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 1 %cmp13 = icmp ult ptr %11, %12 br i1 %cmp13, label %if.then14, label %if.else if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 + %_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 1 + %_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 1 %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 %15 = load ptr, ptr %__new_nstart, align 8 %call = call noundef ptr @_ZSt4copyIPPP1AS3_ET0_T_S5_S4_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) br label %if.end if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 + %_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 1 + %_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 1 %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,28 +1828,28 @@ if.end: ; preds = %if.else, %if.then14 br label %if.end65 if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 + %_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 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 %add38 = add i64 %add37, 2 store i64 %add38, ptr %__new_map_size, align 8 %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) + %call39 = call noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %22) store ptr %call39, ptr %__new_map, align 8 %23 = load ptr, ptr %__new_map, align 8 %24 = load i64, ptr %__new_map_size, align 8 %25 = load i64, ptr %__new_num_nodes, align 8 %sub40 = sub i64 %24, %25 %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 + %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 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 + %_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 1 + %_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 1 %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 %30 = load ptr, ptr %__new_nstart, align 8 %call56 = call noundef ptr @_ZSt4copyIPPP1AS3_ET0_T_S5_S4_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #5 + %_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 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 1 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 + %_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 1 %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 + %_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 1 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 1 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 1 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,74 +2171,100 @@ 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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIP1ASaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIP1ASaIS1_EE5frontEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Deque_iterator", align 8 + %ref.tmp = alloca %"struct.std::_Deque_iterator", align 1 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 1 %ref.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #11 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIP1ARS1_PS1_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %ref.tmp) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIP1ARS1_PS1_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIP1ARS1_PS1_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE9pop_frontEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start5, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur6, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE7destroyIS1_EEvRS2_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %2) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 2 - %_M_cur9 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start8, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur9, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %3, i32 1 - store ptr %incdec.ptr, ptr %_M_cur9, align 8 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 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 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %6, i32 1 + store ptr %incdec.ptr, ptr %_M_cur9, align 1 br label %if.end if.else: ; preds = %entry - invoke void @_ZNSt5dequeIP1ASaIS1_EE16_M_pop_front_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + invoke void @_ZNSt5dequeIP1ASaIS1_EE16_M_pop_front_auxEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %if.else @@ -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 { +define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE16_M_pop_front_auxEv(ptr noundef nonnull align 1 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 - %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() + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 + 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 1 + call void @_ZNSt11_Deque_baseIP1ASaIS1_EE18_M_deallocate_nodeEPS1_(ptr noundef nonnull align 1 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 1 + %add.ptr = getelementptr inbounds ptr, ptr %5, i64 1 + call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 1 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 1 + %_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 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..a50936361 100644 --- a/test_cases_bc/basic_cpp_tests/set-1.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/set-1.cpp.bc @@ -1,24 +1,23 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/set-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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_header" = type { %"struct.std::_Rb_tree_node_base", i64 } -%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } -%class.A = type <{ ptr, i32, [4 x i8] }> -%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }> +%"struct.std::_Rb_tree, std::less>::_Rb_tree_impl" = type { 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 }> +%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8 }> %"struct.std::_Rb_tree_const_iterator" = type { ptr } -%"struct.std::pair.0" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }> +%"struct.std::pair.0" = type <{ %"struct.std::_Rb_tree_iterator", i8 }> %"struct.std::_Rb_tree_iterator" = type { ptr } %"struct.std::_Rb_tree_node" = type { %"struct.std::_Rb_tree_node_base", %"struct.__gnu_cxx::__aligned_membuf" } -%"struct.__gnu_cxx::__aligned_membuf" = type { [16 x i8] } -%"struct.std::pair.3" = type { ptr, ptr } +%"struct.__gnu_cxx::__aligned_membuf" = type { [12 x i8] } +%"struct.std::pair.2" = type { ptr, ptr } %"struct.std::_Identity" = type { i8 } %"struct.std::_Rb_tree, std::less>::_Alloc_node" = type { ptr } @@ -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,82 +290,63 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %aset = alloca %"class.std::set", align 8 - %a = alloca %class.A, align 8 + %aset = alloca %"class.std::set", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %coerce = alloca %"struct.std::pair", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %it = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - invoke void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) %a, i32 noundef 0) + call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(37) %aset) #11 + invoke void @_ZN1AC2Ei(ptr noundef nonnull align 1 dereferenceable(12) %a, i32 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = invoke { ptr, i8 } @_ZNSt3setI1ASt4lessIS0_ESaIS0_EE6insertERKS0_(ptr noundef nonnull align 8 dereferenceable(48) %aset, ptr noundef nonnull align 8 dereferenceable(12) %a) + %call = invoke { ptr, i8 } @_ZNSt3setI1ASt4lessIS0_ESaIS0_EE6insertERKS0_(ptr noundef nonnull align 1 dereferenceable(37) %aset, ptr noundef nonnull align 1 dereferenceable(12) %a) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - %call2 = call ptr @_ZNKSt3setI1ASt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %it, i32 0, i32 0 - store ptr %call2, ptr %coerce.dive, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt23_Rb_tree_const_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %coerce, ptr align 8 %tmp.coerce, i64 9, i1 false) + %call2 = call ptr @_ZNKSt3setI1ASt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 + %call3 = call noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt23_Rb_tree_const_iteratorI1AEdeEv(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %4, align 8 + %0 = load ptr, ptr %aptr, align 8 + %1 = load ptr, ptr %ptr, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %6 = load ptr, ptr %vfn, align 8 - invoke void %6(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef %5) + %2 = load ptr, ptr %vfn, align 8 + invoke void %2(ptr noundef nonnull align 1 dereferenceable(12) %0, ptr noundef %1) to label %invoke.cont4 unwind label %lpad invoke.cont4: ; preds = %invoke.cont1 store i32 0, ptr %retval, align 4 - call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - %7 = load i32, ptr %retval, align 4 - ret i32 %7 + call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %aset) #11 + %3 = load i32, ptr %retval, align 4 + ret i32 %3 lpad: ; preds = %invoke.cont1, %invoke.cont, %entry - %8 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } cleanup - %9 = extractvalue { ptr, i32 } %8, 0 - store ptr %9, ptr %exn.slot, align 8 - %10 = extractvalue { ptr, i32 } %8, 1 - store i32 %10, ptr %ehselector.slot, align 4 - call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 + %5 = extractvalue { ptr, i32 } %4, 0 + store ptr %5, ptr %exn.slot, align 8 + %6 = extractvalue { ptr, i32 } %4, 1 + store i32 %6, ptr %ehselector.slot, align 4 + call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %aset) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -398,154 +357,150 @@ 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 1 dereferenceable(37) %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 1 dereferenceable(37) %_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 1 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 1 + %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 + store i32 %0, ptr %data, align 1 ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt3setI1ASt4lessIS0_ESaIS0_EE6insertERKS0_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(12) %__x) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, i8 } @_ZNSt3setI1ASt4lessIS0_ESaIS0_EE6insertERKS0_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 1 dereferenceable(12) %__x) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::pair", align 1 %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 - %__p = alloca %"struct.std::pair.0", align 8 + %__p = alloca %"struct.std::pair.0", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %retval.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 + %call = call { ptr, i8 } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE16_M_insert_uniqueIRKS0_EESt4pairISt17_Rb_tree_iteratorIS0_EbEOT_(ptr noundef nonnull align 1 dereferenceable(37) %_M_t, ptr noundef nonnull align 1 dereferenceable(12) %0) + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %__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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 dereferenceable(8) %first, ptr noundef nonnull align 1 dereferenceable(1) %second) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %1 = load { ptr, i8 }, ptr %retval.coerce, align 8 + ret { ptr, i8 } %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) #4 + ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt3setI1ASt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNKSt3setI1ASt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 + %_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 1 dereferenceable(37) %_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 1 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 + %0 = load ptr, ptr %coerce.dive2, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt23_Rb_tree_const_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt23_Rb_tree_const_iteratorI1AEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %0) ret ptr %call } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %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_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 1 dereferenceable(37) %_M_t) #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_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(37) %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 @_ZNSaISt13_Rb_tree_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt20_Rb_tree_key_compareISt4lessI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #5 + %_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 1 dereferenceable(37) %_M_impl) #11 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 { +; 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 1 dereferenceable(37) %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_allocatorISt13_Rb_tree_nodeI1AEEC2Ev(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 1 + call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 1 dereferenceable(36) %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 1 dereferenceable(36) %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 - store i32 0, ptr %_M_color, align 8 - invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this1) + %_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 1 + invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 1 dereferenceable(36) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -555,45 +510,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 { +define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 1 dereferenceable(36) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - store ptr null, ptr %_M_parent, align 8 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header3, i32 0, i32 2 - store ptr %_M_header2, ptr %_M_left, align 8 - %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header5, i32 0, i32 3 - store ptr %_M_header4, ptr %_M_right, align 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_node_count, align 8 + %_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 1 + %_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 1 + %_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 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 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() #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) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -602,7 +548,7 @@ declare ptr @__cxa_begin_catch(ptr) declare void @_ZSt9terminatev() ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 dereferenceable(12) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %i.addr = alloca ptr, align 8 @@ -615,31 +561,31 @@ 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 1 dereferenceable(37) %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 - 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) + %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this1) #11 + invoke void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_eraseEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %_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 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_eraseEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_eraseEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -656,13 +602,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 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) + %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 @@ -672,26 +618,25 @@ while.end: ; preds = %while.cond } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { 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 1 dereferenceable(37) %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 1 dereferenceable(37) %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,8 +646,8 @@ entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_right, align 8 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_right, align 1 ret ptr %1 } @@ -712,13 +657,13 @@ entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 - %1 = load ptr, ptr %_M_left, align 8 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 + %1 = load ptr, ptr %_M_left, align 1 ret ptr %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__p) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -726,174 +671,159 @@ 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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 { +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 1 dereferenceable(37) %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 1 dereferenceable(37) %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) + %call2 = invoke noundef ptr @_ZNSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %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 { +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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 { +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 1 dereferenceable(37) %this) #2 comdat align 2 { 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_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 1 dereferenceable(12) %_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 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %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 1 dereferenceable(12) %this1) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_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, 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) #6 -; 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 1 dereferenceable(37) %this) #2 comdat align 2 { entry: %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 1 + %_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 1 + 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 @@ -902,64 +832,66 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE16_M_insert_uniqueIRKS0_EESt4pairISt17_Rb_tree_iteratorIS0_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(12) %__v) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, i8 } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE16_M_insert_uniqueIRKS0_EESt4pairISt17_Rb_tree_iteratorIS0_EbEOT_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 1 dereferenceable(12) %__v) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair.0", align 8 + %retval = alloca %"struct.std::pair.0", align 1 %this.addr = alloca ptr, align 8 %__v.addr = alloca ptr, align 8 - %__res = alloca %"struct.std::pair.3", align 8 + %__res = alloca %"struct.std::pair.2", align 1 %ref.tmp = alloca %"struct.std::_Identity", align 1 - %__an = alloca %"struct.std::_Rb_tree, std::less>::_Alloc_node", align 8 - %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 8 + %__an = alloca %"struct.std::_Rb_tree, std::less>::_Alloc_node", align 1 + %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 1 %ref.tmp6 = alloca i8, align 1 - %ref.tmp7 = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp7 = alloca %"struct.std::_Rb_tree_iterator", align 1 %ref.tmp9 = alloca i8, align 1 + %retval.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 %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 + %call = call noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(12) %0) + %call2 = call { ptr, ptr } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE24_M_get_insert_unique_posERKS0_(ptr noundef nonnull align 1 dereferenceable(37) %this1, ptr noundef nonnull align 1 dereferenceable(12) %call) + %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 + store ptr %2, ptr %1, align 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 - %5 = load ptr, ptr %second, align 8 + store ptr %4, ptr %3, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.2", ptr %__res, i32 0, i32 1 + %5 = load ptr, ptr %second, align 1 %tobool = icmp ne ptr %5, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_(ptr noundef nonnull align 8 dereferenceable(8) %__an, ptr noundef nonnull align 8 dereferenceable(48) %this1) - %first = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 0 - %6 = load ptr, ptr %first, align 8 - %second4 = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 1 - %7 = load ptr, ptr %second4, align 8 + call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_(ptr noundef nonnull align 1 dereferenceable(8) %__an, ptr noundef nonnull align 1 dereferenceable(37) %this1) + %first = getelementptr inbounds nuw %"struct.std::pair.2", ptr %__res, i32 0, i32 0 + %6 = load ptr, ptr %first, align 1 + %second4 = getelementptr inbounds nuw %"struct.std::pair.2", ptr %__res, i32 0, i32 1 + %7 = load ptr, ptr %second4, align 1 %8 = load ptr, ptr %__v.addr, align 8 - %call5 = call ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE10_M_insert_IRKS0_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS0_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(8) %__an) - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp3, i32 0, i32 0 - store ptr %call5, ptr %coerce.dive, align 8 + %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 1 dereferenceable(37) %this1, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 1 dereferenceable(12) %8, ptr noundef nonnull align 1 dereferenceable(8) %__an) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %ref.tmp3, i32 0, i32 0 + store ptr %call5, ptr %coerce.dive, align 1 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp3, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp6) br label %return if.end: ; preds = %entry - %first8 = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 0 - %9 = load ptr, ptr %first8, align 8 - call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef %9) #5 + %first8 = getelementptr inbounds nuw %"struct.std::pair.2", ptr %__res, i32 0, i32 0 + %9 = load ptr, ptr %first8, align 1 + call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp7, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp9) br label %return return: ; preds = %if.end, %if.then - %10 = load { ptr, i8 }, ptr %retval, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %10 = load { ptr, i8 }, ptr %retval.coerce, align 8 ret { ptr, i8 } %10 } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairISt23_Rb_tree_const_iteratorI1AEbEC2IRSt17_Rb_tree_iteratorIS1_ERbLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { +; 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 1 dereferenceable(9) %this, ptr noundef nonnull align 1 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,36 +900,36 @@ 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 1 dereferenceable(8) %first, ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE24_M_get_insert_unique_posERKS0_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(12) %__k) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE24_M_get_insert_unique_posERKS0_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 1 dereferenceable(12) %__k) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair.3", align 8 + %retval = alloca %"struct.std::pair.2", align 1 %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 + %__j = alloca %"struct.std::_Rb_tree_iterator", align 1 + %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 1 dereferenceable(37) %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 1 dereferenceable(37) %this1) #11 store ptr %call2, ptr %__y, align 8 store i8 1, ptr %__comp, align 1 br label %while.cond @@ -1010,26 +942,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 + %call3 = call noundef nonnull align 1 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_impl, ptr noundef nonnull align 1 dereferenceable(12) %2, ptr noundef nonnull align 1 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,56 +970,55 @@ 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 1 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 - 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 + %call8 = call ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 + %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorI1AES3_(ptr noundef nonnull align 1 dereferenceable(8) %__j, ptr noundef nonnull align 1 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 1 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorI1AEmmEv(ptr noundef nonnull align 1 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 - %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) + %_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 1 + %call14 = call noundef nonnull align 1 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 1 dereferenceable(12) %call14, ptr noundef nonnull align 1 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 1 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 1 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 - %11 = load { ptr, ptr }, ptr %retval, align 8 +return: ; preds = %if.end17, %if.then16, %if.then10 + %11 = load { ptr, ptr }, ptr %retval, align 1 ret { ptr, ptr } %11 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(12) %__x) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(12) %__x) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1099,24 +1029,24 @@ 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(37) %__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 + store ptr %0, ptr %_M_t, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE10_M_insert_IRKS0_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS0_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(12) %__v, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen) #0 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE10_M_insert_IRKS0_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS0_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef nonnull align 1 dereferenceable(12) %__v, ptr noundef nonnull align 1 dereferenceable(8) %__node_gen) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -1137,51 +1067,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 1 dereferenceable(37) %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) + %call3 = call noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 1 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) + %call4 = call noundef nonnull align 1 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_impl, ptr noundef nonnull align 1 dereferenceable(12) %call3, ptr noundef nonnull align 1 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) + %call6 = call noundef ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeclIRKS0_EEPSt13_Rb_tree_nodeIS0_EOT_(ptr noundef nonnull align 1 dereferenceable(8) %5, ptr noundef nonnull align 1 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 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl7, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %tobool, ptr noundef %8, ptr noundef %9, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr9 = getelementptr inbounds i8, ptr %_M_impl8, i64 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr9, i32 0, i32 1 - %10 = load i64, ptr %_M_node_count, align 8 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl7, i64 1 + %_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 1 dereferenceable(28) %_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 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 1 %inc = add i64 %10, 1 - store i64 %inc, ptr %_M_node_count, align 8 + store i64 %inc, ptr %_M_node_count, align 1 %11 = load ptr, ptr %__z, align 8 - call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %11) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %12 = load ptr, ptr %coerce.dive, align 8 + call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(9) %this, ptr noundef nonnull align 1 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,46 +1119,46 @@ 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 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %first, ptr align 1 %0, i64 8, i1 false) + %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 1 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 1 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 + store ptr %0, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_M_endEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { 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_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 1 + %_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 -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(12) %__x, ptr noundef nonnull align 8 dereferenceable(12) %__y) #0 comdat align 2 { +define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(12) %__x, ptr noundef nonnull align 1 dereferenceable(12) %__y) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1240,59 +1169,59 @@ entry: %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 %1 = load ptr, ptr %__y.addr, align 8 - %call = call noundef zeroext i1 @_ZNK1AltERKS_(ptr noundef nonnull align 8 dereferenceable(12) %0, ptr noundef nonnull align 8 dereferenceable(12) %1) + %call = call noundef zeroext i1 @_ZNK1AltERKS_(ptr noundef nonnull align 1 dereferenceable(12) %0, ptr noundef nonnull align 1 dereferenceable(12) %1) ret i1 %call } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt13_Rb_tree_nodeIS0_E(ptr noundef %__x) #0 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt13_Rb_tree_nodeIS0_E(ptr noundef %__x) #0 comdat align 2 { entry: %__x.addr = alloca ptr, align 8 %ref.tmp = alloca %"struct.std::_Identity", align 1 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - %call1 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(12) %call) + %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %0) + %call1 = call noundef nonnull align 1 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(12) %call) ret ptr %call1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorI1AES3_(ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) #2 comdat { +define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorI1AES3_(ptr noundef nonnull align 1 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(8) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_node, align 1 %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 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %_M_node1, align 1 %cmp = icmp eq ptr %1, %3 ret i1 %cmp } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 1 + %_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 1 + call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 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 1 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,143 +1230,143 @@ 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.2", 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 + store ptr %1, ptr %first, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.2", 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 + store ptr %3, ptr %second, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorI1AEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorI1AEmmEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %0) #15 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - store ptr %call, ptr %_M_node2, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %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 1 ret ptr %this1 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %__x) #0 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %__x) #0 comdat align 2 { entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt13_Rb_tree_nodeIS0_E(ptr noundef %0) + %call = call noundef nonnull align 1 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt13_Rb_tree_nodeIS0_E(ptr noundef %0) ret ptr %call } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { +; 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 1 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.2", 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 + store ptr %1, ptr %first, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.2", 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 + store ptr %3, ptr %second, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNK1AltERKS_(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr noundef nonnull align 8 dereferenceable(12) %a) #0 comdat align 2 { +define linkonce_odr dso_local noundef zeroext i1 @_ZNK1AltERKS_(ptr noundef nonnull align 1 dereferenceable(12) %this, ptr noundef nonnull align 1 dereferenceable(12) %a) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %a.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %a, ptr %a.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %data = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load i32, ptr %data, align 8 + %data = getelementptr inbounds nuw %class.A, ptr %this1, i32 0, i32 1 + %0 = load i32, ptr %data, align 1 %1 = load ptr, ptr %a.addr, align 8 - %call = call noundef i32 @_ZNK1A7getDataEv(ptr noundef nonnull align 8 dereferenceable(12) %1) + %call = call noundef i32 @_ZNK1A7getDataEv(ptr noundef nonnull align 1 dereferenceable(12) %1) %cmp = icmp slt i32 %0, %call ret i1 %cmp } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i32 @_ZNK1A7getDataEv(ptr noundef nonnull align 8 dereferenceable(12) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i32 @_ZNK1A7getDataEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %data = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load i32, ptr %data, align 8 + %data = getelementptr inbounds nuw %class.A, ptr %this1, i32 0, i32 1 + %0 = load i32, ptr %data, align 1 ret i32 %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_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 1 dereferenceable(12) %_M_storage) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %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 1 dereferenceable(12) %this1) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_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 { +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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(12) %__arg) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__arg.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__arg, ptr %__arg.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"struct.std::_Rb_tree, std::less>::_Alloc_node", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_t, align 8 + %_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 1 %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) + %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE14_M_create_nodeIJRKS0_EEEPSt13_Rb_tree_nodeIS0_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %0, ptr noundef nonnull align 1 dereferenceable(12) %1) ret ptr %call } ; Function Attrs: nounwind -declare void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4 +declare void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(28)) #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 { +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 1 dereferenceable(37) %this, ptr noundef nonnull align 1 dereferenceable(12) %__args) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 @@ -1445,29 +1374,41 @@ entry: store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) + %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 1 dereferenceable(37) %this1) store ptr %call, ptr %__tmp, align 8 %0 = load ptr, ptr %__tmp, align 8 %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE17_M_construct_nodeIJRKS0_EEEvPSt13_Rb_tree_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(12) %1) + call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE17_M_construct_nodeIJRKS0_EEEvPSt13_Rb_tree_nodeIS0_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %this1, ptr noundef %0, ptr noundef nonnull align 1 dereferenceable(12) %1) %2 = load ptr, ptr %__tmp, align 8 ret ptr %2 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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: +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 1 dereferenceable(37) %this, ptr noundef %__node, ptr noundef nonnull align 1 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 +1417,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 1 dereferenceable(37) %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) + %call2 = call noundef ptr @_ZNSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(40) %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 1 dereferenceable(12) %6, ptr noundef nonnull align 1 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,161 +1449,122 @@ 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, 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, 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, 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_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 1 dereferenceable(12) %this, ptr noundef nonnull align 1 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 1 + %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 - %2 = load i32, ptr %data2, align 8 - store i32 %2, ptr %data, align 8 + %data2 = getelementptr inbounds nuw %class.A, ptr %1, i32 0, i32 1 + %2 = load i32, ptr %data2, align 1 + store i32 %2, ptr %data, align 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_node2, align 1 + store ptr %1, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorI1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 1 + %_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 1 + call void @_ZNSt23_Rb_tree_const_iteratorI1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 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 1 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() + store ptr %0, ptr %_M_node, align 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +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 = { 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 +1574,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..15ffc7ce7 100644 --- a/test_cases_bc/basic_cpp_tests/set-2.cpp.bc +++ b/test_cases_bc/basic_cpp_tests/set-2.cpp.bc @@ -1,24 +1,23 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/set-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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_header" = type { %"struct.std::_Rb_tree_node_base", i64 } -%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } +%"struct.std::_Rb_tree, std::less>::_Rb_tree_impl" = type { 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 } -%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }> +%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8 }> %"struct.std::_Rb_tree_const_iterator" = type { ptr } -%"struct.std::pair.0" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }> +%"struct.std::pair.0" = type <{ %"struct.std::_Rb_tree_iterator", i8 }> %"struct.std::_Rb_tree_iterator" = type { ptr } %"struct.std::_Rb_tree_node" = type { %"struct.std::_Rb_tree_node_base", %"struct.__gnu_cxx::__aligned_membuf" } %"struct.__gnu_cxx::__aligned_membuf" = type { [8 x i8] } -%"struct.std::pair.3" = type { ptr, ptr } +%"struct.std::pair.2" = type { ptr, ptr } %"struct.std::_Identity" = type { i8 } %"struct.std::_Rb_tree, std::less>::_Alloc_node" = 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,82 +286,63 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %aset = alloca %"class.std::set", align 8 - %a = alloca %class.A, align 8 + %aset = alloca %"class.std::set", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %coerce = alloca %"struct.std::pair", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %it = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 + call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(37) %aset) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + %call = invoke { ptr, i8 } @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 1 dereferenceable(37) %aset, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - %call1 = call ptr @_ZNKSt3setIPK1ASt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %it, i32 0, i32 0 - store ptr %call1, ptr %coerce.dive, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %4 = load ptr, ptr %call2, align 8 - store ptr %4, ptr %aptr, align 8 - %5 = load ptr, ptr %aptr, align 8 - %6 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %5, align 8 + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %coerce, ptr align 8 %tmp.coerce, i64 9, i1 false) + %call1 = call ptr @_ZNKSt3setIPK1ASt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %it) #11 + %0 = load ptr, ptr %call2, align 8 + store ptr %0, ptr %aptr, align 8 + %1 = load ptr, ptr %aptr, align 8 + %2 = load ptr, ptr %ptr, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %7 = load ptr, ptr %vfn, align 8 - invoke void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) + %3 = load ptr, ptr %vfn, align 8 + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - %8 = load i32, ptr %retval, align 4 - ret i32 %8 + call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %aset) #11 + %4 = load i32, ptr %retval, align 4 + ret i32 %4 lpad: ; preds = %invoke.cont, %entry - %9 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup - %10 = extractvalue { ptr, i32 } %9, 0 - store ptr %10, ptr %exn.slot, align 8 - %11 = extractvalue { ptr, i32 } %9, 1 - store i32 %11, ptr %ehselector.slot, align 4 - call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 + %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 @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %aset) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -394,149 +353,145 @@ 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 1 dereferenceable(37) %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 1 dereferenceable(37) %_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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, i8 } @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::pair", align 1 %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 - %__p = alloca %"struct.std::pair.0", align 8 + %__p = alloca %"struct.std::pair.0", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %retval.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 + %call = call { ptr, i8 } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueIS2_EESt4pairISt17_Rb_tree_iteratorIS2_EbEOT_(ptr noundef nonnull align 1 dereferenceable(37) %_M_t, ptr noundef nonnull align 8 dereferenceable(8) %0) + store { ptr, i8 } %call, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %__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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 dereferenceable(8) %first, ptr noundef nonnull align 1 dereferenceable(1) %second) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %1 = load { ptr, i8 }, ptr %retval.coerce, align 8 + ret { ptr, i8 } %1 } declare i32 @__gxx_personality_v0(...) +; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 + ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt3setIPK1ASt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNKSt3setIPK1ASt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 + %_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 1 dereferenceable(37) %_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 1 + %coerce.dive2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 + %0 = load ptr, ptr %coerce.dive2, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %0) + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(36) %0) ret ptr %call } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 1 dereferenceable(37) %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_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 1 dereferenceable(37) %_M_t) #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_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(37) %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 @_ZNSaISt13_Rb_tree_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt20_Rb_tree_key_compareISt4lessIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #5 + %_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 1 dereferenceable(37) %_M_impl) #11 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 { +; 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 1 dereferenceable(37) %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_allocatorISt13_Rb_tree_nodeIPK1AEEC2Ev(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 1 + call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 1 dereferenceable(36) %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 1 dereferenceable(36) %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 - store i32 0, ptr %_M_color, align 8 - invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this1) + %_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 1 + invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 1 dereferenceable(36) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -546,45 +501,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 { +define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 1 dereferenceable(36) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - store ptr null, ptr %_M_parent, align 8 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header3, i32 0, i32 2 - store ptr %_M_header2, ptr %_M_left, align 8 - %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header5, i32 0, i32 3 - store ptr %_M_header4, ptr %_M_right, align 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_node_count, align 8 + %_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 1 + %_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 1 + %_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 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 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() #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) #11 + call void @_ZSt9terminatev() #12 unreachable } @@ -593,7 +539,7 @@ declare ptr @__cxa_begin_catch(ptr) declare void @_ZSt9terminatev() ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -606,31 +552,31 @@ 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 1 dereferenceable(37) %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 - 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) + %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this1) #11 + invoke void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %_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 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -647,13 +593,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 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) + %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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 @@ -663,26 +609,25 @@ while.end: ; preds = %while.cond } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { 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 1 dereferenceable(37) %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 1 dereferenceable(37) %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,8 +637,8 @@ entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_right, align 8 + %_M_right = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_right, align 1 ret ptr %1 } @@ -703,13 +648,13 @@ entry: %__x.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 - %1 = load ptr, ptr %_M_left, align 8 + %_M_left = getelementptr inbounds nuw %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 + %1 = load ptr, ptr %_M_left, align 1 ret ptr %1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__p) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -717,174 +662,159 @@ 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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 { +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 1 dereferenceable(37) %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 1 dereferenceable(37) %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) + %call2 = invoke noundef ptr @_ZNSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(36) %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 { +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 1 dereferenceable(37) %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 1 dereferenceable(37) %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 { +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 1 dereferenceable(37) %this) #2 comdat align 2 { 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(36) %this) #2 comdat align 2 { 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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #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 1 dereferenceable(8) %this1) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 + %_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, 36 + 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) #6 -; 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 1 dereferenceable(37) %this) #2 comdat align 2 { entry: %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 1 + %_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 1 + 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 @@ -893,64 +823,66 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueIS2_EESt4pairISt17_Rb_tree_iteratorIS2_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(8) %__v) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, i8 } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueIS2_EESt4pairISt17_Rb_tree_iteratorIS2_EbEOT_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 8 dereferenceable(8) %__v) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair.0", align 8 + %retval = alloca %"struct.std::pair.0", align 1 %this.addr = alloca ptr, align 8 %__v.addr = alloca ptr, align 8 - %__res = alloca %"struct.std::pair.3", align 8 + %__res = alloca %"struct.std::pair.2", align 1 %ref.tmp = alloca %"struct.std::_Identity", align 1 - %__an = alloca %"struct.std::_Rb_tree, std::less>::_Alloc_node", align 8 - %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 8 + %__an = alloca %"struct.std::_Rb_tree, std::less>::_Alloc_node", align 1 + %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 1 %ref.tmp6 = alloca i8, align 1 - %ref.tmp7 = alloca %"struct.std::_Rb_tree_iterator", align 8 + %ref.tmp7 = alloca %"struct.std::_Rb_tree_iterator", align 1 %ref.tmp9 = alloca i8, align 1 + %retval.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 %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 + %call2 = call { ptr, ptr } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE24_M_get_insert_unique_posERKS2_(ptr noundef nonnull align 1 dereferenceable(37) %this1, ptr noundef nonnull align 8 dereferenceable(8) %call) + %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 + store ptr %2, ptr %1, align 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 - %5 = load ptr, ptr %second, align 8 + store ptr %4, ptr %3, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.2", ptr %__res, i32 0, i32 1 + %5 = load ptr, ptr %second, align 1 %tobool = icmp ne ptr %5, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeC2ERS8_(ptr noundef nonnull align 8 dereferenceable(8) %__an, ptr noundef nonnull align 8 dereferenceable(48) %this1) - %first = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 0 - %6 = load ptr, ptr %first, align 8 - %second4 = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 1 - %7 = load ptr, ptr %second4, align 8 + call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeC2ERS8_(ptr noundef nonnull align 1 dereferenceable(8) %__an, ptr noundef nonnull align 1 dereferenceable(37) %this1) + %first = getelementptr inbounds nuw %"struct.std::pair.2", ptr %__res, i32 0, i32 0 + %6 = load ptr, ptr %first, align 1 + %second4 = getelementptr inbounds nuw %"struct.std::pair.2", ptr %__res, i32 0, i32 1 + %7 = load ptr, ptr %second4, align 1 %8 = load ptr, ptr %__v.addr, align 8 - %call5 = call ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE10_M_insert_IS2_NS8_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS2_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %__an) - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp3, i32 0, i32 0 - store ptr %call5, ptr %coerce.dive, align 8 + %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 1 dereferenceable(37) %this1, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 1 dereferenceable(8) %__an) + %coerce.dive = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %ref.tmp3, i32 0, i32 0 + store ptr %call5, ptr %coerce.dive, align 1 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp3, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp6) br label %return if.end: ; preds = %entry - %first8 = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 0 - %9 = load ptr, ptr %first8, align 8 - call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef %9) #5 + %first8 = getelementptr inbounds nuw %"struct.std::pair.2", ptr %__res, i32 0, i32 0 + %9 = load ptr, ptr %first8, align 1 + call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp7, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp9) br label %return return: ; preds = %if.end, %if.then - %10 = load { ptr, i8 }, ptr %retval, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %10 = load { ptr, i8 }, ptr %retval.coerce, align 8 ret { ptr, i8 } %10 } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairISt23_Rb_tree_const_iteratorIPK1AEbEC2IRSt17_Rb_tree_iteratorIS3_ERbLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { +; 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 1 dereferenceable(9) %this, ptr noundef nonnull align 1 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,36 +891,36 @@ 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 1 dereferenceable(8) %first, ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE24_M_get_insert_unique_posERKS2_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE24_M_get_insert_unique_posERKS2_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair.3", align 8 + %retval = alloca %"struct.std::pair.2", align 1 %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 + %__j = alloca %"struct.std::_Rb_tree_iterator", align 1 + %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 1 + %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 1 dereferenceable(37) %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 1 dereferenceable(37) %this1) #11 store ptr %call2, ptr %__y, align 8 store i8 1, ptr %__comp, align 1 br label %while.cond @@ -1001,28 +933,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,53 +963,52 @@ 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 1 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 - 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 + %call8 = call ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 + %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorIPK1AES5_(ptr noundef nonnull align 1 dereferenceable(8) %__j, ptr noundef nonnull align 1 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 1 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 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorIPK1AEmmEv(ptr noundef nonnull align 1 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 - %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 + %_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 1 + %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 1 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 1 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 - %15 = load { ptr, ptr }, ptr %retval, align 8 +return: ; preds = %if.end17, %if.then16, %if.then10 + %15 = load { ptr, ptr }, ptr %retval, align 1 ret { ptr, ptr } %15 } @@ -1094,24 +1024,24 @@ 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(37) %__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 + store ptr %0, ptr %_M_t, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE10_M_insert_IS2_NS8_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS2_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__v, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen) #0 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE10_M_insert_IS2_NS8_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS2_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 1 dereferenceable(37) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__v, ptr noundef nonnull align 1 dereferenceable(8) %__node_gen) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 %__p.addr = alloca ptr, align 8 @@ -1132,53 +1062,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 1 dereferenceable(37) %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) + %call6 = call noundef ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeclIS2_EEPSt13_Rb_tree_nodeIS2_EOT_(ptr noundef nonnull align 1 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 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl7, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %tobool, ptr noundef %10, ptr noundef %11, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr9 = getelementptr inbounds i8, ptr %_M_impl8, i64 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr9, i32 0, i32 1 - %12 = load i64, ptr %_M_node_count, align 8 + %_M_impl7 = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl7, i64 1 + %_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 1 dereferenceable(28) %_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 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 1 %inc = add i64 %12, 1 - store i64 %inc, ptr %_M_node_count, align 8 + store i64 %inc, ptr %_M_node_count, align 1 %13 = load ptr, ptr %__z, align 8 - call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %13) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %14 = load ptr, ptr %coerce.dive, align 8 + call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(9) %this, ptr noundef nonnull align 1 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,41 +1116,41 @@ 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 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %first, ptr align 1 %0, i64 8, i1 false) + %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 1 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 1 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 + store ptr %0, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_M_endEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { 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_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 1 + %_M_header = getelementptr inbounds nuw %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 ret ptr %_M_header } @@ -1250,48 +1179,48 @@ entry: %ref.tmp = alloca %"struct.std::_Identity", align 1 store ptr %__x, ptr %__x.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %0) + %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(36) %0) %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt9_IdentityIPK1AEclERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %call) ret ptr %call1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorIPK1AES5_(ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) #2 comdat { +define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorIPK1AES5_(ptr noundef nonnull align 1 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(8) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_node, align 1 %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 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %_M_node1, align 1 %cmp = icmp eq ptr %1, %3 ret i1 %cmp } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 1 + %_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 1 + call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 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 1 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,28 +1229,28 @@ 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.2", 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 + store ptr %1, ptr %first, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.2", 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 + store ptr %3, ptr %second, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorIPK1AEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorIPK1AEmmEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %0) #15 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - store ptr %call, ptr %_M_node2, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_node, align 1 + %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 1 ret ptr %this1 } @@ -1335,24 +1264,24 @@ 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 1 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.2", 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 + store ptr %1, ptr %first, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair.2", 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 + store ptr %3, ptr %second, align 1 ret void } @@ -1369,59 +1298,59 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(36) %this) #2 comdat align 2 { 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 1 dereferenceable(8) %_M_storage) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 + %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 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_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 + %_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 { +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 1 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__arg) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__arg.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__arg, ptr %__arg.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"struct.std::_Rb_tree, std::less>::_Alloc_node", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_t, align 8 + %_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 1 %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) + %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE14_M_create_nodeIJS2_EEEPSt13_Rb_tree_nodeIS2_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) ret ptr %call } ; Function Attrs: nounwind -declare void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4 +declare void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(28)) #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 { +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 1 dereferenceable(37) %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 @@ -1429,29 +1358,41 @@ entry: store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) + %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 1 dereferenceable(37) %this1) store ptr %call, ptr %__tmp, align 8 %0 = load ptr, ptr %__tmp, align 8 %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE17_M_construct_nodeIJS2_EEEvPSt13_Rb_tree_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(8) %1) + call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE17_M_construct_nodeIJS2_EEEvPSt13_Rb_tree_nodeIS2_EDpOT_(ptr noundef nonnull align 1 dereferenceable(37) %this1, ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(8) %1) %2 = load ptr, ptr %__tmp, align 8 ret ptr %2 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 1 dereferenceable(37) %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 1 dereferenceable(37) %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: +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 1 dereferenceable(37) %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 +1401,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 1 dereferenceable(37) %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) + %call2 = call noundef ptr @_ZNSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 1 dereferenceable(36) %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,145 +1434,105 @@ 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, 256204778801521550 + 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, 512409557603043100 + 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, 36 + %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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 + %_M_node2 = getelementptr inbounds nuw %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_node2, align 1 + store ptr %1, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(37) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 8 + %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorIPK1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 + %_M_impl = getelementptr inbounds nuw %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 + %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 1 + %_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 1 + call void @_ZNSt23_Rb_tree_const_iteratorIPK1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 1 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 1 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 1 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() + store ptr %0, ptr %_M_node, align 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +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 = { 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 +1542,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..4211e17c6 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,44 +182,44 @@ 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 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -233,7 +233,7 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #2 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %i.addr = alloca ptr, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..b1ee85c7e 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,54 +186,54 @@ 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 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 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 1 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 - %vtable2 = load ptr, ptr %3, align 8 + %vtable2 = load ptr, ptr %3, align 1 %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 0 %5 = load ptr, ptr %vfn3, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef %4) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -250,7 +250,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..37e4d48a4 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,50 +190,50 @@ 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 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) %3 = load ptr, ptr %p, align 8 %4 = load ptr, ptr %j, align 8 - %vtable1 = load ptr, ptr %3, align 8 + %vtable1 = load ptr, ptr %3, align 1 %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 1 %5 = load ptr, ptr %vfn2, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef %4) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -250,7 +250,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1gEPf(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %j.addr = alloca ptr, align 8 @@ -267,7 +267,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -284,7 +284,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1gEPf(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %j.addr = alloca ptr, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..a31688508 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,44 +182,44 @@ 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 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -233,7 +233,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..397e2bd75 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,31 +302,15 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %astack = alloca %"class.std::stack", align 8 - %a = alloca %class.A, align 8 + %astack = alloca %"class.std::stack", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 %aptr = alloca ptr, align 8 @@ -370,32 +318,32 @@ 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 @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %astack, ptr noundef nonnull align 8 dereferenceable(8) %a) + call void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 1 dereferenceable(80) %astack) + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %a) #10 + invoke void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %astack, ptr noundef nonnull align 1 dereferenceable(8) %a) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) + %call = invoke noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3topEv(ptr noundef nonnull align 1 dereferenceable(80) %astack) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store ptr %call, ptr %aptr, align 8 - invoke void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) + invoke void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 1 dereferenceable(80) %astack) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont1 %0 = load ptr, ptr %aptr, align 8 %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont2 store i32 0, ptr %retval, align 4 - call void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #5 + call void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(80) %astack) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -417,79 +365,79 @@ 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 1 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 - 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) + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + call void @llvm.memset.p0.i64(ptr align 1 %c, i8 0, i64 80, i1 false) + call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__x, ptr %__x.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 + %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) + call void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %c, ptr noundef nonnull align 1 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3topEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + %call = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE4backEv(ptr noundef nonnull align 1 dereferenceable(80) %c) #10 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeI1ASaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeI1ASaIS0_EE8pop_backEv(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(80) %c) #10 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -502,85 +450,89 @@ 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 1 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 + %agg.tmp = alloca %"struct.std::_Deque_iterator", align 1 + %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) + call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #10 + call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp2, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #10 + invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_finish) #10 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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,77 +540,77 @@ 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 1 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 - %0 = load ptr, ptr %_M_map, align 8 + %_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 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #5 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #5 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 1 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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(32) %this, ptr noundef nonnull align 1 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 - %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_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur2, align 1 + store ptr %1, ptr %_M_cur, align 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 - %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_first3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %_M_first3, align 1 + store ptr %3, ptr %_M_first, align 1 + %_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 - %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_last4 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %_M_last4, align 1 + store ptr %5, ptr %_M_last, align 1 + %_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 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 + %_M_node5 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 + %7 = load ptr, ptr %_M_node5, align 1 + store ptr %7, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -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 1 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,8 +647,12 @@ 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 1 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,129 +760,83 @@ 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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,29 +845,29 @@ 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 1 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 - call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) + call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %this1) ret void } -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 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 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) + %_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 1 dereferenceable(80) %_M_impl) #10 + invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 1 dereferenceable(80) %_M_impl) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -977,19 +891,24 @@ 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 1 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 1 dereferenceable(80) %this1) #10 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__num_elements.addr = alloca i64, align 8 @@ -1014,34 +933,34 @@ 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 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 + %_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 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 1 + %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %3) + %_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 1 + %_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 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 1 %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 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) + invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #5 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #16 + %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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 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 1 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -1089,35 +1008,35 @@ 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 1 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 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 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 1 %24 = load i64, ptr %__num_elements.addr, align 8 %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds %class.A, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 + %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 1 ret void eh.resume: ; preds = %invoke.cont24 @@ -1131,63 +1050,44 @@ 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_map, align 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 1 + %_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 1 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 1 dereferenceable(32) %_M_finish) #10 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 1 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 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_first, align 1 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr null, ptr %_M_last, align 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr null, ptr %_M_node, align 1 ret void } @@ -1222,8 +1122,12 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 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 1 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 @@ -1260,7 +1175,7 @@ eh.resume: ; preds = %lpad } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -1283,7 +1198,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body @@ -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 1 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 @@ -1357,7 +1272,7 @@ declare void @__cxa_rethrow() declare void @__cxa_end_catch() ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__new_node.addr = alloca ptr, align 8 @@ -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 - store ptr %0, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr %0, ptr %_M_node, align 1 %1 = load ptr, ptr %__new_node.addr, align 8 %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #5 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr %2, ptr %_M_first, align 1 + %_M_first2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %3 = load ptr, ptr %_M_first2, align 1 + %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 - store ptr %add.ptr, ptr %_M_last, align 8 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr %add.ptr, ptr %_M_last, align 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 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 @@ -1502,176 +1404,180 @@ 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: +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 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_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 + %1 = load ptr, ptr %_M_last, align 1 %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 + %_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 1 %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 + 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 1 dereferenceable(8) %7, ptr noundef nonnull align 1 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 1 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, i32 1 + store ptr %incdec.ptr, ptr %_M_cur10, align 1 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 1 dereferenceable(80) %this1, ptr noundef nonnull align 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #10 + %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 1) + %call3 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 + %_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 1 %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 1 dereferenceable(8) %6, ptr noundef nonnull align 1 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 1 + %add.ptr12 = getelementptr inbounds ptr, ptr %8, i64 1 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 + %_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 1 dereferenceable(32) %_M_finish, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #10 ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1680,16 +1586,16 @@ 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 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -1700,7 +1606,7 @@ entry: if.then: ; preds = %entry %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) + call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) br label %if.end if.end: ; preds = %if.then, %entry @@ -1708,86 +1614,89 @@ if.end: ; preds = %if.then, %entry } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 1 dereferenceable(32) %__x, ptr noundef nonnull align 1 dereferenceable(32) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #5 + %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 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_node, align 1 %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 + %3 = load ptr, ptr %_M_node1, align 1 %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 1 + %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 1 + %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 1 + %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 1 + %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 1 + %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,18 +1727,8 @@ 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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1841,17 +1740,17 @@ 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 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 + %_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 1 + %_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 1 %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 @@ -1862,28 +1761,28 @@ 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 - %4 = load i64, ptr %_M_map_size, align 8 + %_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 1 %5 = load i64, ptr %__new_num_nodes, align 8 %mul = mul i64 2, %5 %cmp = icmp ugt i64 %4, %mul br i1 %cmp, label %if.then, label %if.else31 if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 + %_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 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 1 %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,43 +1793,43 @@ 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 - %12 = load ptr, ptr %_M_node12, align 8 + %_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 1 %cmp13 = icmp ult ptr %11, %12 br i1 %cmp13, label %if.then14, label %if.else if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 + %_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 1 + %_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 1 %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 %15 = load ptr, ptr %__new_nstart, align 8 %call = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) br label %if.end if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 + %_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 1 + %_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 1 %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,28 +1837,28 @@ if.end: ; preds = %if.else, %if.then14 br label %if.end65 if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 + %_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 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 %add38 = add i64 %add37, 2 store i64 %add38, ptr %__new_map_size, align 8 %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) + %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %22) store ptr %call39, ptr %__new_map, align 8 %23 = load ptr, ptr %__new_map, align 8 %24 = load i64, ptr %__new_map_size, align 8 %25 = load i64, ptr %__new_num_nodes, align 8 %sub40 = sub i64 %24, %25 %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 + %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 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 + %_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 1 + %_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 1 %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 %30 = load ptr, ptr %__new_nstart, align 8 %call56 = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #5 + %_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 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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 1 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 - store ptr %33, ptr %_M_map62, align 8 + %_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 1 %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 + %_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 1 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 1 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 1 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,106 +2180,132 @@ 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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE4backEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__tmp = alloca %"struct.std::_Deque_iterator", align 8 + %__tmp = alloca %"struct.std::_Deque_iterator", align 1 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 1 %__tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #10 + %call = call noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorI1ARS0_PS0_EmmEv(ptr noundef nonnull align 1 dereferenceable(32) %__tmp) #10 + %call2 = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %__tmp) #10 ret ptr %call2 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorI1ARS0_PS0_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorI1ARS0_PS0_EmmEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %_M_first, align 1 %cmp = icmp eq ptr %0, %1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + %2 = load ptr, ptr %_M_node, align 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #5 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %3 = load ptr, ptr %_M_last, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr %3, ptr %_M_cur2, align 8 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 + %_M_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr %3, ptr %_M_cur2, align 1 br label %if.end if.end: ; preds = %if.then, %entry - %_M_cur3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur3, align 8 + %_M_cur3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %4 = load ptr, ptr %_M_cur3, align 1 %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur3, align 8 + store ptr %incdec.ptr, ptr %_M_cur3, align 1 ret ptr %this1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE8pop_backEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 + %_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 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 1 %cmp = icmp ne ptr %0, %1 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish5, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur6, align 8 + %_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 1 %incdec.ptr = getelementptr inbounds %class.A, ptr %2, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur6, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_cur9 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish8, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur9, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %3) #5 + store ptr %incdec.ptr, ptr %_M_cur6, align 1 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 + 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 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_pop_back_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_pop_back_auxEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %if.else @@ -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 { +define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_pop_back_auxEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_first, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %0) #5 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish5, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 + %_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 1 + call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 1 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 1 %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish3, ptr noundef %add.ptr) #5 - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish7, i32 0, i32 2 - %2 = load ptr, ptr %_M_last, align 8 + call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 1 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 1 %add.ptr8 = getelementptr inbounds %class.A, ptr %2, i64 -1 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 0 - store ptr %add.ptr8, ptr %_M_cur, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 3 - %_M_cur13 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish12, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur13, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %3) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_stack_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() + %_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 1 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 + 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..f57f46df8 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/stack-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,31 +302,15 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %astack = alloca %"class.std::stack", align 8 - %a = alloca %class.A, align 8 + %astack = alloca %"class.std::stack", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -371,34 +319,34 @@ 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 @_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 @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEEC2IS5_vEEv(ptr noundef nonnull align 1 dereferenceable(80) %astack) + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + invoke void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE4pushEOS2_(ptr noundef nonnull align 1 dereferenceable(80) %astack, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) + %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3topEv(ptr noundef nonnull align 1 dereferenceable(80) %astack) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont %0 = load ptr, ptr %call, align 8 store ptr %0, ptr %aptr, align 8 - invoke void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) + invoke void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3popEv(ptr noundef nonnull align 1 dereferenceable(80) %astack) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont1 %1 = load ptr, ptr %aptr, align 8 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont2 store i32 0, ptr %retval, align 4 - call void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #5 + call void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(80) %astack) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -420,79 +368,79 @@ 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 1 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 - 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) + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + call void @llvm.memset.p0.i64(ptr align 1 %c, i8 0, i64 80, i1 false) + call void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE4pushEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE4pushEOS2_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__x, ptr %__x.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 + %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) + call void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 1 dereferenceable(80) %c, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3topEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 + %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 1 dereferenceable(80) %c) #10 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3popEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeIPK1ASaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 + %c = getelementptr inbounds nuw %"class.std::stack", ptr %this1, i32 0, i32 0 + call void @_ZNSt5dequeIPK1ASaIS2_EE8pop_backEv(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(80) %c) #10 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -505,85 +453,89 @@ 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 1 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 + %agg.tmp = alloca %"struct.std::_Deque_iterator", align 1 + %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) + call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #10 + call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr dead_on_unwind writable sret(%"struct.std::_Deque_iterator") align 1 %agg.tmp2, ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #10 + invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 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 1 %agg.result, ptr noundef nonnull align 1 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 1 dereferenceable(32) %agg.result, ptr noundef nonnull align 1 dereferenceable(32) %_M_finish) #10 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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,77 +543,77 @@ 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 1 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 - %0 = load ptr, ptr %_M_map, align 8 + %_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 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 + %_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 1 + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #5 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #5 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 1 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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(32) %this, ptr noundef nonnull align 1 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 - %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_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur2, align 1 + store ptr %1, ptr %_M_cur, align 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 - %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_first3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %_M_first3, align 1 + store ptr %3, ptr %_M_first, align 1 + %_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 - %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_last4 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %_M_last4, align 1 + store ptr %5, ptr %_M_last, align 1 + %_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 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 + %_M_node5 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 + %7 = load ptr, ptr %_M_node5, align 1 + store ptr %7, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -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 1 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 @@ -698,8 +650,12 @@ 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 1 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,129 +763,83 @@ 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 1 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 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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_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,29 +848,29 @@ 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 1 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 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(80) %this1) ret void } -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { +; Function Attrs: mustprogress noinline optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 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 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) + %_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 1 dereferenceable(80) %_M_impl) #10 + invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 1 dereferenceable(80) %_M_impl) #10 br label %eh.resume eh.resume: ; preds = %lpad @@ -980,19 +894,24 @@ 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 1 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 1 dereferenceable(80) %this1) #10 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__num_elements.addr = alloca i64, align 8 @@ -1017,34 +936,34 @@ 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 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 + %_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 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 1 + %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %3) + %_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 1 + %_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 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 1 %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 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) + invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -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 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #5 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #16 + %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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 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 1 + invoke void @__cxa_rethrow() #13 to label %unreachable unwind label %lpad23 lpad23: ; preds = %catch @@ -1092,35 +1011,35 @@ 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 1 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 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_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 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 1 %24 = load i64, ptr %__num_elements.addr, align 8 %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds ptr, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 + %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 1 ret void eh.resume: ; preds = %invoke.cont24 @@ -1134,63 +1053,44 @@ 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_map, align 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 1 + %_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 1 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 1 dereferenceable(32) %_M_finish) #10 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 1 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 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr null, ptr %_M_first, align 1 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr null, ptr %_M_last, align 1 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr null, ptr %_M_node, align 1 ret void } @@ -1225,8 +1125,12 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 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 1 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 @@ -1263,7 +1178,7 @@ eh.resume: ; preds = %lpad } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__nstart.addr = alloca ptr, align 8 @@ -1286,7 +1201,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %for.body @@ -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 1 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 @@ -1360,7 +1275,7 @@ declare void @__cxa_rethrow() declare void @__cxa_end_catch() ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__new_node.addr = alloca ptr, align 8 @@ -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 - store ptr %0, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + store ptr %0, ptr %_M_node, align 1 %1 = load ptr, ptr %__new_node.addr, align 8 %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #5 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + store ptr %2, ptr %_M_first, align 1 + %_M_first2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %3 = load ptr, ptr %_M_first2, align 1 + %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 - store ptr %add.ptr, ptr %_M_last, align 8 + %_M_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 + store ptr %add.ptr, ptr %_M_last, align 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 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 -} - -; 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 + 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 @_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 @@ -1505,7 +1407,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 1 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1513,184 +1415,189 @@ 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 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 1 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 + %_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 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_last = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 + %1 = load ptr, ptr %_M_last, align 1 %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 %cmp = icmp ne ptr %0, %add.ptr br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 + %_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 1 %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 + 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 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, i32 1 + store ptr %incdec.ptr, ptr %_M_cur10, align 1 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 1 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 1 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: +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 1 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 1 dereferenceable(80) %this1) #10 + %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_node, align 8 + call void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef 1) + %call3 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) + %_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 1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 + %_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 1 %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 1 + %add.ptr12 = getelementptr inbounds ptr, ptr %9, i64 1 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %__tmp = alloca %"struct.std::_Deque_iterator", align 8 + %__tmp = alloca %"struct.std::_Deque_iterator", align 1 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 1 %__tmp, ptr noundef nonnull align 1 dereferenceable(80) %this1) #10 + %call = call noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 1 dereferenceable(32) %__tmp) #10 + %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #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 1 dereferenceable(32) %_M_finish, ptr noundef nonnull align 1 dereferenceable(32) %_M_start) #10 ret i64 %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(80) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1699,16 +1606,16 @@ 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 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -1719,7 +1626,7 @@ entry: if.then: ; preds = %entry %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) + call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) br label %if.end if.end: ; preds = %if.then, %entry @@ -1727,86 +1634,89 @@ if.end: ; preds = %if.then, %entry } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 1 dereferenceable(32) %__x, ptr noundef nonnull align 1 dereferenceable(32) %__y) #2 comdat { entry: %__x.addr = alloca ptr, align 8 %__y.addr = alloca ptr, align 8 store ptr %__x, ptr %__x.addr, align 8 store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #5 + %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 - %1 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 + %1 = load ptr, ptr %_M_node, align 1 %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 + %_M_node1 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 + %3 = load ptr, ptr %_M_node1, align 1 %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 1 + %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 1 + %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 1 + %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 1 + %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 1 + %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,18 +1747,8 @@ 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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 1 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__nodes_to_add.addr = alloca i64, align 8 @@ -1860,17 +1760,17 @@ 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 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 + %_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 1 + %_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 1 %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 @@ -1881,28 +1781,28 @@ 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 - %4 = load i64, ptr %_M_map_size, align 8 + %_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 1 %5 = load i64, ptr %__new_num_nodes, align 8 %mul = mul i64 2, %5 %cmp = icmp ugt i64 %4, %mul br i1 %cmp, label %if.then, label %if.else31 if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 + %_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 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 1 %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,43 +1813,43 @@ 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 - %12 = load ptr, ptr %_M_node12, align 8 + %_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 1 %cmp13 = icmp ult ptr %11, %12 br i1 %cmp13, label %if.then14, label %if.else if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 + %_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 1 + %_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 1 %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 %15 = load ptr, ptr %__new_nstart, align 8 %call = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) br label %if.end if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 + %_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 1 + %_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 1 %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,28 +1857,28 @@ if.end: ; preds = %if.else, %if.then14 br label %if.end65 if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 + %_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 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 %add38 = add i64 %add37, 2 store i64 %add38, ptr %__new_map_size, align 8 %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) + %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 1 dereferenceable(80) %this1, i64 noundef %22) store ptr %call39, ptr %__new_map, align 8 %23 = load ptr, ptr %__new_map, align 8 %24 = load i64, ptr %__new_map_size, align 8 %25 = load i64, ptr %__new_num_nodes, align 8 %sub40 = sub i64 %24, %25 %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 + %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 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 + %_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 1 + %_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 1 %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 %30 = load ptr, ptr %__new_nstart, align 8 %call56 = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #5 + %_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 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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 1 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 - store ptr %33, ptr %_M_map62, align 8 + %_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 1 %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 + %_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 1 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 1 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 1 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,93 +2200,119 @@ 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 -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %_M_first = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 + %1 = load ptr, ptr %_M_first, align 1 %cmp = icmp eq ptr %0, %1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 + %_M_node = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 + %2 = load ptr, ptr %_M_node, align 1 %add.ptr = getelementptr inbounds ptr, ptr %2, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #5 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %3 = load ptr, ptr %_M_last, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr %3, ptr %_M_cur2, align 8 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 + %_M_cur2 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + store ptr %3, ptr %_M_cur2, align 1 br label %if.end if.end: ; preds = %if.then, %entry - %_M_cur3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur3, align 8 + %_M_cur3 = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %4 = load ptr, ptr %_M_cur3, align 1 %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur3, align 8 + store ptr %incdec.ptr, ptr %_M_cur3, align 1 ret ptr %this1 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 1 dereferenceable(32) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 + %_M_cur = getelementptr inbounds nuw %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE8pop_backEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 + %_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 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 1 %cmp = icmp ne ptr %0, %1 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish5, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur6, align 8 + %_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 1 %incdec.ptr = getelementptr inbounds ptr, ptr %2, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur6, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_cur9 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish8, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur9, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE7destroyIS2_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %3) #5 + store ptr %incdec.ptr, ptr %_M_cur6, align 1 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 + 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 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_pop_back_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) + invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_pop_back_auxEv(ptr noundef nonnull align 1 dereferenceable(80) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %if.else @@ -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 { +define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_pop_back_auxEv(ptr noundef nonnull align 1 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 - %0 = load ptr, ptr %_M_first, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %0) #5 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish5, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 + %_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 1 + call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 1 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 1 %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish3, ptr noundef %add.ptr) #5 - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish7, i32 0, i32 2 - %2 = load ptr, ptr %_M_last, align 8 + call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 1 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 1 %add.ptr8 = getelementptr inbounds ptr, ptr %2, i64 -1 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 0 - store ptr %add.ptr8, ptr %_M_cur, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 3 - %_M_cur13 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish12, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur13, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE7destroyIS2_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %3) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE7destroyIS3_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_stack_2.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() + %_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 1 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 + 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..236b3dc4f 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,31 +1,33 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 } +%"class.std::_Hashtable" = type <{ ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }> %"struct.std::__detail::_Hash_node_base" = type { ptr } -%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 } +%"struct.std::__detail::_Prime_rehash_policy" = type <{ float, i64 }> %class.A = type { ptr } %"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } %"struct.std::__detail::_Node_iterator_base" = type { ptr } %"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } -%"struct.std::pair" = type { i32, %class.A } -%"struct.std::__detail::_Hash_node_value_base" = type { %"struct.std::__detail::_Hash_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<16, 8>::type" } -%"union.std::aligned_storage<16, 8>::type" = type { [16 x i8] } -%"class.std::allocator.4" = type { i8 } +%"struct.std::pair" = type <{ i32, %class.A }> +%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<12, 1>::type" } +%"union.std::aligned_storage<12, 1>::type" = type { [12 x 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,68 +374,52 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %amap = alloca %"class.std::unordered_map", align 8 - %a = alloca %class.A, align 8 + %amap = alloca %"class.std::unordered_map", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca i32, align 4 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::__detail::_Node_const_iterator", align 8 - %ref.tmp2 = alloca %"struct.std::__detail::_Node_iterator", align 8 + %it = alloca %"struct.std::__detail::_Node_const_iterator", align 1 + %ref.tmp2 = alloca %"struct.std::__detail::_Node_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 + call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(52) %amap) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + %call = invoke noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEixEOi(ptr noundef nonnull align 1 dereferenceable(52) %amap, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN1AaSERKS_(ptr noundef nonnull align 8 dereferenceable(8) %call, ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - %call3 = call ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %ref.tmp2, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS4_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) #5 - %call5 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %second = getelementptr inbounds %"struct.std::pair", ptr %call5, i32 0, i32 1 + %call1 = call noundef nonnull align 1 dereferenceable(8) ptr @_ZN1AaSERKS_(ptr noundef nonnull align 1 dereferenceable(8) %call, ptr noundef nonnull align 1 dereferenceable(8) %a) #11 + %call3 = call ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 1 dereferenceable(52) %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 1 + call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS4_Lb0ELb0EEE(ptr noundef nonnull align 1 dereferenceable(8) %it, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp2) #11 + %call5 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 + call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(52) %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 1 dereferenceable(52) %amap) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -520,45 +441,45 @@ 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 1 dereferenceable(52) %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 1 dereferenceable(52) %_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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEixEOi(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEixEOi(ptr noundef nonnull align 1 dereferenceable(52) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__k, ptr %__k.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 + %_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) + %call = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt8__detail9_Map_baseIiSt4pairIKi1AESaIS4_ENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixEOi(ptr noundef nonnull align 1 dereferenceable(1) %_M_h, ptr noundef nonnull align 4 dereferenceable(4) %0) ret ptr %call } declare i32 @__gxx_personality_v0(...) -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN1AaSERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZN1AaSERKS_(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %0) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -569,25 +490,25 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call, ptr %coerce.dive2, align 8 - %coerce.dive3 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive3, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive4, align 8 + %_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 1 dereferenceable(52) %_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 1 + %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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %__x) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -595,186 +516,156 @@ 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 - %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur, align 1 + call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKi1AELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 1 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 - %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %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 1 dereferenceable(12) %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 1 dereferenceable(52) %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 1 dereferenceable(52) %_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 1 dereferenceable(52) %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 - store ptr %_M_single_bucket, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 1, ptr %_M_bucket_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_before_begin) #5 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - call void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, float noundef 1.000000e+00) #5 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket2, align 8 + 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 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + store i64 1, ptr %_M_bucket_count, align 1 + %_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 1 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 1 + %_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 1 dereferenceable(12) %_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 1 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 1 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 - store ptr null, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_nxt, align 1 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 1 dereferenceable(12) %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 - 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 + store float %0, ptr %_M_max_load_factor, align 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 1 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 } ; 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -787,35 +678,35 @@ 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 1 dereferenceable(52) %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 - 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) + 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 1 dereferenceable(52) %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 1 dereferenceable(52) %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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) + %call = invoke noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -823,45 +714,45 @@ 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 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 %mul = mul i64 %1, 8 call void @llvm.memset.p0.i64(ptr align 8 %0, i8 0, i64 %mul, i1 false) - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 + %_M_element_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + store i64 0, ptr %_M_element_count, align 1 + %_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 1 ret void terminate.lpad: ; preds = %invoke.cont, %entry %2 = landingpad { ptr, i32 } catch ptr null %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + call void @__clang_call_terminate(ptr %3) #12 unreachable } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS5_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0, i64 noundef %1) + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 + 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 1 dereferenceable(52) %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 1 dereferenceable(20) %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) @@ -910,34 +801,39 @@ while.end: ; preds = %while.cond } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 + %_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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 1 dereferenceable(20) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_nxt, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE18_M_deallocate_nodeEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { entry: + %this.addr.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 1 dereferenceable(12) %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 1 dereferenceable(20) %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 } @@ -1027,27 +906,27 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %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 1 dereferenceable(12) %this1) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_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 1 dereferenceable(20) %__r) #2 comdat align 2 { entry: %__r.addr = alloca ptr, align 8 store ptr %__r, ptr %__r.addr, align 8 @@ -1055,42 +934,28 @@ 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, 20 + 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 { +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 1 dereferenceable(52) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkts.addr = alloca ptr, align 8 @@ -1100,7 +965,7 @@ 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 zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS5_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0) + %call = call noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS5_15_Hash_node_baseE(ptr noundef nonnull align 1 dereferenceable(52) %this1, ptr noundef %0) br i1 %call, label %if.then, label %if.end if.then: ; preds = %entry @@ -1117,7 +982,7 @@ return: ; preds = %if.end, %if.then } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS5_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts) #2 comdat align 2 { +define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS5_15_Hash_node_baseE(ptr noundef nonnull align 1 dereferenceable(52) %this, ptr noundef %__bkts) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkts.addr = alloca ptr, align 8 @@ -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 @@ -1286,8 +1121,10 @@ 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 { +define linkonce_odr dso_local noundef nonnull align 1 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 @@ -1295,10 +1132,10 @@ entry: %__code = alloca i64, align 8 %__bkt = alloca i64, align 8 %__node = alloca ptr, align 8 - %__node5 = alloca %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", align 8 - %ref.tmp = alloca %"class.std::tuple", align 8 - %ref.tmp6 = alloca %"class.std::tuple.7", align 1 - %__pos = alloca %"struct.std::__detail::_Node_iterator", align 8 + %__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 1 + %ref.tmp = alloca %"class.std::tuple", align 1 + %ref.tmp6 = alloca %"class.std::tuple.5", align 1 + %__pos = alloca %"struct.std::__detail::_Node_iterator", align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 store ptr %this, ptr %this.addr, align 8 @@ -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 1 dereferenceable(52) %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 1 dereferenceable(52) %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 1 dereferenceable(12) ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %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 1 %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 1 dereferenceable(16) %__node5, ptr noundef %10, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 1 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 1 + %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 1 dereferenceable(52) %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 - store ptr %call7, ptr %coerce.dive8, align 8 - %_M_node9 = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %__node5, i32 0, i32 1 - store ptr null, ptr %_M_node9, align 8 - %call10 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %__pos) #5 - %second11 = getelementptr inbounds %"struct.std::pair", ptr %call10, i32 0, i32 1 + %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 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 1 + %call10 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 1 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 1 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 1 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,33 +1227,30 @@ 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 1 dereferenceable(52) %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 1 + %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 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__key, i64 noundef %__c) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__key, i64 noundef %__c) #0 comdat align 2 { entry: %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 @@ -1429,7 +1266,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_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0, ptr noundef nonnull align 4 dereferenceable(4) %1, i64 noundef %2) + %call = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m(ptr noundef nonnull align 1 dereferenceable(52) %this1, i64 noundef %0, ptr noundef nonnull align 4 dereferenceable(4) %1, i64 noundef %2) store ptr %call, ptr %__before_n, align 8 %3 = load ptr, ptr %__before_n, align 8 %tobool = icmp ne ptr %3, null @@ -1437,8 +1274,8 @@ 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 - %5 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 + %5 = load ptr, ptr %_M_nxt, align 1 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 1 %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 1 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 1 dereferenceable(16) %this, ptr noundef %__h, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 1 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,119 +1314,115 @@ 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 + store ptr %0, ptr %_M_h, align 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 %4 = load ptr, ptr %__args.addr4, align 8 - %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEPS6_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) - store ptr %call, ptr %_M_node, align 8 + %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEPS6_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) + store ptr %call, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeERS1_mmPNS5_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__bkt, i64 noundef %__code, ptr noundef %__node, i64 noundef %__n_elt) #0 comdat align 2 { +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 1 dereferenceable(52) %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 + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 %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 1 store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 store i64 %__bkt, ptr %__bkt.addr, align 8 store i64 %__code, ptr %__code.addr, align 8 store ptr %__node, ptr %__node.addr, align 8 store i64 %__n_elt, ptr %__n_elt.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %call = call noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy) + %_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 1 dereferenceable(12) %_M_rehash_policy) store i64 %call, ptr %ref.tmp, align 8 store ptr %ref.tmp, ptr %__saved_state, align 8 - %_M_rehash_policy2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_bucket_count, align 8 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %1 = load i64, ptr %_M_element_count, align 8 + %_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 1 + %_M_element_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %1 = load i64, ptr %_M_element_count, align 1 %2 = load i64, ptr %__n_elt.addr, align 8 - %call3 = call { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) - %3 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 0 - %4 = extractvalue { i8, i64 } %call3, 0 - store i8 %4, ptr %3, align 8 - %5 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 1 - %6 = extractvalue { i8, i64 } %call3, 1 - store i64 %6, ptr %5, align 8 - %first = getelementptr inbounds %"struct.std::pair.9", ptr %__do_rehash, i32 0, i32 0 - %7 = load i8, ptr %first, align 8 - %tobool = trunc i8 %7 to i1 - br i1 %tobool, label %if.then, label %if.end + call void @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr dead_on_unwind writable sret(%"struct.std::pair.7") align 1 %__do_rehash, ptr noundef nonnull align 1 dereferenceable(12) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) + %first = getelementptr inbounds nuw %"struct.std::pair.7", ptr %__do_rehash, i32 0, i32 0 + %3 = load i8, ptr %first, align 1 + %loadedv = trunc i8 %3 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 - %8 = load i64, ptr %second, align 8 - %9 = load ptr, ptr %__saved_state, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %8, ptr noundef nonnull align 8 dereferenceable(8) %9) - %10 = load ptr, ptr %__k.addr, align 8 - %11 = load i64, ptr %__code.addr, align 8 - %call4 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 4 dereferenceable(4) %10, i64 noundef %11) - store i64 %call4, ptr %__bkt.addr, align 8 + %second = getelementptr inbounds nuw %"struct.std::pair.7", ptr %__do_rehash, i32 0, i32 1 + %4 = load i64, ptr %second, align 1 + %5 = 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 1 dereferenceable(52) %this1, i64 noundef %4, ptr noundef nonnull align 8 dereferenceable(8) %5) + %6 = load i64, ptr %__code.addr, align 8 + %call3 = 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 1 dereferenceable(52) %this1, i64 noundef %6) + store i64 %call3, ptr %__bkt.addr, align 8 br label %if.end if.end: ; preds = %if.then, %entry + %7 = load ptr, ptr %__node.addr, align 8 + %add.ptr = getelementptr inbounds i8, ptr %7, i64 8 + %8 = 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 %8) + %9 = load i64, ptr %__bkt.addr, align 8 + %10 = 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 1 dereferenceable(52) %this1, i64 noundef %9, ptr noundef %10) + %_M_element_count4 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %11 = load i64, ptr %_M_element_count4, align 1 + %inc = add i64 %11, 1 + store i64 %inc, ptr %_M_element_count4, align 1 %12 = load ptr, ptr %__node.addr, align 8 - %13 = load i64, ptr %__code.addr, align 8 - call void @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %12, i64 noundef %13) - %14 = load i64, ptr %__bkt.addr, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS5_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %14, ptr noundef %15) - %_M_element_count5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %16 = load i64, ptr %_M_element_count5, align 8 - %inc = add i64 %16, 1 - store i64 %inc, ptr %_M_element_count5, align 8 - %17 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %17) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive6 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %18 = load ptr, ptr %coerce.dive6, align 8 - ret ptr %18 + call void @_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(8) %retval, ptr noundef %12) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive5 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 + %13 = load ptr, ptr %coerce.dive5, align 1 + ret ptr %13 } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 1 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 - %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %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 1 dereferenceable(12) %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 1 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 - %0 = load ptr, ptr %_M_node, 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 %this1, i32 0, i32 1 + %0 = load ptr, ptr %_M_node, align 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_h, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_node2, align 8 + %_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 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 1 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 +1436,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 +1472,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,17 +1505,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_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 { +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 1 dereferenceable(52) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__code) #0 comdat align 2 { entry: %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 @@ -1718,10 +1520,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 - %0 = load ptr, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 %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,8 +1536,8 @@ 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 - %5 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 + %5 = load ptr, ptr %_M_nxt, align 1 store ptr %5, ptr %__p, align 8 br label %for.cond @@ -1743,7 +1545,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 1 dereferenceable(12) %add.ptr) br i1 %call, label %if.then2, label %if.end3 if.then2: ; preds = %for.cond @@ -1753,34 +1556,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 - %11 = load ptr, ptr %_M_nxt4, align 8 + %_M_nxt4 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 + %11 = load ptr, ptr %_M_nxt4, align 1 %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 1 dereferenceable(20) %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 1 dereferenceable(52) %this1, ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(20) %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 +1594,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 1 dereferenceable(12) %__n) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 @@ -1803,26 +1607,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 1 dereferenceable(12) %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 1 dereferenceable(52) %this, ptr noundef nonnull align 1 dereferenceable(12) %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 @@ -1830,14 +1630,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 - %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 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 + %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 1 dereferenceable(12) %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 @@ -1846,6 +1646,32 @@ entry: ret i1 true } +; 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_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 1 dereferenceable(12) %__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__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 1 dereferenceable(12) ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(12) %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: @@ -1874,18 +1700,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 1 dereferenceable(12) %__x) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1893,8 +1709,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 +1723,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 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - 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 1 dereferenceable(12) %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 1 dereferenceable(12) %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 1 dereferenceable(12) %__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 1 dereferenceable(12) ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(12) %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 1 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 @@ -2060,7 +1788,7 @@ entry: store ptr %__elements, ptr %__elements.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__elements.addr, align 8 - invoke void @_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) + invoke void @_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -2070,12 +1798,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 1 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 @@ -2083,27 +1811,44 @@ entry: store ptr %__head, ptr %__head.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__head.addr, align 8 - call void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) + call void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) ret void } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__h) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 1 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 + store ptr %0, ptr %_M_head_impl, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEPS6_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: +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 1 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 1 + %__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 +1863,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 1 dereferenceable(20) %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 1 dereferenceable(12) %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 1 dereferenceable(8) %agg.tmp6.i, ptr noundef nonnull align 1 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 1 dereferenceable(12) %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 +1975,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 +1994,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 1 dereferenceable(20) %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 1 dereferenceable(8) %this1) #11 + %0 = getelementptr inbounds i8, ptr %this1, i64 8 ret void } @@ -2258,12 +2009,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 +2024,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, 461168601842738790 + 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, 922337203685477580 + 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, 20 + %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_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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %0) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -2348,26 +2067,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 1 dereferenceable(8) %this1, ptr noundef nonnull align 1 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 1 dereferenceable(12) %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 1 dereferenceable(12) %this2, ptr noundef nonnull align 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %__in) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__in.addr = alloca ptr, align 8 @@ -2375,37 +2096,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 1 %this1, ptr align 1 %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 1 dereferenceable(12) %this, ptr noundef nonnull align 1 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,52 +2115,73 @@ 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 1 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 - 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 + store i32 %3, ptr %first, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair", ptr %this2, i32 0, i32 1 + call void @llvm.memset.p0.i64(ptr align 1 %second, i8 0, i64 8, i1 false) + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %second) #11 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat { +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 1 dereferenceable(8) %__t) #2 comdat { +entry: + %__t.addr = alloca ptr, align 8 + store ptr %__t, ptr %__t.addr, align 8 + %0 = load ptr, ptr %__t.addr, align 8 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 1 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 @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 1 dereferenceable(8) %__t) #2 comdat { entry: %__t.addr = alloca ptr, align 8 store ptr %__t, ptr %__t.addr, align 8 %0 = load ptr, ptr %__t.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 1 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 @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat { +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 1 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 @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_(ptr noundef nonnull align 1 dereferenceable(8) %0) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_(ptr noundef nonnull align 1 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 1 + 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 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_next_resize, align 8 + %_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 1 ret i64 %0 } -declare { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef, i64 noundef) #1 +declare void @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr dead_on_unwind writable sret(%"struct.std::pair.7") align 1, ptr noundef nonnull align 1 dereferenceable(12), i64 noundef, i64 noundef, i64 noundef) #1 ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 @@ -2471,7 +2194,7 @@ entry: store ptr %__state, ptr %__state.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0) + invoke void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 1 dereferenceable(52) %this1, i64 noundef %0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -2488,15 +2211,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) + invoke void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 1 dereferenceable(12) %_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 +2249,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 +2257,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 @@ -2547,7 +2270,7 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS5_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS5_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkt.addr = alloca i64, align 8 @@ -2556,69 +2279,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 - %0 = load ptr, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 %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 - %3 = load ptr, ptr %_M_buckets2, align 8 + %_M_buckets2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %3 = load ptr, ptr %_M_buckets2, align 1 %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 - %6 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %5, i32 0, i32 0 + %6 = load ptr, ptr %_M_nxt, align 1 %7 = load ptr, ptr %__node.addr, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 - store ptr %6, ptr %_M_nxt4, align 8 + %_M_nxt4 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 + store ptr %6, ptr %_M_nxt4, align 1 %8 = load ptr, ptr %__node.addr, align 8 - %_M_buckets5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %9 = load ptr, ptr %_M_buckets5, align 8 + %_M_buckets5 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %9 = load ptr, ptr %_M_buckets5, align 1 %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 - store ptr %8, ptr %_M_nxt7, align 8 + %_M_nxt7 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %11, i32 0, i32 0 + store ptr %8, ptr %_M_nxt7, align 1 br label %if.end21 if.else: ; preds = %entry - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %12 = load ptr, ptr %_M_nxt8, align 8 + %_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 1 %13 = load ptr, ptr %__node.addr, align 8 - %_M_nxt9 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 - store ptr %12, ptr %_M_nxt9, align 8 + %_M_nxt9 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 + store ptr %12, ptr %_M_nxt9, align 1 %14 = load ptr, ptr %__node.addr, align 8 - %_M_before_begin10 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt11 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin10, i32 0, i32 0 - store ptr %14, ptr %_M_nxt11, align 8 + %_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 1 %15 = load ptr, ptr %__node.addr, align 8 - %_M_nxt12 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 - %16 = load ptr, ptr %_M_nxt12, align 8 + %_M_nxt12 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 + %16 = load ptr, ptr %_M_nxt12, align 1 %tobool13 = icmp ne ptr %16, null br i1 %tobool13, label %if.then14, label %if.end if.then14: ; preds = %if.else %17 = load ptr, ptr %__node.addr, align 8 - %_M_buckets15 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %18 = load ptr, ptr %_M_buckets15, align 8 + %_M_buckets15 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %18 = load ptr, ptr %_M_buckets15, align 1 %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 1 dereferenceable(20) %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 1 dereferenceable(52) %this1, ptr noundef nonnull align 1 dereferenceable(12) %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 - %20 = load ptr, ptr %_M_buckets19, align 8 + %_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 1 %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 +2350,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 1 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,12 +2359,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_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 1 dereferenceable(8) %this1, ptr noundef %0) #11 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %0 = alloca %"struct.std::integral_constant", align 1 %this.addr = alloca ptr, align 8 @@ -2654,13 +2378,13 @@ entry: store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %1) + %call = call noundef ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(52) %this1, i64 noundef %1) store ptr %call, ptr %__new_buckets, align 8 - %call2 = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) + %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 1 dereferenceable(52) %this1) store ptr %call2, ptr %__p, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 + %_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 1 store i64 0, ptr %__bbegin_bkt, align 8 br label %while.cond @@ -2671,38 +2395,39 @@ 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 1 dereferenceable(20) %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 1 dereferenceable(12) %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 - %9 = load ptr, ptr %_M_nxt7, align 8 + %_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 1 %10 = load ptr, ptr %__p, align 8 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - store ptr %9, ptr %_M_nxt8, align 8 + %_M_nxt8 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 + store ptr %9, ptr %_M_nxt8, align 1 %11 = load ptr, ptr %__p, align 8 - %_M_before_begin9 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt10 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin9, i32 0, i32 0 - store ptr %11, ptr %_M_nxt10, align 8 - %_M_before_begin11 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_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 1 + %_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 - %15 = load ptr, ptr %_M_nxt13, align 8 + %_M_nxt13 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %14, i32 0, i32 0 + %15 = load ptr, ptr %_M_nxt13, align 1 %tobool14 = icmp ne ptr %15, null br i1 %tobool14, label %if.then15, label %if.end @@ -2710,7 +2435,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,20 +2447,20 @@ 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 - %23 = load ptr, ptr %_M_nxt18, align 8 + %_M_nxt18 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %22, i32 0, i32 0 + %23 = load ptr, ptr %_M_nxt18, align 1 %24 = load ptr, ptr %__p, align 8 - %_M_nxt19 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 - store ptr %23, ptr %_M_nxt19, align 8 + %_M_nxt19 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 + store ptr %23, ptr %_M_nxt19, align 1 %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 - store ptr %25, ptr %_M_nxt21, align 8 + %_M_nxt21 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %28, i32 0, i32 0 + store ptr %25, ptr %_M_nxt21, align 1 br label %if.end22 if.end22: ; preds = %if.else, %if.end @@ -2744,18 +2469,18 @@ if.end22: ; preds = %if.else, %if.end br label %while.cond, !llvm.loop !9 while.end: ; preds = %while.cond - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) + 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 1 dereferenceable(52) %this1) %30 = load i64, ptr %__bkt_count.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 %30, ptr %_M_bucket_count, align 8 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + store i64 %30, ptr %_M_bucket_count, align 1 %31 = load ptr, ptr %__new_buckets, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - store ptr %31, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + store ptr %31, ptr %_M_buckets, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__state) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 1 dereferenceable(12) %this, i64 noundef %__state) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__state.addr = alloca i64, align 8 @@ -2763,13 +2488,13 @@ 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 - store i64 %0, ptr %_M_next_resize, align 8 + %_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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 @@ -2782,9 +2507,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 - 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_bucket = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 + store ptr null, ptr %_M_single_bucket, align 1 + %_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 +2527,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 +2545,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 +2596,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 +2606,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,84 +2617,76 @@ 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 1 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 + store ptr %0, ptr %_M_cur, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - call void @_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %call) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 + %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 1 dereferenceable(52) %this1) + call void @_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 1 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 1 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 +2696,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..833964b42 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,31 +1,33 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 } +%"class.std::_Hashtable" = type <{ ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }> %"struct.std::__detail::_Hash_node_base" = type { ptr } -%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 } +%"struct.std::__detail::_Prime_rehash_policy" = type <{ float, i64 }> %class.A = type { ptr } %"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } %"struct.std::__detail::_Node_iterator_base" = type { ptr } %"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } -%"struct.std::pair" = type { i32, ptr } -%"struct.std::__detail::_Hash_node_value_base" = type { %"struct.std::__detail::_Hash_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<16, 8>::type" } -%"union.std::aligned_storage<16, 8>::type" = type { [16 x i8] } -%"class.std::allocator.4" = type { i8 } +%"struct.std::pair" = type <{ i32, ptr }> +%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<12, 1>::type" } +%"union.std::aligned_storage<12, 1>::type" = type { [12 x 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,69 +372,53 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %amap = alloca %"class.std::unordered_map", align 8 - %a = alloca %class.A, align 8 + %amap = alloca %"class.std::unordered_map", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca i32, align 4 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::__detail::_Node_const_iterator", align 8 - %ref.tmp1 = alloca %"struct.std::__detail::_Node_iterator", align 8 + %it = alloca %"struct.std::__detail::_Node_const_iterator", align 1 + %ref.tmp1 = alloca %"struct.std::__detail::_Node_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 + call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(52) %amap) #11 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEixEOi(ptr noundef nonnull align 1 dereferenceable(52) %amap, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store ptr %a, ptr %call, align 8 - %call2 = call ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %ref.tmp1, i32 0, i32 0 - %coerce.dive3 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call2, ptr %coerce.dive3, align 8 - call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp1) #5 - %call4 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %second = getelementptr inbounds %"struct.std::pair", ptr %call4, i32 0, i32 1 - %0 = load ptr, ptr %second, align 8 + %call2 = call ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 1 dereferenceable(52) %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 1 + call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 1 dereferenceable(8) %it, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp1) #11 + %call4 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(8) %it) #11 + %second = getelementptr inbounds nuw %"struct.std::pair", ptr %call4, i32 0, i32 1 + %0 = load ptr, ptr %second, align 1 store ptr %0, ptr %aptr, align 8 %1 = load ptr, ptr %aptr, align 8 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont5 unwind label %lpad invoke.cont5: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 + call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(52) %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 1 dereferenceable(52) %amap) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -519,36 +440,36 @@ 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 1 dereferenceable(52) %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 1 dereferenceable(52) %_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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEixEOi(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEixEOi(ptr noundef nonnull align 1 dereferenceable(52) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store ptr %__k, ptr %__k.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 + %_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 @@ -557,25 +478,25 @@ entry: declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call, ptr %coerce.dive2, align 8 - %coerce.dive3 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive3, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive4, align 8 + %_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 1 dereferenceable(52) %_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 1 + %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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %__x) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -583,186 +504,156 @@ 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 - %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %_M_cur, align 1 + call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKiPK1AELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 1 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 - %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %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 1 dereferenceable(12) %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 1 dereferenceable(52) %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 1 dereferenceable(52) %_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 1 dereferenceable(52) %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 - store ptr %_M_single_bucket, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 1, ptr %_M_bucket_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_before_begin) #5 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - call void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, float noundef 1.000000e+00) #5 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket2, align 8 + 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 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + store i64 1, ptr %_M_bucket_count, align 1 + %_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 1 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 1 + %_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 1 dereferenceable(12) %_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 1 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 1 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 - store ptr null, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_nxt, align 1 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 1 dereferenceable(12) %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 - 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 + store float %0, ptr %_M_max_load_factor, align 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 1 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 } ; 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -775,35 +666,35 @@ 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 1 dereferenceable(52) %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 - 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) + 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 1 dereferenceable(52) %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 1 dereferenceable(52) %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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) + %call = invoke noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -811,45 +702,45 @@ 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 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 %mul = mul i64 %1, 8 call void @llvm.memset.p0.i64(ptr align 8 %0, i8 0, i64 %mul, i1 false) - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 + %_M_element_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + store i64 0, ptr %_M_element_count, align 1 + %_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 1 ret void terminate.lpad: ; preds = %invoke.cont, %entry %2 = landingpad { ptr, i32 } catch ptr null %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 + call void @__clang_call_terminate(ptr %3) #12 unreachable } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS7_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0, i64 noundef %1) + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 + 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 1 dereferenceable(52) %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 1 dereferenceable(20) %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) @@ -898,34 +789,39 @@ while.end: ; preds = %while.cond } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 + %_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 1 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 1 dereferenceable(20) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_nxt, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE18_M_deallocate_nodeEPS8_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { entry: + %this.addr.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 1 dereferenceable(12) %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 1 dereferenceable(20) %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 } @@ -1015,27 +894,27 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %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 1 dereferenceable(12) %this1) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_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 1 dereferenceable(20) %__r) #2 comdat align 2 { entry: %__r.addr = alloca ptr, align 8 store ptr %__r, ptr %__r.addr, align 8 @@ -1043,42 +922,28 @@ 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, 20 + 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 { +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 1 dereferenceable(52) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkts.addr = alloca ptr, align 8 @@ -1088,7 +953,7 @@ 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 zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS7_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0) + %call = call noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS7_15_Hash_node_baseE(ptr noundef nonnull align 1 dereferenceable(52) %this1, ptr noundef %0) br i1 %call, label %if.then, label %if.end if.then: ; preds = %entry @@ -1105,7 +970,7 @@ return: ; preds = %if.end, %if.then } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS7_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts) #2 comdat align 2 { +define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS7_15_Hash_node_baseE(ptr noundef nonnull align 1 dereferenceable(52) %this, ptr noundef %__bkts) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkts.addr = alloca ptr, align 8 @@ -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 @@ -1283,10 +1120,10 @@ entry: %__code = alloca i64, align 8 %__bkt = alloca i64, align 8 %__node = alloca ptr, align 8 - %__node5 = alloca %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", align 8 - %ref.tmp = alloca %"class.std::tuple", align 8 - %ref.tmp6 = alloca %"class.std::tuple.7", align 1 - %__pos = alloca %"struct.std::__detail::_Node_iterator", align 8 + %__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 1 + %ref.tmp = alloca %"class.std::tuple", align 1 + %ref.tmp6 = alloca %"class.std::tuple.5", align 1 + %__pos = alloca %"struct.std::__detail::_Node_iterator", align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 store ptr %this, ptr %this.addr, align 8 @@ -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 1 dereferenceable(52) %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 1 dereferenceable(52) %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 1 dereferenceable(12) ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %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 1 %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 1 dereferenceable(16) %__node5, ptr noundef %10, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 1 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 1 + %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 1 dereferenceable(52) %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 - store ptr %call7, ptr %coerce.dive8, align 8 - %_M_node9 = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %__node5, i32 0, i32 1 - store ptr null, ptr %_M_node9, align 8 - %call10 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %__pos) #5 - %second11 = getelementptr inbounds %"struct.std::pair", ptr %call10, i32 0, i32 1 + %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 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 1 + %call10 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 1 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 1 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 1 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,33 +1215,30 @@ 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 1 dereferenceable(52) %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 1 + %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 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__key, i64 noundef %__c) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__key, i64 noundef %__c) #0 comdat align 2 { entry: %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 @@ -1417,7 +1254,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_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0, ptr noundef nonnull align 4 dereferenceable(4) %1, i64 noundef %2) + %call = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m(ptr noundef nonnull align 1 dereferenceable(52) %this1, i64 noundef %0, ptr noundef nonnull align 4 dereferenceable(4) %1, i64 noundef %2) store ptr %call, ptr %__before_n, align 8 %3 = load ptr, ptr %__before_n, align 8 %tobool = icmp ne ptr %3, null @@ -1425,8 +1262,8 @@ 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 - %5 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 + %5 = load ptr, ptr %_M_nxt, align 1 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 1 %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 1 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 1 dereferenceable(16) %this, ptr noundef %__h, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 1 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,119 +1302,115 @@ 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 + store ptr %0, ptr %_M_h, align 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 %4 = load ptr, ptr %__args.addr4, align 8 - %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEPS8_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) - store ptr %call, ptr %_M_node, align 8 + %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEPS8_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) + store ptr %call, ptr %_M_node, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeERS1_mmPNS7_10_Hash_nodeIS5_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__bkt, i64 noundef %__code, ptr noundef %__node, i64 noundef %__n_elt) #0 comdat align 2 { +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 1 dereferenceable(52) %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 + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 %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 1 store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 store i64 %__bkt, ptr %__bkt.addr, align 8 store i64 %__code, ptr %__code.addr, align 8 store ptr %__node, ptr %__node.addr, align 8 store i64 %__n_elt, ptr %__n_elt.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %call = call noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy) + %_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 1 dereferenceable(12) %_M_rehash_policy) store i64 %call, ptr %ref.tmp, align 8 store ptr %ref.tmp, ptr %__saved_state, align 8 - %_M_rehash_policy2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_bucket_count, align 8 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %1 = load i64, ptr %_M_element_count, align 8 + %_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 1 + %_M_element_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %1 = load i64, ptr %_M_element_count, align 1 %2 = load i64, ptr %__n_elt.addr, align 8 - %call3 = call { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) - %3 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 0 - %4 = extractvalue { i8, i64 } %call3, 0 - store i8 %4, ptr %3, align 8 - %5 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 1 - %6 = extractvalue { i8, i64 } %call3, 1 - store i64 %6, ptr %5, align 8 - %first = getelementptr inbounds %"struct.std::pair.9", ptr %__do_rehash, i32 0, i32 0 - %7 = load i8, ptr %first, align 8 - %tobool = trunc i8 %7 to i1 - br i1 %tobool, label %if.then, label %if.end + call void @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr dead_on_unwind writable sret(%"struct.std::pair.7") align 1 %__do_rehash, ptr noundef nonnull align 1 dereferenceable(12) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) + %first = getelementptr inbounds nuw %"struct.std::pair.7", ptr %__do_rehash, i32 0, i32 0 + %3 = load i8, ptr %first, align 1 + %loadedv = trunc i8 %3 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 - %8 = load i64, ptr %second, align 8 - %9 = load ptr, ptr %__saved_state, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %8, ptr noundef nonnull align 8 dereferenceable(8) %9) - %10 = load ptr, ptr %__k.addr, align 8 - %11 = load i64, ptr %__code.addr, align 8 - %call4 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 4 dereferenceable(4) %10, i64 noundef %11) - store i64 %call4, ptr %__bkt.addr, align 8 + %second = getelementptr inbounds nuw %"struct.std::pair.7", ptr %__do_rehash, i32 0, i32 1 + %4 = load i64, ptr %second, align 1 + %5 = 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 1 dereferenceable(52) %this1, i64 noundef %4, ptr noundef nonnull align 8 dereferenceable(8) %5) + %6 = load i64, ptr %__code.addr, align 8 + %call3 = 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 1 dereferenceable(52) %this1, i64 noundef %6) + store i64 %call3, ptr %__bkt.addr, align 8 br label %if.end if.end: ; preds = %if.then, %entry + %7 = load ptr, ptr %__node.addr, align 8 + %add.ptr = getelementptr inbounds i8, ptr %7, i64 8 + %8 = 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 %8) + %9 = load i64, ptr %__bkt.addr, align 8 + %10 = 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 1 dereferenceable(52) %this1, i64 noundef %9, ptr noundef %10) + %_M_element_count4 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %11 = load i64, ptr %_M_element_count4, align 1 + %inc = add i64 %11, 1 + store i64 %inc, ptr %_M_element_count4, align 1 %12 = load ptr, ptr %__node.addr, align 8 - %13 = load i64, ptr %__code.addr, align 8 - call void @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %12, i64 noundef %13) - %14 = load i64, ptr %__bkt.addr, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS7_10_Hash_nodeIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %14, ptr noundef %15) - %_M_element_count5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %16 = load i64, ptr %_M_element_count5, align 8 - %inc = add i64 %16, 1 - store i64 %inc, ptr %_M_element_count5, align 8 - %17 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %17) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive6 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %18 = load ptr, ptr %coerce.dive6, align 8 - ret ptr %18 + call void @_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(8) %retval, ptr noundef %12) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive5 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 + %13 = load ptr, ptr %coerce.dive5, align 1 + ret ptr %13 } ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 1 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 - %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %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 1 dereferenceable(12) %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 1 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 - %0 = load ptr, ptr %_M_node, 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 %this1, i32 0, i32 1 + %0 = load ptr, ptr %_M_node, align 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_h, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_node2, align 8 + %_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 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 1 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 +1424,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 +1460,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,17 +1493,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_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 { +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 1 dereferenceable(52) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__code) #0 comdat align 2 { entry: %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 @@ -1706,10 +1508,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 - %0 = load ptr, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 %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,8 +1524,8 @@ 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 - %5 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 + %5 = load ptr, ptr %_M_nxt, align 1 store ptr %5, ptr %__p, align 8 br label %for.cond @@ -1731,7 +1533,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 1 dereferenceable(12) %add.ptr) br i1 %call, label %if.then2, label %if.end3 if.then2: ; preds = %for.cond @@ -1741,34 +1544,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 - %11 = load ptr, ptr %_M_nxt4, align 8 + %_M_nxt4 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 + %11 = load ptr, ptr %_M_nxt4, align 1 %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 1 dereferenceable(20) %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 1 dereferenceable(52) %this1, ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(20) %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 +1582,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 1 dereferenceable(12) %__n) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 @@ -1791,26 +1595,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 1 dereferenceable(12) %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 1 dereferenceable(52) %this, ptr noundef nonnull align 1 dereferenceable(12) %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 @@ -1818,14 +1618,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 - %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 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 + %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 1 dereferenceable(12) %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 @@ -1834,6 +1634,32 @@ entry: ret i1 true } +; 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_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 1 dereferenceable(12) %__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__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 1 dereferenceable(12) ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(12) %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: @@ -1862,18 +1688,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 1 dereferenceable(12) %__x) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -1881,8 +1697,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 +1711,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 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - 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 1 dereferenceable(12) %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 1 dereferenceable(12) %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 1 dereferenceable(12) %__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 1 dereferenceable(12) ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(12) %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 1 dereferenceable(12) %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 1 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 @@ -2048,7 +1776,7 @@ entry: store ptr %__elements, ptr %__elements.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__elements.addr, align 8 - invoke void @_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) + invoke void @_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -2058,12 +1786,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 1 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 @@ -2071,27 +1799,44 @@ entry: store ptr %__head, ptr %__head.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load ptr, ptr %__head.addr, align 8 - call void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) + call void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 1 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) ret void } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__h) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 1 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 + store ptr %0, ptr %_M_head_impl, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEPS8_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: +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 1 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 1 + %__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 +1851,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 1 dereferenceable(20) %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 1 dereferenceable(12) %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 1 dereferenceable(8) %agg.tmp6.i, ptr noundef nonnull align 1 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 1 dereferenceable(12) %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 +1963,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 +1982,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 1 dereferenceable(20) %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 1 dereferenceable(8) %this1) #11 + %0 = getelementptr inbounds i8, ptr %this1, i64 8 ret void } @@ -2246,12 +1997,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 +2012,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, 461168601842738790 + 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, 922337203685477580 + 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, 20 + %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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %0) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %.addr = alloca ptr, align 8 @@ -2336,26 +2055,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 1 dereferenceable(8) %this1, ptr noundef nonnull align 1 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 1 dereferenceable(12) %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 1 dereferenceable(12) %this2, ptr noundef nonnull align 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(8) %__in) unnamed_addr #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__in.addr = alloca ptr, align 8 @@ -2363,37 +2084,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 1 %this1, ptr align 1 %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 1 dereferenceable(12) %this, ptr noundef nonnull align 1 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,51 +2103,72 @@ 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 1 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 - store ptr null, ptr %second, align 8 + store i32 %3, ptr %first, align 1 + %second = getelementptr inbounds nuw %"struct.std::pair", ptr %this2, i32 0, i32 1 + store ptr null, ptr %second, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat { +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 1 dereferenceable(8) %__t) #2 comdat { +entry: + %__t.addr = alloca ptr, align 8 + store ptr %__t, ptr %__t.addr, align 8 + %0 = load ptr, ptr %__t.addr, align 8 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 1 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 @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 1 dereferenceable(8) %__t) #2 comdat { entry: %__t.addr = alloca ptr, align 8 store ptr %__t, ptr %__t.addr, align 8 %0 = load ptr, ptr %__t.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 1 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 @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat { +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 1 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 @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 + %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_(ptr noundef nonnull align 1 dereferenceable(8) %0) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_(ptr noundef nonnull align 1 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 1 + 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 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_next_resize, align 8 + %_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 1 ret i64 %0 } -declare { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef, i64 noundef) #1 +declare void @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr dead_on_unwind writable sret(%"struct.std::pair.7") align 1, ptr noundef nonnull align 1 dereferenceable(12), i64 noundef, i64 noundef, i64 noundef) #1 ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 @@ -2458,7 +2181,7 @@ entry: store ptr %__state, ptr %__state.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0) + invoke void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 1 dereferenceable(52) %this1, i64 noundef %0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -2475,15 +2198,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) + invoke void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 1 dereferenceable(12) %_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 +2236,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 +2244,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 @@ -2534,7 +2257,7 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS7_10_Hash_nodeIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS7_10_Hash_nodeIS5_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkt.addr = alloca i64, align 8 @@ -2543,69 +2266,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 - %0 = load ptr, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 %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 - %3 = load ptr, ptr %_M_buckets2, align 8 + %_M_buckets2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %3 = load ptr, ptr %_M_buckets2, align 1 %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 - %6 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %5, i32 0, i32 0 + %6 = load ptr, ptr %_M_nxt, align 1 %7 = load ptr, ptr %__node.addr, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 - store ptr %6, ptr %_M_nxt4, align 8 + %_M_nxt4 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 + store ptr %6, ptr %_M_nxt4, align 1 %8 = load ptr, ptr %__node.addr, align 8 - %_M_buckets5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %9 = load ptr, ptr %_M_buckets5, align 8 + %_M_buckets5 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %9 = load ptr, ptr %_M_buckets5, align 1 %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 - store ptr %8, ptr %_M_nxt7, align 8 + %_M_nxt7 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %11, i32 0, i32 0 + store ptr %8, ptr %_M_nxt7, align 1 br label %if.end21 if.else: ; preds = %entry - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %12 = load ptr, ptr %_M_nxt8, align 8 + %_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 1 %13 = load ptr, ptr %__node.addr, align 8 - %_M_nxt9 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 - store ptr %12, ptr %_M_nxt9, align 8 + %_M_nxt9 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 + store ptr %12, ptr %_M_nxt9, align 1 %14 = load ptr, ptr %__node.addr, align 8 - %_M_before_begin10 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt11 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin10, i32 0, i32 0 - store ptr %14, ptr %_M_nxt11, align 8 + %_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 1 %15 = load ptr, ptr %__node.addr, align 8 - %_M_nxt12 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 - %16 = load ptr, ptr %_M_nxt12, align 8 + %_M_nxt12 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 + %16 = load ptr, ptr %_M_nxt12, align 1 %tobool13 = icmp ne ptr %16, null br i1 %tobool13, label %if.then14, label %if.end if.then14: ; preds = %if.else %17 = load ptr, ptr %__node.addr, align 8 - %_M_buckets15 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %18 = load ptr, ptr %_M_buckets15, align 8 + %_M_buckets15 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %18 = load ptr, ptr %_M_buckets15, align 1 %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 1 dereferenceable(20) %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 1 dereferenceable(52) %this1, ptr noundef nonnull align 1 dereferenceable(12) %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 - %20 = load ptr, ptr %_M_buckets19, align 8 + %_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 1 %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 +2337,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 1 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,12 +2346,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_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 1 dereferenceable(8) %this1, ptr noundef %0) #11 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %0 = alloca %"struct.std::integral_constant", align 1 %this.addr = alloca ptr, align 8 @@ -2641,13 +2365,13 @@ entry: store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %1) + %call = call noundef ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(52) %this1, i64 noundef %1) store ptr %call, ptr %__new_buckets, align 8 - %call2 = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) + %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 1 dereferenceable(52) %this1) store ptr %call2, ptr %__p, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 + %_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 1 store i64 0, ptr %__bbegin_bkt, align 8 br label %while.cond @@ -2658,38 +2382,39 @@ 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 1 dereferenceable(20) %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 1 dereferenceable(12) %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 - %9 = load ptr, ptr %_M_nxt7, align 8 + %_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 1 %10 = load ptr, ptr %__p, align 8 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - store ptr %9, ptr %_M_nxt8, align 8 + %_M_nxt8 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 + store ptr %9, ptr %_M_nxt8, align 1 %11 = load ptr, ptr %__p, align 8 - %_M_before_begin9 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt10 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin9, i32 0, i32 0 - store ptr %11, ptr %_M_nxt10, align 8 - %_M_before_begin11 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_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 1 + %_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 - %15 = load ptr, ptr %_M_nxt13, align 8 + %_M_nxt13 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %14, i32 0, i32 0 + %15 = load ptr, ptr %_M_nxt13, align 1 %tobool14 = icmp ne ptr %15, null br i1 %tobool14, label %if.then15, label %if.end @@ -2697,7 +2422,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,20 +2434,20 @@ 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 - %23 = load ptr, ptr %_M_nxt18, align 8 + %_M_nxt18 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %22, i32 0, i32 0 + %23 = load ptr, ptr %_M_nxt18, align 1 %24 = load ptr, ptr %__p, align 8 - %_M_nxt19 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 - store ptr %23, ptr %_M_nxt19, align 8 + %_M_nxt19 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 + store ptr %23, ptr %_M_nxt19, align 1 %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 - store ptr %25, ptr %_M_nxt21, align 8 + %_M_nxt21 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %28, i32 0, i32 0 + store ptr %25, ptr %_M_nxt21, align 1 br label %if.end22 if.end22: ; preds = %if.else, %if.end @@ -2731,18 +2456,18 @@ if.end22: ; preds = %if.else, %if.end br label %while.cond, !llvm.loop !9 while.end: ; preds = %while.cond - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) + 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 1 dereferenceable(52) %this1) %30 = load i64, ptr %__bkt_count.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 %30, ptr %_M_bucket_count, align 8 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + store i64 %30, ptr %_M_bucket_count, align 1 %31 = load ptr, ptr %__new_buckets, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - store ptr %31, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + store ptr %31, ptr %_M_buckets, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__state) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 1 dereferenceable(12) %this, i64 noundef %__state) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__state.addr = alloca i64, align 8 @@ -2750,13 +2475,13 @@ 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 - store i64 %0, ptr %_M_next_resize, align 8 + %_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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 @@ -2769,9 +2494,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 - 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_bucket = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 + store ptr null, ptr %_M_single_bucket, align 1 + %_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 +2514,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 +2532,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 +2583,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 +2593,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,84 +2604,76 @@ 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 1 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 + store ptr %0, ptr %_M_cur, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - call void @_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %call) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 + %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 1 dereferenceable(52) %this1) + call void @_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 1 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 1 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 +2683,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d00563424 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,24 +1,27 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 } +%"class.std::_Hashtable" = type <{ ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }> %"struct.std::__detail::_Hash_node_base" = type { ptr } -%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 } -%"struct.std::pair" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }> +%"struct.std::__detail::_Prime_rehash_policy" = type <{ float, i64 }> +%"struct.std::pair" = type <{ %"struct.std::__detail::_Node_iterator", 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,86 +372,67 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %aset = alloca %"class.std::unordered_set", align 8 + %aset = alloca %"class.std::unordered_set", align 1 %a = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::__detail::_Node_iterator", align 8 + %coerce = alloca %"struct.std::pair", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %it = alloca %"struct.std::__detail::_Node_iterator", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #5 - %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #15 + call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(52) %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 1 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) + %call2 = invoke { ptr, i8 } @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE6insertERKS2_(ptr noundef nonnull align 1 dereferenceable(52) %aset, ptr noundef nonnull align 8 dereferenceable(8) %a) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call2, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call2, 1 - store i8 %3, ptr %2, align 8 - %call3 = call ptr @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %aset) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %it, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK1ALb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %4 = load ptr, ptr %call5, align 8 - store ptr %4, ptr %aptr, align 8 - %5 = load ptr, ptr %aptr, align 8 - %6 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %5, align 8 + store { ptr, i8 } %call2, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %coerce, ptr align 8 %tmp.coerce, i64 9, i1 false) + %call3 = call ptr @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(52) %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 1 + %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK1ALb1ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %it) #11 + %0 = load ptr, ptr %call5, align 8 + store ptr %0, ptr %aptr, align 8 + %1 = load ptr, ptr %aptr, align 8 + %2 = load ptr, ptr %ptr, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %7 = load ptr, ptr %vfn, align 8 - invoke void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) + %3 = load ptr, ptr %vfn, align 8 + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont1 store i32 0, ptr %retval, align 4 - call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #5 - %8 = load i32, ptr %retval, align 4 - ret i32 %8 + call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 1 dereferenceable(52) %aset) #11 + %4 = load i32, ptr %retval, align 4 + ret i32 %4 lpad: ; preds = %invoke.cont1, %invoke.cont, %entry - %9 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup - %10 = extractvalue { ptr, i32 } %9, 0 - store ptr %10, ptr %exn.slot, align 8 - %11 = extractvalue { ptr, i32 } %9, 1 - store i32 %11, ptr %ehselector.slot, align 4 - call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #5 + %6 = extractvalue { ptr, i32 } %5, 0 + store ptr %6, ptr %exn.slot, align 8 + %7 = extractvalue { ptr, i32 } %5, 1 + store i32 %7, ptr %ehselector.slot, align 4 + call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 1 dereferenceable(52) %aset) #11 br label %eh.resume eh.resume: ; preds = %lpad @@ -490,246 +443,221 @@ 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 1 dereferenceable(52) %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 1 dereferenceable(52) %_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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local { ptr, i8 } @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE6insertERKS2_(ptr noundef nonnull align 1 dereferenceable(52) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::pair", align 1 %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %retval.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 1 %retval, ptr align 8 %tmp.coerce, i64 9, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %1 = load { ptr, i8 }, ptr %retval.coerce, align 8 + ret { ptr, i8 } %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) #5 + ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 { entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_set", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call, ptr %coerce.dive2, align 8 - %coerce.dive3 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive3, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive4, align 8 + %_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 1 dereferenceable(52) %_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 1 + %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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK1ALb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK1ALb1ELb0EEdeEv(ptr noundef nonnull align 1 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 - %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 + %_M_cur = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_cur, align 1 + %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 1 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 1 dereferenceable(52) %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 1 dereferenceable(52) %_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 1 dereferenceable(52) %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 - store ptr %_M_single_bucket, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 1, ptr %_M_bucket_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_before_begin) #5 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - call void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, float noundef 1.000000e+00) #5 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket2, align 8 + 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 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + store i64 1, ptr %_M_bucket_count, align 1 + %_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 1 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 1 + %_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 1 dereferenceable(12) %_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 1 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 1 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 - store ptr null, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_nxt, align 1 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 1 dereferenceable(12) %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 - 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 + store float %0, ptr %_M_max_load_factor, align 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 1 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 } ; 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -742,35 +670,35 @@ 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 1 dereferenceable(52) %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 - 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) + 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 1 dereferenceable(52) %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 1 dereferenceable(52) %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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) + %call = invoke noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this1) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry @@ -778,45 +706,45 @@ 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 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 %mul = mul i64 %1, 8 call void @llvm.memset.p0.i64(ptr align 8 %0, i8 0, i64 %mul, i1 false) - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 + %_M_element_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + store i64 0, ptr %_M_element_count, align 1 + %_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 1 ret void terminate.lpad: ; preds = %invoke.cont, %entry %2 = landingpad { ptr, i32 } catch ptr null %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #16 + call void @__clang_call_terminate(ptr %3) #13 unreachable } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0, i64 noundef %1) + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 + 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 1 dereferenceable(52) %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) #6 comdat { + %2 = call ptr @__cxa_begin_catch(ptr %0) #11 + call void @_ZSt9terminatev() #13 unreachable } @@ -824,13 +752,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 +782,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 1 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) @@ -865,34 +793,39 @@ while.end: ; preds = %while.cond } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 1 dereferenceable(52) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 + %_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 1 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) #7 ; 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 { +define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 1 dereferenceable(16) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_nxt, align 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE18_M_deallocate_nodeEPS5_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { entry: + %this.addr.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 +833,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 1 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 +860,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 +873,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 1 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 } @@ -982,27 +898,27 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 + %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 1 dereferenceable(8) %this1) #11 ret ptr %call } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 1 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 + %_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 1 dereferenceable(16) %__r) #2 comdat align 2 { entry: %__r.addr = alloca ptr, align 8 store ptr %__r, ptr %__r.addr, align 8 @@ -1010,42 +926,28 @@ 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) #8 ; 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 { +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 1 dereferenceable(52) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkts.addr = alloca ptr, align 8 @@ -1055,7 +957,7 @@ 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 zeroext i1 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_uses_single_bucketEPPNS4_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0) + %call = call noundef zeroext i1 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_uses_single_bucketEPPNS4_15_Hash_node_baseE(ptr noundef nonnull align 1 dereferenceable(52) %this1, ptr noundef %0) br i1 %call, label %if.then, label %if.end if.then: ; preds = %entry @@ -1072,7 +974,7 @@ return: ; preds = %if.end, %if.then } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_uses_single_bucketEPPNS4_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts) #2 comdat align 2 { +define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_uses_single_bucketEPPNS4_15_Hash_node_baseE(ptr noundef nonnull align 1 dereferenceable(52) %this, ptr noundef %__bkts) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkts.addr = alloca ptr, align 8 @@ -1080,7 +982,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 +990,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 +1010,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 +1056,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 +1064,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 @@ -1243,34 +1115,33 @@ entry: ; Function Attrs: mustprogress noinline optnone uwtable define linkonce_odr dso_local { ptr, i8 } @_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE6insertERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__v) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::pair", align 1 %this.addr = alloca ptr, align 8 %__v.addr = alloca ptr, align 8 %__h = alloca ptr, align 8 - %__node_gen = alloca %"struct.std::__detail::_AllocNode", align 8 + %__node_gen = alloca %"struct.std::__detail::_AllocNode", align 1 %agg.tmp = alloca %"struct.std::integral_constant", align 1 + %tmp.coerce = alloca { ptr, i8 }, align 8 + %retval.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 - %call = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE20_M_conjure_hashtableEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) + %call = call noundef nonnull align 1 dereferenceable(52) ptr @_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE20_M_conjure_hashtableEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) store ptr %call, ptr %__h, align 8 %0 = load ptr, ptr %__h, align 8 - call void @_ZNSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEC2ERNS_16_Hashtable_allocIS6_EE(ptr noundef nonnull align 8 dereferenceable(8) %__node_gen, ptr noundef nonnull align 1 dereferenceable(1) %0) + call void @_ZNSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEC2ERNS_16_Hashtable_allocIS6_EE(ptr noundef nonnull align 1 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 1 dereferenceable(52) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 1 dereferenceable(8) %__node_gen) + store { ptr, i8 } %call2, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %retval, ptr align 8 %tmp.coerce, i64 9, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %3 = load { ptr, i8 }, ptr %retval.coerce, align 8 + ret { ptr, i8 } %3 } ; 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 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(52) ptr @_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE20_M_conjure_hashtableEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 @@ -1278,179 +1149,412 @@ 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 1 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 + store ptr %0, ptr %_M_h, align 1 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 1 dereferenceable(52) %this, ptr noundef nonnull align 8 dereferenceable(8) %__arg, ptr noundef nonnull align 1 dereferenceable(8) %__node_gen) #0 comdat align 2 { entry: - %retval = alloca %"struct.std::pair", align 8 + %retval = alloca %"struct.std::pair", align 1 %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 + %retval.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 1 dereferenceable(52) %this1, ptr noundef nonnull align 8 dereferenceable(8) %call, ptr noundef nonnull align 1 dereferenceable(8) %2) + store { ptr, i8 } %call2, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %retval, ptr align 8 %tmp.coerce, i64 9, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %3 = load { ptr, i8 }, ptr %retval.coerce, 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 1 dereferenceable(52) %this, ptr noundef nonnull align 8 dereferenceable(8) %__arg, ptr noundef nonnull align 1 dereferenceable(8) %__node_gen) #0 comdat align 2 { entry: + %retval = alloca %"struct.std::pair", align 1 %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 + %retval.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 1 dereferenceable(52) %this1, ptr noundef nonnull align 8 dereferenceable(8) %call2, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 1 dereferenceable(8) %2) + store { ptr, i8 } %call3, ptr %tmp.coerce, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %retval, ptr align 8 %tmp.coerce, i64 9, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %3 = load { ptr, i8 }, ptr %retval.coerce, 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 1 dereferenceable(52) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k, ptr noundef nonnull align 8 dereferenceable(8) %__v, ptr noundef nonnull align 1 dereferenceable(8) %__node_gen) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %retval = alloca %"struct.std::pair", align 1 %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 1 + %ref.tmp = alloca %"struct.std::__detail::_Node_iterator", align 1 + %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 1 + %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 1 + %__pos = alloca %"struct.std::__detail::_Node_iterator", align 1 + %exn.slot = alloca ptr, align 8 + %ehselector.slot = alloca i32, align 4 + %ref.tmp32 = alloca i8, align 1 + %retval.coerce = alloca { ptr, i8 }, align 8 + 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 1 dereferenceable(52) %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 1 dereferenceable(52) %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 1 + 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 1 dereferenceable(52) %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 1 + %call8 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPK1ALb0EEES6_(ptr noundef nonnull align 1 dereferenceable(8) %__it, ptr noundef nonnull align 1 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 1 + %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 1 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 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 1 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEppEv(ptr noundef nonnull align 1 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 1 dereferenceable(52) %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 1 dereferenceable(52) %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 1 dereferenceable(52) %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 1 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 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 1 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 1 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 1 + %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 1 dereferenceable(52) %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 1 + %_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 1 + 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 1 dereferenceable(9) %retval, ptr noundef nonnull align 1 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 1 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 1 dereferenceable(16) %__node26) #11 + br label %eh.resume + +return: ; preds = %invoke.cont33, %if.then21, %if.then10 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %retval.coerce, ptr align 1 %retval, i64 9, i1 false) + %18 = load { ptr, i8 }, ptr %retval.coerce, 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 1 dereferenceable(52) %this) #2 comdat align 2 { +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 1 + 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 1 dereferenceable(52) %this) #2 comdat align 2 { +entry: + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 + %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 1 dereferenceable(52) %this1) + call void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 1 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 1 + 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 1 dereferenceable(8) %__x, ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 dereferenceable(52) %this) #2 comdat align 2 { +entry: + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 + %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 1 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 1 + 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 1 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 1 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 1 dereferenceable(9) %this, ptr noundef nonnull align 1 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 1 %first, ptr align 1 %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 1 + ret void +} + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEppEv(ptr noundef nonnull align 1 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 1 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 1 dereferenceable(52) %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 1 + %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 1 dereferenceable(52) %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 +1570,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 1 dereferenceable(52) %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,8 +1578,8 @@ 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 - %5 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 + %5 = load ptr, ptr %_M_nxt, align 1 store ptr %5, ptr %retval, align 8 br label %return @@ -1488,8 +1592,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 1 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 +1601,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 1 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 1 dereferenceable(9) %this, ptr noundef nonnull align 1 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 +1615,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 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %first, ptr align 1 %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 - %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 1 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 1 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 1 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 1 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,125 +1652,95 @@ 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 + store ptr %0, ptr %_M_h, align 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 + store ptr %1, ptr %_M_node, align 1 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 1 dereferenceable(52) %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 + %retval = alloca %"struct.std::__detail::_Node_iterator", align 1 %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 1 store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 store i64 %__bkt, ptr %__bkt.addr, align 8 store i64 %__code, ptr %__code.addr, align 8 store ptr %__node, ptr %__node.addr, align 8 store i64 %__n_elt, ptr %__n_elt.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %call = call noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy) + %_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 1 dereferenceable(12) %_M_rehash_policy) store i64 %call, ptr %ref.tmp, align 8 store ptr %ref.tmp, ptr %__saved_state, align 8 - %_M_rehash_policy2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_bucket_count, align 8 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %1 = load i64, ptr %_M_element_count, align 8 + %_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 1 + %_M_element_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %1 = load i64, ptr %_M_element_count, align 1 %2 = load i64, ptr %__n_elt.addr, align 8 - %call3 = call { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) - %3 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 0 - %4 = extractvalue { i8, i64 } %call3, 0 - store i8 %4, ptr %3, align 8 - %5 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 1 - %6 = extractvalue { i8, i64 } %call3, 1 - store i64 %6, ptr %5, align 8 - %first = getelementptr inbounds %"struct.std::pair.7", ptr %__do_rehash, i32 0, i32 0 - %7 = load i8, ptr %first, align 8 - %tobool = trunc i8 %7 to i1 - br i1 %tobool, label %if.then, label %if.end + call void @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr dead_on_unwind writable sret(%"struct.std::pair.5") align 1 %__do_rehash, ptr noundef nonnull align 1 dereferenceable(12) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) + %first = getelementptr inbounds nuw %"struct.std::pair.5", ptr %__do_rehash, i32 0, i32 0 + %3 = load i8, ptr %first, align 1 + %loadedv = trunc i8 %3 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 - %8 = load i64, ptr %second, align 8 - %9 = load ptr, ptr %__saved_state, align 8 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %8, ptr noundef nonnull align 8 dereferenceable(8) %9) - %10 = load ptr, ptr %__k.addr, align 8 - %11 = load i64, ptr %__code.addr, align 8 - %call4 = call noundef i64 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexERKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(8) %10, i64 noundef %11) - store i64 %call4, ptr %__bkt.addr, align 8 + %second = getelementptr inbounds nuw %"struct.std::pair.5", ptr %__do_rehash, i32 0, i32 1 + %4 = load i64, ptr %second, align 1 + %5 = 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 1 dereferenceable(52) %this1, i64 noundef %4, ptr noundef nonnull align 8 dereferenceable(8) %5) + %6 = load i64, ptr %__code.addr, align 8 + %call3 = 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 1 dereferenceable(52) %this1, i64 noundef %6) + store i64 %call3, ptr %__bkt.addr, align 8 br label %if.end if.end: ; preds = %if.then, %entry + %7 = load ptr, ptr %__node.addr, align 8 + %add.ptr = getelementptr inbounds i8, ptr %7, i64 8 + %8 = 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 %8) + %9 = load i64, ptr %__bkt.addr, align 8 + %10 = 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 1 dereferenceable(52) %this1, i64 noundef %9, ptr noundef %10) + %_M_element_count4 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 + %11 = load i64, ptr %_M_element_count4, align 1 + %inc = add i64 %11, 1 + store i64 %inc, ptr %_M_element_count4, align 1 %12 = load ptr, ptr %__node.addr, align 8 - %13 = load i64, ptr %__code.addr, align 8 - call void @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %12, i64 noundef %13) - %14 = load i64, ptr %__bkt.addr, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %14, ptr noundef %15) - %_M_element_count5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %16 = load i64, ptr %_M_element_count5, align 8 - %inc = add i64 %16, 1 - store i64 %inc, ptr %_M_element_count5, align 8 - %17 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %17) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive6 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %18 = load ptr, ptr %coerce.dive6, align 8 - ret ptr %18 + call void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(8) %retval, ptr noundef %12) #11 + %coerce.dive = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 + %coerce.dive5 = getelementptr inbounds nuw %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 + %13 = load ptr, ptr %coerce.dive5, align 1 + ret ptr %13 } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IRS5_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %first, ptr align 8 %0, i64 8, i1 false) - %second = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { +; 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 1 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 - %0 = load ptr, ptr %_M_node, 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 %this1, i32 0, i32 1 + %0 = load ptr, ptr %_M_node, align 1 %tobool = icmp ne ptr %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_h, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_node2, align 8 + %_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 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 1 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 +1754,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 +1801,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 1 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 1 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 1 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 1 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 1 + %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 1 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 1 + 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 +1867,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 +1900,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 1 dereferenceable(52) %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 +1915,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 - %0 = load ptr, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 %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,8 +1931,8 @@ 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 - %5 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 + %5 = load ptr, ptr %_M_nxt, align 1 store ptr %5, ptr %__p, align 8 br label %for.cond @@ -1819,7 +1940,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 1 dereferenceable(8) %add.ptr) br i1 %call, label %if.then2, label %if.end3 if.then2: ; preds = %for.cond @@ -1829,34 +1951,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 - %11 = load ptr, ptr %_M_nxt4, align 8 + %_M_nxt4 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 + %11 = load ptr, ptr %_M_nxt4, align 1 %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 1 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 1 dereferenceable(52) %this1, ptr noundef nonnull align 1 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 1 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 +1989,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 1 dereferenceable(8) %__n) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__k.addr = alloca ptr, align 8 @@ -1879,26 +2002,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 1 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 1 dereferenceable(52) %this, ptr noundef nonnull align 1 dereferenceable(8) %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca ptr, align 8 @@ -1906,14 +2025,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 - %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 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + %1 = load i64, ptr %_M_bucket_count, align 1 + %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 1 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 +2041,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 1 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 1 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 1 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 1 + 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 1 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 1 + %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 +2147,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 1 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 1 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 +2240,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 +2259,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 1 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 1 dereferenceable(8) %this1) #11 + %0 = getelementptr inbounds i8, ptr %this1, i64 8 ret void } @@ -2220,12 +2274,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,76 +2289,52 @@ 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 +declare void @_ZSt28__throw_bad_array_new_lengthv() #10 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hash_node_value_baseIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE9constructIS5_JRKS5_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} +; Function Attrs: 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 1 dereferenceable(12) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_next_resize, align 8 + %_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 1 ret i64 %0 } -declare { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef, i64 noundef) #1 +declare void @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr dead_on_unwind writable sret(%"struct.std::pair.5") align 1, ptr noundef nonnull align 1 dereferenceable(12), i64 noundef, i64 noundef, i64 noundef) #1 ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { entry: %this.addr = alloca ptr, align 8 %__bkt_count.addr = alloca i64, align 8 @@ -2316,7 +2347,7 @@ entry: store ptr %__state, ptr %__state.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %0 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0) + invoke void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 1 dereferenceable(52) %this1, i64 noundef %0) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry @@ -2333,15 +2364,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) + invoke void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 1 dereferenceable(12) %_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 +2402,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 +2410,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 @@ -2392,7 +2423,7 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__bkt.addr = alloca i64, align 8 @@ -2401,69 +2432,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 - %0 = load ptr, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_buckets, align 1 %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 - %3 = load ptr, ptr %_M_buckets2, align 8 + %_M_buckets2 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %3 = load ptr, ptr %_M_buckets2, align 1 %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 - %6 = load ptr, ptr %_M_nxt, align 8 + %_M_nxt = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %5, i32 0, i32 0 + %6 = load ptr, ptr %_M_nxt, align 1 %7 = load ptr, ptr %__node.addr, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 - store ptr %6, ptr %_M_nxt4, align 8 + %_M_nxt4 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 + store ptr %6, ptr %_M_nxt4, align 1 %8 = load ptr, ptr %__node.addr, align 8 - %_M_buckets5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %9 = load ptr, ptr %_M_buckets5, align 8 + %_M_buckets5 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %9 = load ptr, ptr %_M_buckets5, align 1 %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 - store ptr %8, ptr %_M_nxt7, align 8 + %_M_nxt7 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %11, i32 0, i32 0 + store ptr %8, ptr %_M_nxt7, align 1 br label %if.end21 if.else: ; preds = %entry - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %12 = load ptr, ptr %_M_nxt8, align 8 + %_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 1 %13 = load ptr, ptr %__node.addr, align 8 - %_M_nxt9 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 - store ptr %12, ptr %_M_nxt9, align 8 + %_M_nxt9 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 + store ptr %12, ptr %_M_nxt9, align 1 %14 = load ptr, ptr %__node.addr, align 8 - %_M_before_begin10 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt11 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin10, i32 0, i32 0 - store ptr %14, ptr %_M_nxt11, align 8 + %_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 1 %15 = load ptr, ptr %__node.addr, align 8 - %_M_nxt12 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 - %16 = load ptr, ptr %_M_nxt12, align 8 + %_M_nxt12 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 + %16 = load ptr, ptr %_M_nxt12, align 1 %tobool13 = icmp ne ptr %16, null br i1 %tobool13, label %if.then14, label %if.end if.then14: ; preds = %if.else %17 = load ptr, ptr %__node.addr, align 8 - %_M_buckets15 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %18 = load ptr, ptr %_M_buckets15, align 8 + %_M_buckets15 = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + %18 = load ptr, ptr %_M_buckets15, align 1 %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 1 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 1 dereferenceable(52) %this1, ptr noundef nonnull align 1 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 - %20 = load ptr, ptr %_M_buckets19, align 8 + %_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 1 %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 @@ -2472,7 +2504,7 @@ if.end21: ; preds = %if.end, %if.then } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %0 = alloca %"struct.std::integral_constant", align 1 %this.addr = alloca ptr, align 8 @@ -2486,13 +2518,13 @@ entry: store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %1) + %call = call noundef ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(52) %this1, i64 noundef %1) store ptr %call, ptr %__new_buckets, align 8 - %call2 = call noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) + %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 1 dereferenceable(52) %this1) store ptr %call2, ptr %__p, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 + %_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 1 store i64 0, ptr %__bbegin_bkt, align 8 br label %while.cond @@ -2503,38 +2535,39 @@ 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 1 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 1 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 - %9 = load ptr, ptr %_M_nxt7, align 8 + %_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 1 %10 = load ptr, ptr %__p, align 8 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - store ptr %9, ptr %_M_nxt8, align 8 + %_M_nxt8 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 + store ptr %9, ptr %_M_nxt8, align 1 %11 = load ptr, ptr %__p, align 8 - %_M_before_begin9 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt10 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin9, i32 0, i32 0 - store ptr %11, ptr %_M_nxt10, align 8 - %_M_before_begin11 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 + %_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 1 + %_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 - %15 = load ptr, ptr %_M_nxt13, align 8 + %_M_nxt13 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %14, i32 0, i32 0 + %15 = load ptr, ptr %_M_nxt13, align 1 %tobool14 = icmp ne ptr %15, null br i1 %tobool14, label %if.then15, label %if.end @@ -2542,7 +2575,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,40 +2587,40 @@ 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 - %23 = load ptr, ptr %_M_nxt18, align 8 + %_M_nxt18 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %22, i32 0, i32 0 + %23 = load ptr, ptr %_M_nxt18, align 1 %24 = load ptr, ptr %__p, align 8 - %_M_nxt19 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 - store ptr %23, ptr %_M_nxt19, align 8 + %_M_nxt19 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 + store ptr %23, ptr %_M_nxt19, align 1 %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 - store ptr %25, ptr %_M_nxt21, align 8 + %_M_nxt21 = getelementptr inbounds nuw %"struct.std::__detail::_Hash_node_base", ptr %28, i32 0, i32 0 + store ptr %25, ptr %_M_nxt21, align 1 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) + 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 1 dereferenceable(52) %this1) %30 = load i64, ptr %__bkt_count.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 %30, ptr %_M_bucket_count, align 8 + %_M_bucket_count = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 + store i64 %30, ptr %_M_bucket_count, align 1 %31 = load ptr, ptr %__new_buckets, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - store ptr %31, ptr %_M_buckets, align 8 + %_M_buckets = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 + store ptr %31, ptr %_M_buckets, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__state) #2 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 1 dereferenceable(12) %this, i64 noundef %__state) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__state.addr = alloca i64, align 8 @@ -2595,13 +2628,13 @@ 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 - store i64 %0, ptr %_M_next_resize, align 8 + %_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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(52) %this, i64 noundef %__bkt_count) #0 comdat align 2 { entry: %retval = alloca ptr, align 8 %this.addr = alloca ptr, align 8 @@ -2614,9 +2647,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 - 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_bucket = getelementptr inbounds nuw %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 + store ptr null, ptr %_M_single_bucket, align 1 + %_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 +2667,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 +2685,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 +2736,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 +2746,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 +2757,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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +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 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #8 = { 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 #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 +2807,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..d029b282b 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..de775535e 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,31 +242,15 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %vec = alloca %"class.std::vector", align 8 - %a = alloca %class.A, align 8 + %vec = alloca %"class.std::vector", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 %aptr = alloca ptr, align 8 @@ -309,25 +258,25 @@ 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 - invoke void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %vec, ptr noundef nonnull align 8 dereferenceable(8) %a) + call void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(24) %vec) #8 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %a) #8 + invoke void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(24) %vec, ptr noundef nonnull align 1 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 1 dereferenceable(8) ptr @_ZNSt6vectorI1ASaIS0_EEixEm(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont1 unwind label %lpad invoke.cont1: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 + call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 1 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: +define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr noundef nonnull align 1 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 + %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", 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_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 + %_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 1 + %_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 1 %cmp = icmp ne ptr %0, %1 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl4, i32 0, i32 1 - %2 = load ptr, ptr %_M_finish5, align 8 + %_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 1 %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl3, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 - %4 = load ptr, ptr %_M_finish7, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_finish7, align 8 + 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 1 dereferenceable(8) %7, ptr noundef nonnull align 1 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 1 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, i32 1 + store ptr %incdec.ptr, ptr %_M_finish7, align 1 br label %if.end if.else: ; preds = %entry - %call = call ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %5 = load ptr, ptr %__x.addr, align 8 - %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 - %6 = load ptr, ptr %coerce.dive8, align 8 - call void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %6, ptr noundef nonnull align 8 dereferenceable(8) %5) + %call = call ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 1 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 1 + %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 1 + call void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr %11, ptr noundef nonnull align 1 dereferenceable(8) %10) br label %if.end if.end: ; preds = %if.else, %if.then @@ -418,107 +385,104 @@ if.end: ; preds = %if.else, %if.then declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorI1ASaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNSt6vectorI1ASaIS0_EEixEm(ptr noundef nonnull align 1 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 store i64 %__n, ptr %__n.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 + %_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 1 %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 1 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 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - invoke void @_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 + %_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 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 1 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 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_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %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 1 dereferenceable(24) %_M_impl) #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_EE12_Vector_implC2Ev(ptr noundef nonnull align 1 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 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_start, align 8 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_finish, align 8 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_end_of_storage, align 8 + 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 1 dereferenceable(24) %this1) #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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_start, align 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 1 + %_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 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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,38 +516,38 @@ 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 1 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 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl3, i32 0, i32 0 - %2 = load ptr, ptr %_M_start4, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - invoke void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) + invoke void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry - %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl5) #5 + %_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 1 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 } @@ -626,8 +575,11 @@ 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 { +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 1 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 1 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,156 +650,142 @@ 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: - %__position = alloca %"class.__gnu_cxx::__normal_iterator", align 8 +define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 1 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 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__len = alloca i64, align 8 %__old_start = alloca ptr, align 8 %__old_finish = alloca ptr, align 8 %__elems_before = alloca i64, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 + %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 1 %__new_start = alloca ptr, align 8 %__new_finish = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 + %coerce.dive = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %__position, i32 0, i32 0 + store ptr %__position.coerce, ptr %coerce.dive, align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) + %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 1 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) store i64 %call, ptr %__len, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 + %_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 1 store ptr %0, ptr %__old_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 + %_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 1 store ptr %1, ptr %__old_finish, align 8 - %call3 = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %__position, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 + %call3 = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 1 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 1 + %call5 = call noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 1 dereferenceable(8) %__position, ptr noundef nonnull align 1 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) + %call6 = call noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 1 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 1 dereferenceable(8) %10, ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 1 + %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 - store ptr %add.ptr19, ptr %_M_end_of_storage21, align 8 + call void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - call void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_finish) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 1 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -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 1 dereferenceable(24) %this1) #8 + %call2 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 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 1 dereferenceable(24) %this1) #8 + %call4 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 dereferenceable(24) %this1) #8 br label %cond.end cond.false: ; preds = %lor.lhs.false @@ -918,17 +841,17 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %__lhs, ptr noundef nonnull align 8 dereferenceable(8) %__rhs) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 1 dereferenceable(8) %__lhs, ptr noundef nonnull align 1 dereferenceable(8) %__rhs) #2 comdat { entry: %__lhs.addr = alloca ptr, align 8 %__rhs.addr = alloca ptr, align 8 store ptr %__lhs, ptr %__lhs.addr, align 8 store ptr %__rhs, ptr %__rhs.addr, align 8 %0 = load ptr, ptr %__lhs.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 1 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 1 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 @@ -938,23 +861,25 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - call void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_start) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 1 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,43 +922,43 @@ 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 ret ptr %_M_current } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 0 - %1 = load ptr, ptr %_M_start, align 8 + %_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 1 + %_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 1 %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 @@ -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,49 +1002,47 @@ 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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: 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,55 +1074,24 @@ 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 1 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 + store ptr %1, ptr %_M_current, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { +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 - 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 1 dereferenceable(8) %6, ptr noundef nonnull align 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..14ce5c99d 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/vector-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,30 +235,14 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %vec = alloca %"class.std::vector", align 8 + %vec = alloca %"class.std::vector", align 1 %a = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 @@ -294,31 +251,31 @@ 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 1 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 1 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) + invoke void @_ZNSt6vectorIP1ASaIS1_EE9push_backERKS1_(ptr noundef nonnull align 1 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 1 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 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont1 store i32 0, ptr %retval, align 4 - call void @_ZNSt6vectorIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 + call void @_ZNSt6vectorIP1ASaIS1_EED2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 1 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 { +define linkonce_odr dso_local void @_ZNSt6vectorIP1ASaIS1_EE9push_backERKS1_(ptr noundef nonnull align 1 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 + %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", 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_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 + %_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 1 + %_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 1 %cmp = icmp ne ptr %0, %1 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl4, i32 0, i32 1 - %2 = load ptr, ptr %_M_finish5, align 8 + %_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 1 %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl3, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 - %4 = load ptr, ptr %_M_finish7, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_finish7, align 8 + 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 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, i32 1 + store ptr %incdec.ptr, ptr %_M_finish7, align 1 br label %if.end if.else: ; preds = %entry - %call = call ptr @_ZNSt6vectorIP1ASaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %5 = load ptr, ptr %__x.addr, align 8 - %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 - %6 = load ptr, ptr %coerce.dive8, align 8 - call void @_ZNSt6vectorIP1ASaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %6, ptr noundef nonnull align 8 dereferenceable(8) %5) + %call = call ptr @_ZNSt6vectorIP1ASaIS1_EE3endEv(ptr noundef nonnull align 1 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 1 + %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 1 + call void @_ZNSt6vectorIP1ASaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr %12, ptr noundef nonnull align 8 dereferenceable(8) %11) br label %if.end if.end: ; preds = %if.else, %if.then @@ -412,107 +388,104 @@ if.end: ; preds = %if.else, %if.then } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP1ASaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP1ASaIS1_EEixEm(ptr noundef nonnull align 1 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 store ptr %this, ptr %this.addr, align 8 store i64 %__n, ptr %__n.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 + %_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 1 %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 1 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 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - invoke void @_ZSt8_DestroyIPP1AS1_EvT_S3_RSaIT0_E(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt12_Vector_baseIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 + %_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 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 1 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt12_Vector_baseIP1ASaIS1_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 1 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_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %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 1 dereferenceable(24) %_M_impl) #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_EE12_Vector_implC2Ev(ptr noundef nonnull align 1 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 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_start, align 8 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_finish, align 8 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_end_of_storage, align 8 + 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 1 dereferenceable(24) %this1) #9 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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_start, align 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 1 + %_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 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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,38 +519,38 @@ 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 1 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 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl3, i32 0, i32 0 - %2 = load ptr, ptr %_M_start4, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - invoke void @_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) + invoke void @_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry - %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseIP1ASaIS1_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl5) #5 + %_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 1 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 } @@ -620,8 +578,11 @@ 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 { +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m(ptr noundef nonnull align 1 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 1 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,145 +653,131 @@ 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 { +define linkonce_odr dso_local void @_ZNSt6vectorIP1ASaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { entry: - %__position = alloca %"class.__gnu_cxx::__normal_iterator", align 8 + %this.addr.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 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__len = alloca i64, align 8 %__old_start = alloca ptr, align 8 %__old_finish = alloca ptr, align 8 %__elems_before = alloca i64, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 + %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 1 %__new_start = alloca ptr, align 8 %__new_finish = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 + %coerce.dive = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %__position, i32 0, i32 0 + store ptr %__position.coerce, ptr %coerce.dive, align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) + %call = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE12_M_check_lenEmPKc(ptr noundef nonnull align 1 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) store i64 %call, ptr %__len, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 + %_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 1 store ptr %0, ptr %__old_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 + %_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 1 store ptr %1, ptr %__old_finish, align 8 - %call3 = call ptr @_ZNSt6vectorIP1ASaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef i64 @_ZN9__gnu_cxxmiIPP1ASt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(ptr noundef nonnull align 8 dereferenceable(8) %__position, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 + %call3 = call ptr @_ZNSt6vectorIP1ASaIS1_EE5beginEv(ptr noundef nonnull align 1 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 1 + %call5 = call noundef i64 @_ZN9__gnu_cxxmiIPP1ASt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(ptr noundef nonnull align 1 dereferenceable(8) %__position, ptr noundef nonnull align 1 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) + %call6 = call noundef ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE11_M_allocateEm(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 1 + %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 - store ptr %add.ptr19, ptr %_M_end_of_storage21, align 8 + call void @_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m(ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorIP1ASaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt6vectorIP1ASaIS1_EE3endEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - call void @_ZN9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_finish) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE12_M_check_lenEmPKc(ptr noundef nonnull align 1 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -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 1 dereferenceable(24) %this1) #9 + %call2 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 1 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 1 dereferenceable(24) %this1) #9 + %call4 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 dereferenceable(24) %this1) #9 br label %cond.end cond.false: ; preds = %lor.lhs.false @@ -901,17 +833,17 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIPP1ASt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(ptr noundef nonnull align 8 dereferenceable(8) %__lhs, ptr noundef nonnull align 8 dereferenceable(8) %__rhs) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIPP1ASt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(ptr noundef nonnull align 1 dereferenceable(8) %__lhs, ptr noundef nonnull align 1 dereferenceable(8) %__rhs) #2 comdat { entry: %__lhs.addr = alloca ptr, align 8 %__rhs.addr = alloca ptr, align 8 store ptr %__lhs, ptr %__lhs.addr, align 8 store ptr %__rhs, ptr %__rhs.addr, align 8 %0 = load ptr, ptr %__lhs.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 1 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 1 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 @@ -921,23 +853,25 @@ entry: } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorIP1ASaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt6vectorIP1ASaIS1_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - call void @_ZN9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_start) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #0 comdat align 2 { +define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE11_M_allocateEm(ptr noundef nonnull align 1 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,43 +914,43 @@ 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 ret ptr %_M_current } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNSt6vectorIP1ASaIS1_EE11_S_max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 0 - %1 = load ptr, ptr %_M_start, align 8 + %_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 1 + %_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 1 %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 @@ -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,49 +994,47 @@ 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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: 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,55 +1066,24 @@ 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 1 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 + store ptr %1, ptr %_M_current, align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..ea63f3d6e 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,63 +245,47 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %vec = alloca %"class.std::vector", align 8 - %a = alloca %class.A, align 8 + %vec = alloca %"class.std::vector", align 1 + %a = alloca %class.A, align 1 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %it = alloca %"class.__gnu_cxx::__normal_iterator", align 1 + %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %vec, ptr noundef nonnull align 8 dereferenceable(8) %a) + call void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(24) %vec) #8 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(8) %a) #8 + invoke void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(24) %vec, ptr noundef nonnull align 1 dereferenceable(8) %a) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - call void @_ZN9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEC2IPS1_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISA_S9_EE7__valueES6_E6__typeEEE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 + %call = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 1 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 1 + call void @_ZN9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEC2IPS1_vEERKNS0_IT_S6_EE(ptr noundef nonnull align 1 dereferenceable(8) %it, ptr noundef nonnull align 1 dereferenceable(8) %ref.tmp) #8 + %call1 = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 1 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 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + invoke void %2(ptr noundef nonnull align 1 dereferenceable(8) %0, ptr noundef %1) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 + call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 1 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: +define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr noundef nonnull align 1 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 + %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", 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_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 + %_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 1 + %_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 1 %cmp = icmp ne ptr %0, %1 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl4, i32 0, i32 1 - %2 = load ptr, ptr %_M_finish5, align 8 + %_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 1 %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl3, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 - %4 = load ptr, ptr %_M_finish7, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_finish7, align 8 + 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 1 dereferenceable(8) %7, ptr noundef nonnull align 1 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 1 + %incdec.ptr = getelementptr inbounds nuw %class.A, ptr %9, i32 1 + store ptr %incdec.ptr, ptr %_M_finish7, align 1 br label %if.end if.else: ; preds = %entry - %call = call ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %5 = load ptr, ptr %__x.addr, align 8 - %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 - %6 = load ptr, ptr %coerce.dive8, align 8 - call void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %6, ptr noundef nonnull align 8 dereferenceable(8) %5) + %call = call ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 1 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 1 + %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 1 + call void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr %11, ptr noundef nonnull align 1 dereferenceable(8) %10) br label %if.end if.end: ; preds = %if.else, %if.then @@ -427,133 +394,130 @@ if.end: ; preds = %if.else, %if.then declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - call void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_start) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 dereferenceable(8) %0) #8 %1 = load ptr, ptr %call, align 8 - store ptr %1, ptr %_M_current, align 8 + store ptr %1, ptr %_M_current, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_current, align 8 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_current, align 1 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 1 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 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - invoke void @_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 + %_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 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 1 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 1 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_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %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 1 dereferenceable(24) %_M_impl) #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_EE12_Vector_implC2Ev(ptr noundef nonnull align 1 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 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_start, align 8 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_finish, align 8 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_end_of_storage, align 8 + 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 1 dereferenceable(24) %this1) #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 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 1 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 nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_start, align 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 1 + %_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 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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,38 +551,38 @@ 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 1 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 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl3, i32 0, i32 0 - %2 = load ptr, ptr %_M_start4, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - invoke void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) + invoke void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry - %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl5) #5 + %_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 1 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 } @@ -661,8 +610,11 @@ 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 { +define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 1 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 1 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,156 +685,142 @@ 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: - %__position = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 +define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 1 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 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__len = alloca i64, align 8 %__old_start = alloca ptr, align 8 %__old_finish = alloca ptr, align 8 %__elems_before = alloca i64, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %__new_start = alloca ptr, align 8 %__new_finish = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 + %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 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) + %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 1 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) store i64 %call, ptr %__len, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 + %_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 1 store ptr %0, ptr %__old_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 + %_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 1 store ptr %1, ptr %__old_finish, align 8 - %call3 = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %__position, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 + %call3 = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 1 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 1 + %call5 = call noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 1 dereferenceable(8) %__position, ptr noundef nonnull align 1 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) + %call6 = call noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 1 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 1 dereferenceable(8) %10, ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 1 + %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 - store ptr %add.ptr19, ptr %_M_end_of_storage21, align 8 + call void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - call void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_finish) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 1 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -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 1 dereferenceable(24) %this1) #8 + %call2 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 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 1 dereferenceable(24) %this1) #8 + %call4 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 dereferenceable(24) %this1) #8 br label %cond.end cond.false: ; preds = %lor.lhs.false @@ -953,17 +876,17 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %__lhs, ptr noundef nonnull align 8 dereferenceable(8) %__rhs) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 1 dereferenceable(8) %__lhs, ptr noundef nonnull align 1 dereferenceable(8) %__rhs) #2 comdat { entry: %__lhs.addr = alloca ptr, align 8 %__rhs.addr = alloca ptr, align 8 store ptr %__lhs, ptr %__lhs.addr, align 8 store ptr %__rhs, ptr %__rhs.addr, align 8 %0 = load ptr, ptr %__lhs.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 1 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 1 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 @@ -973,8 +896,10 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 1 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,43 +942,43 @@ 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 ret ptr %_M_current } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 0 - %1 = load ptr, ptr %_M_start, align 8 + %_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 1 + %_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 1 %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 @@ -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,49 +1022,47 @@ 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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: 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 1 dereferenceable(8) %6, ptr noundef nonnull align 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 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 1 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() + store ptr %1, ptr %_M_current, align 1 ret void } -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..cbd299fca 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/vector-4.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,66 +247,50 @@ 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 %argv.addr = alloca ptr, align 8 %ptr = alloca ptr, align 8 - %vec = alloca %"class.std::vector", align 8 - %a = alloca %class.A, align 8 + %vec = alloca %"class.std::vector", align 1 + %a = alloca %class.A, align 1 %ref.tmp = alloca ptr, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - %it = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %ref.tmp1 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %it = alloca %"class.__gnu_cxx::__normal_iterator", align 1 + %ref.tmp1 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %aptr = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt6vectorIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 + call void @_ZNSt6vectorIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 dereferenceable(24) %vec) #9 + call void @_ZN1AC2Ev(ptr noundef nonnull align 1 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) + invoke void @_ZNSt6vectorIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 1 dereferenceable(24) %vec, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp1, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - call void @_ZN9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEC2IPS3_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISC_SB_EE7__valueES8_E6__typeEEE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp1) #5 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 + %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 1 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 1 + call void @_ZN9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEC2IPS3_vEERKNS0_IT_S8_EE(ptr noundef nonnull align 1 dereferenceable(8) %it, ptr noundef nonnull align 1 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 1 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 %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 + %vtable = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + invoke void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont store i32 0, ptr %retval, align 4 - call void @_ZNSt6vectorIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 + call void @_ZNSt6vectorIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 1 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 1 dereferenceable(24) %vec) #9 br label %eh.resume eh.resume: ; preds = %lpad @@ -355,28 +312,28 @@ 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 1 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 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { +define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 1 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__x.addr = alloca ptr, align 8 @@ -384,140 +341,137 @@ 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 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) ret void } declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - call void @_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_start) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 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 1 dereferenceable(8) %this, ptr noundef nonnull align 1 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 1 dereferenceable(8) %0) #9 %1 = load ptr, ptr %call, align 8 - store ptr %1, ptr %_M_current, align 8 + store ptr %1, ptr %_M_current, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_current, align 8 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_current, align 1 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 1 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 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - invoke void @_ZSt8_DestroyIPPK1AS2_EvT_S4_RSaIT0_E(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 + %_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 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 1 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 1 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 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 1 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_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %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 1 dereferenceable(24) %_M_impl) #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_EE12_Vector_implC2Ev(ptr noundef nonnull align 1 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 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_start, align 8 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_finish, align 8 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_end_of_storage, align 8 + 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 1 dereferenceable(24) %this1) #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 #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 1 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 nuw %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 + store ptr null, ptr %_M_start, align 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 1 + %_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 1 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 { +define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 1 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 @@ -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 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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,38 +505,38 @@ 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 1 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 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl3, i32 0, i32 0 - %2 = load ptr, ptr %_M_start4, align 8 + %_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 1 + %_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 1 + %_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 1 %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - invoke void @_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) + invoke void @_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) to label %invoke.cont unwind label %terminate.lpad invoke.cont: ; preds = %entry - %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl5) #5 + %_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 1 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 } @@ -625,8 +564,11 @@ 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 { +define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m(ptr noundef nonnull align 1 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 1 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 - -; 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 -} +declare void @_ZdlPvm(ptr noundef, i64 noundef) #5 -; 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 @@ -713,209 +640,214 @@ 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: +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 1 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 + %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 + %_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 1 + %_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 1 %cmp = icmp ne ptr %0, %1 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl4, i32 0, i32 1 - %2 = load ptr, ptr %_M_finish5, align 8 + %_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 1 %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl3, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 - %4 = load ptr, ptr %_M_finish7, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_finish7, align 8 + 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 1 + %incdec.ptr = getelementptr inbounds nuw ptr, ptr %10, i32 1 + store ptr %incdec.ptr, ptr %_M_finish7, align 1 br label %if.end if.else: ; preds = %entry - %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %5 = load ptr, ptr %__args.addr, align 8 - %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 - %6 = load ptr, ptr %coerce.dive8, align 8 - call void @_ZNSt6vectorIPK1ASaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %6, ptr noundef nonnull align 8 dereferenceable(8) %5) + %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 1 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 1 + %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 1 + call void @_ZNSt6vectorIPK1ASaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 1 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 1 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: - %__position = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 +define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 1 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 1 %this.addr = alloca ptr, align 8 %__args.addr = alloca ptr, align 8 %__len = alloca i64, align 8 %__old_start = alloca ptr, align 8 %__old_finish = alloca ptr, align 8 %__elems_before = alloca i64, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %__new_start = alloca ptr, align 8 %__new_finish = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 + %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 1 store ptr %this, ptr %this.addr, align 8 store ptr %__args, ptr %__args.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) + %call = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE12_M_check_lenEmPKc(ptr noundef nonnull align 1 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) store i64 %call, ptr %__len, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 + %_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 1 store ptr %0, ptr %__old_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 + %_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 1 store ptr %1, ptr %__old_finish, align 8 - %call3 = call ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef i64 @_ZN9__gnu_cxxmiIPPK1ASt6vectorIS3_SaIS3_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSB_SE_(ptr noundef nonnull align 8 dereferenceable(8) %__position, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 + %call3 = call ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 1 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 1 + %call5 = call noundef i64 @_ZN9__gnu_cxxmiIPPK1ASt6vectorIS3_SaIS3_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSB_SE_(ptr noundef nonnull align 1 dereferenceable(8) %__position, ptr noundef nonnull align 1 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) + %call6 = call noundef ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE11_M_allocateEm(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 1 + %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 - store ptr %add.ptr19, ptr %_M_end_of_storage21, align 8 + call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m(ptr noundef nonnull align 1 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 1 + %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 1 + %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 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - call void @_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_finish) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 + %_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 1 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 1 ret ptr %0 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %ref.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 + %ref.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp2, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %call3 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEmiEl(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2, i64 noundef 1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 + %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 1 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 1 + %call3 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEmiEl(ptr noundef nonnull align 1 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 1 + %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 1 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 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE12_M_check_lenEmPKc(ptr noundef nonnull align 1 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 @@ -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 1 dereferenceable(24) %this1) #9 + %call2 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 1 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 1 dereferenceable(24) %this1) #9 + %call4 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 1 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 1 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 1 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 1 dereferenceable(24) %this1) #9 br label %cond.end cond.false: ; preds = %lor.lhs.false @@ -971,17 +903,17 @@ cond.end: ; preds = %cond.false, %cond.t } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIPPK1ASt6vectorIS3_SaIS3_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSB_SE_(ptr noundef nonnull align 8 dereferenceable(8) %__lhs, ptr noundef nonnull align 8 dereferenceable(8) %__rhs) #2 comdat { +define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIPPK1ASt6vectorIS3_SaIS3_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSB_SE_(ptr noundef nonnull align 1 dereferenceable(8) %__lhs, ptr noundef nonnull align 1 dereferenceable(8) %__rhs) #2 comdat { entry: %__lhs.addr = alloca ptr, align 8 %__rhs.addr = alloca ptr, align 8 store ptr %__lhs, ptr %__lhs.addr, align 8 store ptr %__rhs, ptr %__rhs.addr, align 8 %0 = load ptr, ptr %__lhs.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 + %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 1 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 1 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 @@ -991,8 +923,10 @@ 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 { +define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE11_M_allocateEm(ptr noundef nonnull align 1 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,43 +969,43 @@ 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 ret ptr %_M_current } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNSt6vectorIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 + %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 1 dereferenceable(24) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 0 - %1 = load ptr, ptr %_M_start, align 8 + %_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 1 + %_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 1 %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 @@ -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,49 +1049,47 @@ 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 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 1 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: 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,79 +1236,70 @@ 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 1 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 + store ptr %1, ptr %_M_current, align 1 ret void } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEmiEl(ptr noundef nonnull align 8 dereferenceable(8) %this, i64 noundef %__n) #2 comdat align 2 { +define linkonce_odr dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEmiEl(ptr noundef nonnull align 1 dereferenceable(8) %this, i64 noundef %__n) #2 comdat align 2 { entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 + %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 1 %this.addr = alloca ptr, align 8 %__n.addr = alloca i64, align 8 %ref.tmp = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 store i64 %__n, ptr %__n.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_current, align 8 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_current, align 1 %1 = load i64, ptr %__n.addr, align 8 %idx.neg = sub i64 0, %1 %add.ptr = getelementptr inbounds ptr, ptr %0, i64 %idx.neg store ptr %add.ptr, ptr %ref.tmp, align 8 - call void @_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %2 = load ptr, ptr %coerce.dive, align 8 + call void @_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_(ptr noundef nonnull align 1 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 1 ret ptr %2 } ; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { +define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 1 dereferenceable(8) %this) #2 comdat align 2 { entry: %this.addr = alloca ptr, align 8 store ptr %this, ptr %this.addr, align 8 %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_current, align 8 + %_M_current = getelementptr inbounds nuw %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 + %0 = load ptr, ptr %_M_current, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..674c4aa00 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -44,29 +44,29 @@ $_ZTV1K = comdat any define dso_local noundef i32 @main() #0 { entry: %k = alloca ptr, align 8 - %f = alloca %class.F, align 8 + %f = alloca %class.F, align 1 %a = alloca ptr, align 8 %q = alloca ptr, align 8 %p = alloca ptr, align 8 %r = alloca ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 + %call = 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 1 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 1 dereferenceable(8) %f) #6 store ptr %a, ptr %q, align 8 - %call1 = call noundef ptr @_ZN1F8getinputEv(ptr noundef nonnull align 8 dereferenceable(8) %f) + %call1 = call noundef ptr @_ZN1F8getinputEv(ptr noundef nonnull align 1 dereferenceable(8) %f) store ptr %call1, ptr %p, align 8 %0 = load ptr, ptr %k, align 8 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %1 = load ptr, ptr %vfn, align 8 - %call2 = call noundef ptr %1(ptr noundef nonnull align 8 dereferenceable(8) %0) + %call2 = call noundef ptr %1(ptr noundef nonnull align 1 dereferenceable(8) %0) %2 = load ptr, ptr %p, align 8 %3 = load ptr, ptr %q, align 8 store ptr %2, ptr %3, align 8 %4 = load ptr, ptr %q, align 8 - %call3 = call noundef ptr @_ZN1F3fooEPPc(ptr noundef nonnull align 8 dereferenceable(8) %f, ptr noundef %4) + %call3 = call noundef ptr @_ZN1F3fooEPPc(ptr noundef nonnull align 1 dereferenceable(8) %f, ptr noundef %4) store ptr %call3, ptr %r, align 8 %5 = load ptr, ptr %r, align 8 %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %5) @@ -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 -define linkonce_odr dso_local void @_ZN1FC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #3 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1FC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 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 -define linkonce_odr dso_local void @_ZN1KC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #3 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1KC2Ev(ptr noundef nonnull align 1 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 1 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 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..ef302f497 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-diamond-inheritance-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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 @@ -244,7 +244,7 @@ entry: %pb = alloca ptr, align 8 %pc = alloca ptr, align 8 %pd = alloca ptr, align 8 - %d = alloca %class.D, align 8 + %d = alloca %class.D, align 1 store i32 0, ptr %retval, align 4 store i32 %argc, ptr %argc.addr, align 4 store ptr %argv, ptr %argv.addr, align 8 @@ -256,12 +256,12 @@ 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 1 dereferenceable(16) %d) #4 %0 = icmp eq ptr %d, null br i1 %0, label %cast.end, label %cast.notnull cast.notnull: ; preds = %entry - %vtable = load ptr, ptr %d, align 8 + %vtable = load ptr, ptr %d, align 1 %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -40 %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 %add.ptr = getelementptr inbounds i8, ptr %d, i64 %vbase.offset @@ -272,29 +272,29 @@ cast.end: ; preds = %cast.notnull, %entr store ptr %cast.result, ptr %pa, align 8 %1 = load ptr, ptr %pa, align 8 %2 = load ptr, ptr %ptr_f1, align 8 - %vtable1 = load ptr, ptr %1, align 8 + %vtable1 = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable1, i64 0 %3 = load ptr, ptr %vfn, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + call void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) %4 = load ptr, ptr %pa, align 8 %5 = load ptr, ptr %ptr_f2, align 8 - %vtable2 = load ptr, ptr %4, align 8 + %vtable2 = load ptr, ptr %4, align 1 %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 1 %6 = load ptr, ptr %vfn3, align 8 - call void %6(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) + call void %6(ptr noundef nonnull align 1 dereferenceable(8) %4, ptr noundef %5) store ptr %d, ptr %pb, align 8 %7 = load ptr, ptr %pb, align 8 %8 = load ptr, ptr %ptr_g1, align 8 - %vtable4 = load ptr, ptr %7, align 8 + %vtable4 = load ptr, ptr %7, align 1 %vfn5 = getelementptr inbounds ptr, ptr %vtable4, i64 2 %9 = load ptr, ptr %vfn5, align 8 - call void %9(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %8) + call void %9(ptr noundef nonnull align 1 dereferenceable(8) %7, ptr noundef %8) %10 = load ptr, ptr %pb, align 8 %11 = load ptr, ptr %ptr_g2, align 8 - %vtable6 = load ptr, ptr %10, align 8 + %vtable6 = load ptr, ptr %10, align 1 %vfn7 = getelementptr inbounds ptr, ptr %vtable6, i64 3 %12 = load ptr, ptr %vfn7, align 8 - call void %12(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %11) + call void %12(ptr noundef nonnull align 1 dereferenceable(8) %10, ptr noundef %11) %13 = icmp eq ptr %d, null br i1 %13, label %cast.end10, label %cast.notnull8 @@ -307,61 +307,61 @@ cast.end10: ; preds = %cast.notnull8, %cas store ptr %cast.result11, ptr %pc, align 8 %14 = load ptr, ptr %pc, align 8 %15 = load ptr, ptr %ptr_h1, align 8 - %vtable12 = load ptr, ptr %14, align 8 + %vtable12 = load ptr, ptr %14, align 1 %vfn13 = getelementptr inbounds ptr, ptr %vtable12, i64 2 %16 = load ptr, ptr %vfn13, align 8 - call void %16(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef %15) + call void %16(ptr noundef nonnull align 1 dereferenceable(8) %14, ptr noundef %15) %17 = load ptr, ptr %pc, align 8 %18 = load ptr, ptr %ptr_h2, align 8 - %vtable14 = load ptr, ptr %17, align 8 + %vtable14 = load ptr, ptr %17, align 1 %vfn15 = getelementptr inbounds ptr, ptr %vtable14, i64 3 %19 = load ptr, ptr %vfn15, align 8 - call void %19(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef %18) + call void %19(ptr noundef nonnull align 1 dereferenceable(8) %17, ptr noundef %18) store ptr %d, ptr %pd, align 8 %20 = load ptr, ptr %pd, align 8 %21 = load ptr, ptr %ptr_l1, align 8 - %vtable16 = load ptr, ptr %20, align 8 + %vtable16 = load ptr, ptr %20, align 1 %vfn17 = getelementptr inbounds ptr, ptr %vtable16, i64 4 %22 = load ptr, ptr %vfn17, align 8 - call void %22(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef %21) + call void %22(ptr noundef nonnull align 1 dereferenceable(16) %20, ptr noundef %21) %23 = load ptr, ptr %pd, align 8 %24 = load ptr, ptr %ptr_l2, align 8 - %vtable18 = load ptr, ptr %23, align 8 + %vtable18 = load ptr, ptr %23, align 1 %vfn19 = getelementptr inbounds ptr, ptr %vtable18, i64 5 %25 = load ptr, ptr %vfn19, align 8 - call void %25(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef %24) + call void %25(ptr noundef nonnull align 1 dereferenceable(16) %23, ptr noundef %24) ret i32 0 } -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1DC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #4 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1DC1Ev(ptr noundef nonnull align 1 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 1 dereferenceable(8) %this1) #4 + call void @_ZN1BC2Ev(ptr noundef nonnull align 1 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 1 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 1 + store ptr getelementptr inbounds inrange(-40, 48) ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, i32 0, i32 5), ptr %this1, align 1 %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 1 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 1 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 1 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 1 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 @@ -370,19 +370,19 @@ entry: %this1 = load ptr, ptr %this.addr, align 8 %vtt2 = load ptr, ptr %vtt.addr, align 8 %0 = load ptr, ptr %vtt2, align 8 - store ptr %0, ptr %this1, align 8 + store ptr %0, ptr %this1, align 1 %1 = getelementptr inbounds ptr, ptr %vtt2, i64 1 %2 = load ptr, ptr %1, align 8 - %vtable = load ptr, ptr %this1, align 8 + %vtable = load ptr, ptr %this1, align 1 %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -40 %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 %add.ptr = getelementptr inbounds i8, ptr %this1, i64 %vbase.offset - store ptr %2, ptr %add.ptr, align 8 + store ptr %2, ptr %add.ptr, align 1 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 1 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 @@ -391,19 +391,19 @@ entry: %this1 = load ptr, ptr %this.addr, align 8 %vtt2 = load ptr, ptr %vtt.addr, align 8 %0 = load ptr, ptr %vtt2, align 8 - store ptr %0, ptr %this1, align 8 + store ptr %0, ptr %this1, align 1 %1 = getelementptr inbounds ptr, ptr %vtt2, i64 1 %2 = load ptr, ptr %1, align 8 - %vtable = load ptr, ptr %this1, align 8 + %vtable = load ptr, ptr %this1, align 1 %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -40 %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 %add.ptr = getelementptr inbounds i8, ptr %this1, i64 %vbase.offset - store ptr %2, ptr %add.ptr, align 8 + store ptr %2, ptr %add.ptr, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A2f1EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A2f1EPi(ptr noundef nonnull align 1 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 @@ -417,7 +417,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A2f2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A2f2EPi(ptr noundef nonnull align 1 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 @@ -431,7 +431,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B2g1EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B2g1EPi(ptr noundef nonnull align 1 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 @@ -445,7 +445,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B2g2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B2g2EPi(ptr noundef nonnull align 1 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 @@ -459,7 +459,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1C2h1EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1C2h1EPi(ptr noundef nonnull align 1 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 @@ -473,7 +473,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1C2h2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1C2h2EPi(ptr noundef nonnull align 1 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 @@ -487,7 +487,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1D2l1EPi(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1D2l1EPi(ptr noundef nonnull align 1 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %i.addr = alloca ptr, align 8 @@ -501,7 +501,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1D2l2EPi(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1D2l2EPi(ptr noundef nonnull align 1 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %i.addr = alloca ptr, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..11b04d048 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,13 +183,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 = 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 1 dereferenceable(8) %call) #6 %0 = icmp eq ptr %call, null br i1 %0, label %cast.end, label %cast.notnull cast.notnull: ; preds = %entry - %vtable = load ptr, ptr %call, align 8 + %vtable = load ptr, ptr %call, align 1 %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -32 %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 %add.ptr = getelementptr inbounds i8, ptr %call, i64 %vbase.offset @@ -200,40 +200,40 @@ cast.end: ; preds = %cast.notnull, %entr store ptr %cast.result, ptr %pb, align 8 %1 = load ptr, ptr %pb, align 8 %2 = load ptr, ptr %ptr, align 8 - %vtable1 = load ptr, ptr %1, align 8 + %vtable1 = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable1, i64 0 %3 = load ptr, ptr %vfn, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + call void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 1 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 1 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 1 + store ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4), ptr %this1, align 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..f77be7e7a 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,55 +191,55 @@ 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 1 dereferenceable(8) %call) #7 store ptr %call, ptr %pa, align 8 %0 = load ptr, ptr %pa, align 8 %1 = load ptr, ptr %i, align 8 - %vtable = load ptr, ptr %0, align 8 + %vtable = load ptr, ptr %0, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) + call void %2(ptr noundef nonnull align 1 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 1 dereferenceable(8) %call1) #7 store ptr %call1, ptr %pb, align 8 %3 = load ptr, ptr %pb, align 8 %4 = load ptr, ptr %j, align 8 - %vtable2 = load ptr, ptr %3, align 8 + %vtable2 = load ptr, ptr %3, align 1 %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 0 %5 = load ptr, ptr %vfn3, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) + call void %5(ptr noundef nonnull align 1 dereferenceable(8) %3, ptr noundef %4) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 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 1 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 1 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 1 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 1 + store ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 4), ptr %this1, align 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -256,7 +256,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -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 1 + %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 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} 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..49562c219 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/test/once_more/SVF/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc' +source_filename = "/root/test/once_more/SVF/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,13 +197,13 @@ 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 1 dereferenceable(8) %call) #7 %0 = icmp eq ptr %call, null br i1 %0, label %cast.end, label %cast.notnull cast.notnull: ; preds = %entry - %vtable = load ptr, ptr %call, align 8 + %vtable = load ptr, ptr %call, align 1 %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -40 %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 %add.ptr = getelementptr inbounds i8, ptr %call, i64 %vbase.offset @@ -214,46 +214,46 @@ cast.end: ; preds = %cast.notnull, %entr store ptr %cast.result, ptr %p, align 8 %1 = load ptr, ptr %p, align 8 %2 = load ptr, ptr %i, align 8 - %vtable1 = load ptr, ptr %1, align 8 + %vtable1 = load ptr, ptr %1, align 1 %vfn = getelementptr inbounds ptr, ptr %vtable1, i64 0 %3 = load ptr, ptr %vfn, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) + call void %3(ptr noundef nonnull align 1 dereferenceable(8) %1, ptr noundef %2) %4 = load ptr, ptr %p, align 8 %5 = load ptr, ptr %j, align 8 - %vtable2 = load ptr, ptr %4, align 8 + %vtable2 = load ptr, ptr %4, align 1 %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 1 %6 = load ptr, ptr %vfn3, align 8 - call void %6(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) + call void %6(ptr noundef nonnull align 1 dereferenceable(8) %4, ptr noundef %5) ret i32 0 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #4 -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 1 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 1 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 1 + store ptr getelementptr inbounds inrange(-40, 16) ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 5), ptr %this1, align 1 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 1 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 1 ret void } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 1 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 @@ -270,7 +270,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1B1gEPf(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %j.addr = alloca ptr, align 8 @@ -287,7 +287,7 @@ entry: } ; 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 { +define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 1 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 @@ -304,7 +304,7 @@ entry: } ; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { +define linkonce_odr dso_local void @_ZN1A1gEPf(ptr noundef nonnull align 1 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca ptr, align 8 %j.addr = alloca ptr, align 8 @@ -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 1 + %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 1 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 1 + %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 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/cond-swap.c.bc b/test_cases_bc/complex_tests/cond-swap.c.bc index 70cc2a1d8..e35c79cfe 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/cond-swap.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-array.c.bc b/test_cases_bc/complex_tests/swap-array.c.bc index 6c198b2de..8600be381 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-array.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-funcptr.c.bc b/test_cases_bc/complex_tests/swap-funcptr.c.bc index f59ceaa36..415bfb71a 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-funcptr.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-funcptr1.c.bc b/test_cases_bc/complex_tests/swap-funcptr1.c.bc index 699f3e4d5..64b07cb9e 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-funcptr1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-funcptr2.c.bc b/test_cases_bc/complex_tests/swap-funcptr2.c.bc index 33060114c..36cce0001 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-funcptr2.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-global.c.bc b/test_cases_bc/complex_tests/swap-global.c.bc index 0718c40a1..d187ef602 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-global.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-global1.c.bc b/test_cases_bc/complex_tests/swap-global1.c.bc index 6655fd9d1..c4d133ef5 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-global1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-global2.c.bc b/test_cases_bc/complex_tests/swap-global2.c.bc index 1ef0d240b..f79267aa5 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-global2.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-heap.c.bc b/test_cases_bc/complex_tests/swap-heap.c.bc index 95edf1492..a3efe6041 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-heap.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-heap1.c.bc b/test_cases_bc/complex_tests/swap-heap1.c.bc index 74bca53ee..f30bf7a6b 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-heap1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-heap2.c.bc b/test_cases_bc/complex_tests/swap-heap2.c.bc index 088341592..75e11ccd1 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-heap2.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-heap3.c.bc b/test_cases_bc/complex_tests/swap-heap3.c.bc index 38157dc96..d23706c72 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-heap3.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-heap4.c.bc b/test_cases_bc/complex_tests/swap-heap4.c.bc index 0ff321ad3..a2adddfd3 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-heap4.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-indirect.c.bc b/test_cases_bc/complex_tests/swap-indirect.c.bc index c3ac4b9be..fd1278863 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-indirect.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-indirect1.c.bc b/test_cases_bc/complex_tests/swap-indirect1.c.bc index 45c864421..b57ab0fe0 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-indirect1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-indirect2.c.bc b/test_cases_bc/complex_tests/swap-indirect2.c.bc index 863f9c7e5..0d1c03585 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-indirect2.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-recursion.c.bc b/test_cases_bc/complex_tests/swap-recursion.c.bc index 7b3a8000b..932905999 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-recursion.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-struct.c.bc b/test_cases_bc/complex_tests/swap-struct.c.bc index f970c3063..a5a275b84 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-struct.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @@ -29,30 +29,30 @@ entry: ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { entry: - %PSt = alloca %struct.ptrstruct, align 8 + %PSt = alloca %struct.ptrstruct, align 1 %pa = alloca ptr, align 8 %pb = alloca ptr, align 8 %b = alloca [20 x i8], align 16 %a = alloca [20 x i8], align 16 %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %p1 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - store ptr %arraydecay, ptr %p1, align 8 + %p1 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 0 + store ptr %arraydecay, ptr %p1, align 1 %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - store ptr %arraydecay1, ptr %p2, align 8 - %p12 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - %p23 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 + %p2 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 1 + store ptr %arraydecay1, ptr %p2, align 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 - %0 = load ptr, ptr %p24, align 8 + %p24 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 1 + %0 = load ptr, ptr %p24, align 1 store ptr %0, ptr %pa, align 8 - %p15 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - %1 = load ptr, ptr %p15, align 8 + %p15 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 0 + %1 = load ptr, ptr %p15, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-struct1.c.bc b/test_cases_bc/complex_tests/swap-struct1.c.bc index 68eb7be18..49d5e57ee 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-struct1.c.bc' +source_filename = "/root/test/once_more/SVF/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,47 +12,47 @@ 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 - %1 = load ptr, ptr %p1, align 8 + %p1 = getelementptr inbounds nuw %struct.ptrstruct, ptr %0, i32 0, i32 0 + %1 = load ptr, ptr %p1, align 1 store ptr %1, ptr %c, align 8 %2 = load ptr, ptr %P.addr, align 8 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %p2, align 8 + %p2 = getelementptr inbounds nuw %struct.ptrstruct, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %p2, align 1 %4 = load ptr, ptr %P.addr, align 8 - %p11 = getelementptr inbounds %struct.ptrstruct, ptr %4, i32 0, i32 0 - store ptr %3, ptr %p11, align 8 + %p11 = getelementptr inbounds nuw %struct.ptrstruct, ptr %4, i32 0, i32 0 + store ptr %3, ptr %p11, align 1 %5 = load ptr, ptr %c, align 8 %6 = load ptr, ptr %P.addr, align 8 - %p22 = getelementptr inbounds %struct.ptrstruct, ptr %6, i32 0, i32 1 - store ptr %5, ptr %p22, align 8 + %p22 = getelementptr inbounds nuw %struct.ptrstruct, ptr %6, i32 0, i32 1 + store ptr %5, ptr %p22, align 1 ret void } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { entry: - %PSt = alloca %struct.ptrstruct, align 8 + %PSt = alloca %struct.ptrstruct, align 1 %pa = alloca ptr, align 8 %pb = alloca ptr, align 8 %b = alloca [20 x i8], align 16 %a = alloca [20 x i8], align 16 %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %p1 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - store ptr %arraydecay, ptr %p1, align 8 + %p1 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 0 + store ptr %arraydecay, ptr %p1, align 1 %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - store ptr %arraydecay1, ptr %p2, align 8 + %p2 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 1 + store ptr %arraydecay1, ptr %p2, align 1 call void @swap(ptr noundef %PSt) - %p22 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - %0 = load ptr, ptr %p22, align 8 + %p22 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 1 + %0 = load ptr, ptr %p22, align 1 store ptr %0, ptr %pa, align 8 - %p13 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - %1 = load ptr, ptr %p13, align 8 + %p13 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 0 + %1 = load ptr, ptr %p13, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap-structindirect.c.bc b/test_cases_bc/complex_tests/swap-structindirect.c.bc index e4c4bc0d3..a819fe11f 100644 --- a/test_cases_bc/complex_tests/swap-structindirect.c.bc +++ b/test_cases_bc/complex_tests/swap-structindirect.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap-structindirect.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.ptrstruct = type <{ i32, ptr, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @swap(ptr noundef %pstruct) #0 { @@ -16,26 +16,26 @@ 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 - %3 = load ptr, ptr %p1, align 8 + %p1 = getelementptr inbounds nuw %struct.ptrstruct, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %p1, align 1 store ptr %3, ptr %c, align 8 %4 = load ptr, ptr %P, align 8 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %p2, align 8 + %p2 = getelementptr inbounds nuw %struct.ptrstruct, ptr %4, i32 0, i32 2 + %5 = load ptr, ptr %p2, align 1 %6 = load ptr, ptr %P, align 8 - %p11 = getelementptr inbounds %struct.ptrstruct, ptr %6, i32 0, i32 1 - store ptr %5, ptr %p11, align 8 + %p11 = getelementptr inbounds nuw %struct.ptrstruct, ptr %6, i32 0, i32 1 + store ptr %5, ptr %p11, align 1 %7 = load ptr, ptr %c, align 8 %8 = load ptr, ptr %P, align 8 - %p22 = getelementptr inbounds %struct.ptrstruct, ptr %8, i32 0, i32 2 - store ptr %7, ptr %p22, align 8 + %p22 = getelementptr inbounds nuw %struct.ptrstruct, ptr %8, i32 0, i32 2 + store ptr %7, ptr %p22, align 1 ret void } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { entry: - %PSt = alloca %struct.ptrstruct, align 8 + %PSt = alloca %struct.ptrstruct, align 1 %pstruct = alloca ptr, align 8 %pa = alloca ptr, align 8 %pb = alloca ptr, align 8 @@ -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 - store ptr %arraydecay, ptr %p1, align 8 + %p1 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 1 + store ptr %arraydecay, ptr %p1, align 1 %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 2 - store ptr %arraydecay1, ptr %p2, align 8 + %p2 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 2 + store ptr %arraydecay1, ptr %p2, align 1 call void @swap(ptr noundef %pstruct) - %p22 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 2 - %0 = load ptr, ptr %p22, align 8 + %p22 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 2 + %0 = load ptr, ptr %p22, align 1 store ptr %0, ptr %pa, align 8 - %p13 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - %1 = load ptr, ptr %p13, align 8 + %p13 = getelementptr inbounds nuw %struct.ptrstruct, ptr %PSt, i32 0, i32 1 + %1 = load ptr, ptr %p13, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap.c.bc b/test_cases_bc/complex_tests/swap.c.bc index 497c8e9ef..65c14b63a 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap1.c.bc b/test_cases_bc/complex_tests/swap1.c.bc index 48495f68c..a855e7e1f 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap4-context.c.bc b/test_cases_bc/complex_tests/swap4-context.c.bc index 1a63f7228..24a114d42 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap4-context.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap4-context1.c.bc b/test_cases_bc/complex_tests/swap4-context1.c.bc index f5b40a2c9..8aa2f2d86 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap4-context1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap4-contextindirect.c.bc b/test_cases_bc/complex_tests/swap4-contextindirect.c.bc index 585d9385b..4ec255224 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap4-contextindirect.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/swap4.c.bc b/test_cases_bc/complex_tests/swap4.c.bc index 0511f813c..68989501d 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/swap4.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-clone.c.bc b/test_cases_bc/complex_tests/test-clone.c.bc index 5e4199bef..16b644d20 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-clone.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-clone1.c.bc b/test_cases_bc/complex_tests/test-clone1.c.bc index abde6619a..af7ad3cd0 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-clone1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-cond.c.bc b/test_cases_bc/complex_tests/test-cond.c.bc index 6cd0ebf90..2755ed33b 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-cond.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-globalstruct.c.bc b/test_cases_bc/complex_tests/test-globalstruct.c.bc index 7933d3854..bedb34c61 100644 --- a/test_cases_bc/complex_tests/test-globalstruct.c.bc +++ b/test_cases_bc/complex_tests/test-globalstruct.c.bc @@ -1,26 +1,26 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-globalstruct.c.bc' +source_filename = "/root/test/once_more/SVF/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 } @g1 = dso_local global i32 0, align 4 @g2 = dso_local global i32 0, align 4 -@obj = dso_local constant %struct.anon { ptr @g1, ptr @g2 }, align 8 +@obj = dso_local constant %struct.anon { ptr @g1, ptr @g2 }, align 1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @f() #0 { entry: %p = alloca ptr, align 8 - %0 = load ptr, ptr @obj, align 8 + %0 = load ptr, ptr @obj, align 1 store ptr %0, ptr %p, align 8 %1 = load ptr, ptr %p, align 8 %2 = load i32, ptr %1, align 4 ret i32 %2 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-indirect.c.bc b/test_cases_bc/complex_tests/test-indirect.c.bc index 1eaf32577..ab03f1ae9 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-indirect.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-indirect1.c.bc b/test_cases_bc/complex_tests/test-indirect1.c.bc index 1bce20839..8f6c8f6d7 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-indirect1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-linklist.c.bc b/test_cases_bc/complex_tests/test-linklist.c.bc index a10a86ee0..8963cd977 100644 --- a/test_cases_bc/complex_tests/test-linklist.c.bc +++ b/test_cases_bc/complex_tests/test-linklist.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-linklist.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.list = type <{ i32, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @destroy(ptr noundef %head) #0 { @@ -17,15 +17,15 @@ 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 - %2 = load i32, ptr %flag, align 8 + %flag = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 0 + %2 = load i32, ptr %flag, align 1 %cmp = icmp ne i32 %2, -1 br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond %3 = load ptr, ptr %cur, align 8 - %next = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 1 - %4 = load ptr, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %3, i32 0, i32 1 + %4 = load ptr, ptr %next, align 1 store ptr %4, ptr %cur, align 8 %5 = load ptr, ptr %cur, align 8 call void @free(ptr noundef %5) @@ -46,14 +46,14 @@ entry: %cur = alloca ptr, align 8 store i32 %idx, ptr %idx.addr, align 4 store i32 0, ptr %i, align 4 - %call = call ptr @malloc(i32 noundef 16) + %call = call ptr @malloc(i32 noundef 12) store ptr %call, ptr %head, align 8 %0 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 1 - store ptr null, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %0, i32 0, i32 1 + store ptr null, ptr %next, align 1 %1 = load ptr, ptr %head, align 8 - %flag = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - store i32 -1, ptr %flag, align 8 + %flag = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 0 + store i32 -1, ptr %flag, align 1 store i32 0, ptr %i, align 4 br label %for.cond @@ -64,16 +64,16 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call1 = call ptr @malloc(i32 noundef 16) + %call1 = call ptr @malloc(i32 noundef 12) store ptr %call1, ptr %cur, align 8 %4 = load i32, ptr %idx.addr, align 4 %5 = load ptr, ptr %cur, align 8 - %flag2 = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 0 - store i32 %4, ptr %flag2, align 8 + %flag2 = getelementptr inbounds nuw %struct.list, ptr %5, i32 0, i32 0 + store i32 %4, ptr %flag2, align 1 %6 = load ptr, ptr %head, align 8 %7 = load ptr, ptr %cur, align 8 - %next3 = getelementptr inbounds %struct.list, ptr %7, i32 0, i32 1 - store ptr %6, ptr %next3, align 8 + %next3 = getelementptr inbounds nuw %struct.list, ptr %7, i32 0, i32 1 + store ptr %6, ptr %next3, align 1 %8 = load ptr, ptr %cur, align 8 store ptr %8, ptr %head, align 8 br label %for.inc @@ -106,8 +106,8 @@ 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 - %2 = load ptr, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 1 + %2 = load ptr, ptr %next, align 1 store ptr %2, ptr %t, align 8 %tobool = icmp ne ptr %2, null br i1 %tobool, label %while.body, label %while.end @@ -120,8 +120,8 @@ 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 - store ptr %4, ptr %next1, align 8 + %next1 = getelementptr inbounds nuw %struct.list, ptr %5, i32 0, i32 1 + store ptr %4, ptr %next1, align 1 %6 = load ptr, ptr %l.addr, align 8 ret ptr %6 } @@ -136,8 +136,8 @@ 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 - %1 = load i32, ptr %flag, align 8 + %flag = getelementptr inbounds nuw %struct.list, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %flag, align 1 %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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..866995972 100644 --- a/test_cases_bc/complex_tests/test-linklist1.c.bc +++ b/test_cases_bc/complex_tests/test-linklist1.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-linklist1.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.list = type <{ i32, ptr, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @construct(i32 noundef %idx) #0 { @@ -14,17 +14,17 @@ entry: %cur = alloca ptr, align 8 store i32 %idx, ptr %idx.addr, align 4 store i32 0, ptr %i, align 4 - %call = call ptr @malloc(i32 noundef 24) + %call = call ptr @malloc(i32 noundef 20) store ptr %call, ptr %head, align 8 %0 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 1 - store ptr null, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %0, i32 0, i32 1 + store ptr null, ptr %next, align 1 %1 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 2 - store ptr null, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 2 + store ptr null, ptr %prev, align 1 %2 = load ptr, ptr %head, align 8 - %flag = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 0 - store i32 -1, ptr %flag, align 8 + %flag = getelementptr inbounds nuw %struct.list, ptr %2, i32 0, i32 0 + store i32 -1, ptr %flag, align 1 store i32 0, ptr %i, align 4 br label %for.cond @@ -35,23 +35,23 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %call1 = call ptr @malloc(i32 noundef 24) + %call1 = call ptr @malloc(i32 noundef 20) store ptr %call1, ptr %cur, align 8 %5 = load i32, ptr %idx.addr, align 4 %6 = load ptr, ptr %cur, align 8 - %flag2 = getelementptr inbounds %struct.list, ptr %6, i32 0, i32 0 - store i32 %5, ptr %flag2, align 8 + %flag2 = getelementptr inbounds nuw %struct.list, ptr %6, i32 0, i32 0 + store i32 %5, ptr %flag2, align 1 %7 = load ptr, ptr %head, align 8 %8 = load ptr, ptr %cur, align 8 - %next3 = getelementptr inbounds %struct.list, ptr %8, i32 0, i32 1 - store ptr %7, ptr %next3, align 8 + %next3 = getelementptr inbounds nuw %struct.list, ptr %8, i32 0, i32 1 + store ptr %7, ptr %next3, align 1 %9 = load ptr, ptr %cur, align 8 - %prev4 = getelementptr inbounds %struct.list, ptr %9, i32 0, i32 2 - store ptr null, ptr %prev4, align 8 + %prev4 = getelementptr inbounds nuw %struct.list, ptr %9, i32 0, i32 2 + store ptr null, ptr %prev4, align 1 %10 = load ptr, ptr %cur, align 8 %11 = load ptr, ptr %head, align 8 - %prev5 = getelementptr inbounds %struct.list, ptr %11, i32 0, i32 2 - store ptr %10, ptr %prev5, align 8 + %prev5 = getelementptr inbounds nuw %struct.list, ptr %11, i32 0, i32 2 + store ptr %10, ptr %prev5, align 1 %12 = load ptr, ptr %cur, align 8 store ptr %12, ptr %head, align 8 br label %for.inc @@ -81,22 +81,22 @@ 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 - %2 = load i32, ptr %flag, align 8 + %flag = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 0 + %2 = load i32, ptr %flag, align 1 %cmp = icmp ne i32 %2, 0 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %3 = load ptr, ptr %cur, align 8 - %flag1 = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 0 - %4 = load i32, ptr %flag1, align 8 + %flag1 = getelementptr inbounds nuw %struct.list, ptr %3, i32 0, i32 0 + %4 = load i32, ptr %flag1, align 1 %cmp2 = icmp sgt i32 %4, 3 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %for.body %5 = load ptr, ptr %cur, align 8 - %prev = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 2 - %6 = load ptr, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %5, i32 0, i32 2 + %6 = load ptr, ptr %prev, align 1 store ptr %6, ptr %cur, align 8 br label %if.end @@ -105,8 +105,8 @@ 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 - %8 = load ptr, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %7, i32 0, i32 1 + %8 = load ptr, ptr %next, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..e4b9a5761 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-path.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-recursive.c.bc b/test_cases_bc/complex_tests/test-recursive.c.bc index b14af1922..38ff587ad 100644 --- a/test_cases_bc/complex_tests/test-recursive.c.bc +++ b/test_cases_bc/complex_tests/test-recursive.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-recursive.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.list = type <{ i32, ptr, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @construct(ptr noundef %head, i32 noundef %i) #0 { @@ -19,22 +19,22 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %call = call ptr @malloc(i32 noundef 24) + %call = call ptr @malloc(i32 noundef 20) store ptr %call, ptr %tmp, align 8 %1 = load ptr, ptr %tmp, align 8 - %field = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - store i32 0, ptr %field, align 8 + %field = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 0 + store i32 0, ptr %field, align 1 %2 = load ptr, ptr %head.addr, align 8 %3 = load ptr, ptr %tmp, align 8 - %next = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 1 - store ptr %2, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %3, i32 0, i32 1 + store ptr %2, ptr %next, align 1 %4 = load ptr, ptr %tmp, align 8 %5 = load ptr, ptr %head.addr, align 8 - %prev = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 2 - store ptr %4, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %5, i32 0, i32 2 + store ptr %4, ptr %prev, align 1 %6 = load ptr, ptr %tmp, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %6, i32 0, i32 2 - store ptr null, ptr %prev1, align 8 + %prev1 = getelementptr inbounds nuw %struct.list, ptr %6, i32 0, i32 2 + store ptr null, ptr %prev1, align 1 %7 = load ptr, ptr %tmp, align 8 %8 = load i32, ptr %i.addr, align 4 %dec = add i32 %8, -1 @@ -59,25 +59,25 @@ declare ptr @malloc(i32 noundef) #1 define dso_local i32 @main() #0 { entry: %head = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 24) + %call = call ptr @malloc(i32 noundef 20) store ptr %call, ptr %head, align 8 %0 = load ptr, ptr %head, align 8 - %field = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 0 - store i32 0, ptr %field, align 8 + %field = getelementptr inbounds nuw %struct.list, ptr %0, i32 0, i32 0 + store i32 0, ptr %field, align 1 %1 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 1 - store ptr null, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 1 + store ptr null, ptr %next, align 1 %2 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 2 - store ptr null, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %2, i32 0, i32 2 + store ptr null, ptr %prev, align 1 %3 = load ptr, ptr %head, align 8 %call1 = call ptr @construct(ptr noundef %3, i32 noundef 10) store ptr %call1, ptr %head, align 8 ret i32 0 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-recursive0.c.bc b/test_cases_bc/complex_tests/test-recursive0.c.bc index 10d34b866..5eaba9aa1 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-recursive0.c.bc' +source_filename = "/root/test/once_more/SVF/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,8 +22,8 @@ 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 - store ptr %1, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %2, i32 0, i32 0 + store ptr %1, ptr %prev, align 1 %3 = load ptr, ptr %tmp, align 8 %call1 = call ptr @construct(ptr noundef %3) store ptr %call1, ptr %retval, align 8 @@ -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 - store ptr null, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %0, i32 0, i32 0 + store ptr null, ptr %prev, align 1 %1 = load ptr, ptr %head, align 8 %call1 = call ptr @construct(ptr noundef %1) store ptr %call1, ptr %head, align 8 %2 = load ptr, ptr %head, align 8 - %prev2 = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %prev2, align 8 + %prev2 = getelementptr inbounds nuw %struct.list, ptr %2, i32 0, i32 0 + %3 = load ptr, ptr %prev2, align 1 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-recursive1.c.bc b/test_cases_bc/complex_tests/test-recursive1.c.bc index 1b64723b3..8749af5f5 100644 --- a/test_cases_bc/complex_tests/test-recursive1.c.bc +++ b/test_cases_bc/complex_tests/test-recursive1.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-recursive1.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.list = type <{ i32, ptr, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @construct(ptr noundef %head, i32 noundef %i) #0 { @@ -19,22 +19,22 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %call = call ptr @malloc(i32 noundef 24) + %call = call ptr @malloc(i32 noundef 20) store ptr %call, ptr %tmp, align 8 %1 = load ptr, ptr %tmp, align 8 - %field = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - store i32 0, ptr %field, align 8 + %field = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 0 + store i32 0, ptr %field, align 1 %2 = load ptr, ptr %head.addr, align 8 %3 = load ptr, ptr %tmp, align 8 - %next = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 1 - store ptr %2, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %3, i32 0, i32 1 + store ptr %2, ptr %next, align 1 %4 = load ptr, ptr %tmp, align 8 %5 = load ptr, ptr %head.addr, align 8 - %prev = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 2 - store ptr %4, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %5, i32 0, i32 2 + store ptr %4, ptr %prev, align 1 %6 = load ptr, ptr %tmp, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %6, i32 0, i32 2 - store ptr null, ptr %prev1, align 8 + %prev1 = getelementptr inbounds nuw %struct.list, ptr %6, i32 0, i32 2 + store ptr null, ptr %prev1, align 1 %7 = load ptr, ptr %tmp, align 8 %8 = load i32, ptr %i.addr, align 4 %dec = add i32 %8, -1 @@ -68,15 +68,15 @@ 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 - %2 = load ptr, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 2 + %2 = load ptr, ptr %prev, align 1 %cmp = icmp ne ptr %2, null br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond %3 = load ptr, ptr %head, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 2 - %4 = load ptr, ptr %prev1, align 8 + %prev1 = getelementptr inbounds nuw %struct.list, ptr %3, i32 0, i32 2 + %4 = load ptr, ptr %prev1, align 1 store ptr %4, ptr %head, align 8 br label %while.cond, !llvm.loop !6 @@ -85,8 +85,8 @@ 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 - %6 = load ptr, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %5, i32 0, i32 1 + %6 = load ptr, ptr %next, align 1 %tobool = icmp ne ptr %6, null br i1 %tobool, label %while.body3, label %while.end10 @@ -94,27 +94,27 @@ while.body3: ; preds = %while.cond2 %7 = load ptr, ptr %head, align 8 store ptr %7, ptr %curr, align 8 %8 = load ptr, ptr %curr, align 8 - %field = getelementptr inbounds %struct.list, ptr %8, i32 0, i32 0 - %9 = load i32, ptr %field, align 8 + %field = getelementptr inbounds nuw %struct.list, ptr %8, i32 0, i32 0 + %9 = load i32, ptr %field, align 1 %inc = add i32 %9, 1 - store i32 %inc, ptr %field, align 8 + store i32 %inc, ptr %field, align 1 %10 = load ptr, ptr %curr, align 8 - %field4 = getelementptr inbounds %struct.list, ptr %10, i32 0, i32 0 - %11 = load i32, ptr %field4, align 8 + %field4 = getelementptr inbounds nuw %struct.list, ptr %10, i32 0, i32 0 + %11 = load i32, ptr %field4, align 1 %cmp5 = icmp ugt i32 %11, 5 br i1 %cmp5, label %if.then, label %if.else if.then: ; preds = %while.body3 %12 = load ptr, ptr %head, align 8 - %next6 = getelementptr inbounds %struct.list, ptr %12, i32 0, i32 1 - %13 = load ptr, ptr %next6, align 8 + %next6 = getelementptr inbounds nuw %struct.list, ptr %12, i32 0, i32 1 + %13 = load ptr, ptr %next6, align 1 store ptr %13, ptr %head, align 8 br label %if.end if.else: ; preds = %while.body3 %14 = load ptr, ptr %head, align 8 - %prev7 = getelementptr inbounds %struct.list, ptr %14, i32 0, i32 2 - %15 = load ptr, ptr %prev7, align 8 + %prev7 = getelementptr inbounds nuw %struct.list, ptr %14, i32 0, i32 2 + %15 = load ptr, ptr %prev7, align 1 store ptr %15, ptr %head, align 8 br label %if.end @@ -122,12 +122,12 @@ if.end: ; preds = %if.else, %if.then %16 = load ptr, ptr %head, align 8 %call = call ptr @walklist(ptr noundef %16) %17 = load ptr, ptr %head, align 8 - %prev8 = getelementptr inbounds %struct.list, ptr %17, i32 0, i32 2 - store ptr %call, ptr %prev8, align 8 + %prev8 = getelementptr inbounds nuw %struct.list, ptr %17, i32 0, i32 2 + store ptr %call, ptr %prev8, align 1 %18 = load ptr, ptr %curr, align 8 %19 = load ptr, ptr %head, align 8 - %next9 = getelementptr inbounds %struct.list, ptr %19, i32 0, i32 1 - store ptr %18, ptr %next9, align 8 + %next9 = getelementptr inbounds nuw %struct.list, ptr %19, i32 0, i32 1 + store ptr %18, ptr %next9, align 1 br label %while.cond2, !llvm.loop !8 while.end10: ; preds = %while.cond2 @@ -139,17 +139,17 @@ while.end10: ; preds = %while.cond2 define dso_local i32 @main() #0 { entry: %head = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 24) + %call = call ptr @malloc(i32 noundef 20) store ptr %call, ptr %head, align 8 %0 = load ptr, ptr %head, align 8 - %field = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 0 - store i32 0, ptr %field, align 8 + %field = getelementptr inbounds nuw %struct.list, ptr %0, i32 0, i32 0 + store i32 0, ptr %field, align 1 %1 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 1 - store ptr null, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 1 + store ptr null, ptr %next, align 1 %2 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 2 - store ptr null, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %2, i32 0, i32 2 + store ptr null, ptr %prev, align 1 %3 = load ptr, ptr %head, align 8 %call1 = call ptr @construct(ptr noundef %3, i32 noundef 10) store ptr %call1, ptr %head, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..c773616bb 100644 --- a/test_cases_bc/complex_tests/test-recursive2.c.bc +++ b/test_cases_bc/complex_tests/test-recursive2.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-recursive2.c.bc' +source_filename = "/root/test/once_more/SVF/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 } +%struct.list = type <{ i32, ptr, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @construct(ptr noundef %head, i32 noundef %i) #0 { @@ -19,22 +19,22 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %call = call ptr @malloc(i32 noundef 24) + %call = call ptr @malloc(i32 noundef 20) store ptr %call, ptr %tmp, align 8 %1 = load ptr, ptr %tmp, align 8 - %field = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - store i32 0, ptr %field, align 8 + %field = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 0 + store i32 0, ptr %field, align 1 %2 = load ptr, ptr %head.addr, align 8 %3 = load ptr, ptr %tmp, align 8 - %next = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 1 - store ptr %2, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %3, i32 0, i32 1 + store ptr %2, ptr %next, align 1 %4 = load ptr, ptr %tmp, align 8 %5 = load ptr, ptr %head.addr, align 8 - %prev = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 2 - store ptr %4, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %5, i32 0, i32 2 + store ptr %4, ptr %prev, align 1 %6 = load ptr, ptr %tmp, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %6, i32 0, i32 2 - store ptr null, ptr %prev1, align 8 + %prev1 = getelementptr inbounds nuw %struct.list, ptr %6, i32 0, i32 2 + store ptr null, ptr %prev1, align 1 %7 = load ptr, ptr %tmp, align 8 %8 = load i32, ptr %i.addr, align 4 %dec = add i32 %8, -1 @@ -76,8 +76,8 @@ 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 - store ptr %3, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %4, i32 0, i32 1 + store ptr %3, ptr %next, align 1 br label %if.end if.end: ; preds = %if.then, %entry @@ -98,15 +98,15 @@ 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 - %2 = load ptr, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 2 + %2 = load ptr, ptr %prev, align 1 %cmp = icmp ne ptr %2, null br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond %3 = load ptr, ptr %head, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 2 - %4 = load ptr, ptr %prev1, align 8 + %prev1 = getelementptr inbounds nuw %struct.list, ptr %3, i32 0, i32 2 + %4 = load ptr, ptr %prev1, align 1 store ptr %4, ptr %head, align 8 br label %while.cond, !llvm.loop !6 @@ -115,8 +115,8 @@ 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 - %6 = load ptr, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %5, i32 0, i32 1 + %6 = load ptr, ptr %next, align 1 %tobool = icmp ne ptr %6, null br i1 %tobool, label %while.body3, label %while.end10 @@ -124,27 +124,27 @@ while.body3: ; preds = %while.cond2 %7 = load ptr, ptr %head, align 8 store ptr %7, ptr %curr, align 8 %8 = load ptr, ptr %curr, align 8 - %field = getelementptr inbounds %struct.list, ptr %8, i32 0, i32 0 - %9 = load i32, ptr %field, align 8 + %field = getelementptr inbounds nuw %struct.list, ptr %8, i32 0, i32 0 + %9 = load i32, ptr %field, align 1 %inc = add i32 %9, 1 - store i32 %inc, ptr %field, align 8 + store i32 %inc, ptr %field, align 1 %10 = load ptr, ptr %curr, align 8 - %field4 = getelementptr inbounds %struct.list, ptr %10, i32 0, i32 0 - %11 = load i32, ptr %field4, align 8 + %field4 = getelementptr inbounds nuw %struct.list, ptr %10, i32 0, i32 0 + %11 = load i32, ptr %field4, align 1 %cmp5 = icmp ugt i32 %11, 5 br i1 %cmp5, label %if.then, label %if.else if.then: ; preds = %while.body3 %12 = load ptr, ptr %head, align 8 - %next6 = getelementptr inbounds %struct.list, ptr %12, i32 0, i32 1 - %13 = load ptr, ptr %next6, align 8 + %next6 = getelementptr inbounds nuw %struct.list, ptr %12, i32 0, i32 1 + %13 = load ptr, ptr %next6, align 1 store ptr %13, ptr %head, align 8 br label %if.end if.else: ; preds = %while.body3 %14 = load ptr, ptr %head, align 8 - %prev7 = getelementptr inbounds %struct.list, ptr %14, i32 0, i32 2 - %15 = load ptr, ptr %prev7, align 8 + %prev7 = getelementptr inbounds nuw %struct.list, ptr %14, i32 0, i32 2 + %15 = load ptr, ptr %prev7, align 1 store ptr %15, ptr %head, align 8 br label %if.end @@ -152,12 +152,12 @@ if.end: ; preds = %if.else, %if.then %16 = load ptr, ptr %head, align 8 %call = call ptr @walklist(ptr noundef %16) %17 = load ptr, ptr %head, align 8 - %prev8 = getelementptr inbounds %struct.list, ptr %17, i32 0, i32 2 - store ptr %call, ptr %prev8, align 8 + %prev8 = getelementptr inbounds nuw %struct.list, ptr %17, i32 0, i32 2 + store ptr %call, ptr %prev8, align 1 %18 = load ptr, ptr %curr, align 8 %19 = load ptr, ptr %head, align 8 - %next9 = getelementptr inbounds %struct.list, ptr %19, i32 0, i32 1 - store ptr %18, ptr %next9, align 8 + %next9 = getelementptr inbounds nuw %struct.list, ptr %19, i32 0, i32 1 + store ptr %18, ptr %next9, align 1 br label %while.cond2, !llvm.loop !8 while.end10: ; preds = %while.cond2 @@ -169,17 +169,17 @@ while.end10: ; preds = %while.cond2 define dso_local i32 @main() #0 { entry: %head = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 24) + %call = call ptr @malloc(i32 noundef 20) store ptr %call, ptr %head, align 8 %0 = load ptr, ptr %head, align 8 - %field = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 0 - store i32 0, ptr %field, align 8 + %field = getelementptr inbounds nuw %struct.list, ptr %0, i32 0, i32 0 + store i32 0, ptr %field, align 1 %1 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 1 - store ptr null, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.list, ptr %1, i32 0, i32 1 + store ptr null, ptr %next, align 1 %2 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 2 - store ptr null, ptr %prev, align 8 + %prev = getelementptr inbounds nuw %struct.list, ptr %2, i32 0, i32 2 + store ptr null, ptr %prev, align 1 %3 = load ptr, ptr %head, align 8 %call1 = call ptr @construct(ptr noundef %3, i32 noundef 10) store ptr %call1, ptr %head, align 8 @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !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..283ed2c47 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc b/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc index e692f4b7d..93e653ec2 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc b/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc index 3cd25a680..e267ef2ad 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test.c.bc b/test_cases_bc/complex_tests/test.c.bc index e266aa1f0..9e82283e3 100644 --- a/test_cases_bc/complex_tests/test.c.bc +++ b/test_cases_bc/complex_tests/test.c.bc @@ -1,9 +1,9 @@ -; 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test.c.bc' +source_filename = "/root/test/once_more/SVF/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.extendstruct = type <{ ptr, ptr, i32 }> %struct.basestruct = type { ptr, ptr } @i = dso_local global i32 0, align 4 @@ -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,20 +53,20 @@ 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 - %4 = load ptr, ptr %a, align 8 + %a = getelementptr inbounds nuw %struct.extendstruct, ptr %3, i32 0, i32 1 + %4 = load ptr, ptr %a, align 1 store ptr %4, ptr %t2, align 8 %5 = load ptr, ptr %t2, align 8 - %a1 = getelementptr inbounds %struct.basestruct, ptr %5, i32 0, i32 1 - %6 = load ptr, ptr %a1, align 8 + %a1 = getelementptr inbounds nuw %struct.basestruct, ptr %5, i32 0, i32 1 + %6 = load ptr, ptr %a1, align 1 store i32 0, ptr %6, align 4 ret void } declare ptr @malloc(i32 noundef) #1 -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test1-path.c.bc b/test_cases_bc/complex_tests/test1-path.c.bc index fa750c357..f18f57720 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test1-path.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test1.c.bc b/test_cases_bc/complex_tests/test1.c.bc index b185136d9..7b4bb16fe 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test1.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test2-path.c.bc b/test_cases_bc/complex_tests/test2-path.c.bc index 415bf2d2a..aaa0eaa98 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test2-path.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test2.c.bc b/test_cases_bc/complex_tests/test2.c.bc index 06f076829..d66257703 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test2.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test3-path.c.bc b/test_cases_bc/complex_tests/test3-path.c.bc index e5910b7e2..734312195 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test3-path.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test3.c.bc b/test_cases_bc/complex_tests/test3.c.bc index 18d6e294b..05ec79b9c 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test3.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test4.c.bc b/test_cases_bc/complex_tests/test4.c.bc index ee8f1ede0..76d1f9985 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test4.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test5.c.bc b/test_cases_bc/complex_tests/test5.c.bc index 7a5d9565e..00910f54a 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test5.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test6.c.bc b/test_cases_bc/complex_tests/test6.c.bc index 786c21b96..bc446ba84 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test6.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/complex_tests/test8.c.bc b/test_cases_bc/complex_tests/test8.c.bc index 55f8c53b0..efc713d8e 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/test/once_more/SVF/Test-Suite/test_cases_bc/complex_tests/test8.c.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cpp_types/broken.cpp.bc b/test_cases_bc/cpp_types/broken.cpp.bc index 2995ea26c..b20aaa4d0 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/test/once_more/SVF/Test-Suite/test_cases_bc/cpp_types/broken.cpp.bc' +source_filename = "/root/test/once_more/SVF/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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs0.c.bc b/test_cases_bc/cs_tests/cs0.c.bc index 52d1cace5..210a94ece 100644 --- a/test_cases_bc/cs_tests/cs0.c.bc +++ b/test_cases_bc/cs_tests/cs0.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs0.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs0.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs0.c" +target datalayout = "e-m:e-p270:32:32-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,8 +181,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs1.c.bc b/test_cases_bc/cs_tests/cs1.c.bc index 6f344e87d..1f71d5aa6 100644 --- a/test_cases_bc/cs_tests/cs1.c.bc +++ b/test_cases_bc/cs_tests/cs1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs1.c" +target datalayout = "e-m:e-p270:32:32-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,8 +170,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs10.c.bc b/test_cases_bc/cs_tests/cs10.c.bc index 5e3c4b5dd..933b0a520 100644 --- a/test_cases_bc/cs_tests/cs10.c.bc +++ b/test_cases_bc/cs_tests/cs10.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs10.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs10.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs10.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs10.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -206,8 +206,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} @@ -217,4 +217,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs11.c.bc b/test_cases_bc/cs_tests/cs11.c.bc index bcacf0d5d..cf37f8478 100644 --- a/test_cases_bc/cs_tests/cs11.c.bc +++ b/test_cases_bc/cs_tests/cs11.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs11.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs11.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs11.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs11.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -175,8 +175,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} @@ -186,4 +186,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs12.c.bc b/test_cases_bc/cs_tests/cs12.c.bc index b3399590f..f7e98f5ee 100644 --- a/test_cases_bc/cs_tests/cs12.c.bc +++ b/test_cases_bc/cs_tests/cs12.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs12.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs12.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs12.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs12.c" +target datalayout = "e-m:e-p270:32:32-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 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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs13.c.bc b/test_cases_bc/cs_tests/cs13.c.bc index 295497cba..0b85efe2a 100644 --- a/test_cases_bc/cs_tests/cs13.c.bc +++ b/test_cases_bc/cs_tests/cs13.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs13.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs13.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs13.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs13.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -182,8 +182,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} @@ -193,4 +193,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs14.c.bc b/test_cases_bc/cs_tests/cs14.c.bc index 1c4eeb247..7dee58152 100644 --- a/test_cases_bc/cs_tests/cs14.c.bc +++ b/test_cases_bc/cs_tests/cs14.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs14.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs14.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs14.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs14.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -196,8 +196,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} @@ -207,4 +207,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs15.c.bc b/test_cases_bc/cs_tests/cs15.c.bc index 4a87bc2da..75b4fe333 100644 --- a/test_cases_bc/cs_tests/cs15.c.bc +++ b/test_cases_bc/cs_tests/cs15.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs15.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs15.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs15.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs15.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -211,8 +211,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} @@ -222,4 +222,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs16.c.bc b/test_cases_bc/cs_tests/cs16.c.bc index f9cba4c18..42a4d4bb2 100644 --- a/test_cases_bc/cs_tests/cs16.c.bc +++ b/test_cases_bc/cs_tests/cs16.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs16.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs16.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs16.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs16.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -184,9 +184,9 @@ 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 #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} @@ -197,4 +197,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs17.c.bc b/test_cases_bc/cs_tests/cs17.c.bc index 24dd0dda1..a8fa0dc87 100644 --- a/test_cases_bc/cs_tests/cs17.c.bc +++ b/test_cases_bc/cs_tests/cs17.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs17.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs17.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs17.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs17.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -227,8 +227,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} @@ -238,4 +238,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs18.c.bc b/test_cases_bc/cs_tests/cs18.c.bc index 7a67c6002..5b285e6a7 100644 --- a/test_cases_bc/cs_tests/cs18.c.bc +++ b/test_cases_bc/cs_tests/cs18.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs18.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs18.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs18.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs18.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -187,8 +187,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} @@ -198,4 +198,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs19.c.bc b/test_cases_bc/cs_tests/cs19.c.bc index 24b7d0243..d9ee52d45 100644 --- a/test_cases_bc/cs_tests/cs19.c.bc +++ b/test_cases_bc/cs_tests/cs19.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs19.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs19.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs19.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs19.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -185,8 +185,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} @@ -196,4 +196,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs2.c.bc b/test_cases_bc/cs_tests/cs2.c.bc index 1bd6c66d1..f4c7ca0a5 100644 --- a/test_cases_bc/cs_tests/cs2.c.bc +++ b/test_cases_bc/cs_tests/cs2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -227,8 +227,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} @@ -238,4 +238,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs20.c.bc b/test_cases_bc/cs_tests/cs20.c.bc index 2ccdb20da..e934d6582 100644 --- a/test_cases_bc/cs_tests/cs20.c.bc +++ b/test_cases_bc/cs_tests/cs20.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs20.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs20.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs20.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs20.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -202,8 +202,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} @@ -213,4 +213,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs21.c.bc b/test_cases_bc/cs_tests/cs21.c.bc index 826974bec..5f1e6ef1e 100644 --- a/test_cases_bc/cs_tests/cs21.c.bc +++ b/test_cases_bc/cs_tests/cs21.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs21.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs21.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs21.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs21.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -182,8 +182,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} @@ -193,4 +193,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs3.c.bc b/test_cases_bc/cs_tests/cs3.c.bc index b4ebff120..900d3b9ca 100644 --- a/test_cases_bc/cs_tests/cs3.c.bc +++ b/test_cases_bc/cs_tests/cs3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -226,8 +226,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} @@ -237,4 +237,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs4.c.bc b/test_cases_bc/cs_tests/cs4.c.bc index 5df907994..9e332e186 100644 --- a/test_cases_bc/cs_tests/cs4.c.bc +++ b/test_cases_bc/cs_tests/cs4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -196,8 +196,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} @@ -207,4 +207,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs5.c.bc b/test_cases_bc/cs_tests/cs5.c.bc index a8cdb09e5..7b6e5a5fd 100644 --- a/test_cases_bc/cs_tests/cs5.c.bc +++ b/test_cases_bc/cs_tests/cs5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs5.c" +target datalayout = "e-m:e-p270:32:32-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs6.c.bc b/test_cases_bc/cs_tests/cs6.c.bc index cfc6ce45e..2fe04e2db 100644 --- a/test_cases_bc/cs_tests/cs6.c.bc +++ b/test_cases_bc/cs_tests/cs6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs6.c" +target datalayout = "e-m:e-p270:32:32-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs7.c.bc b/test_cases_bc/cs_tests/cs7.c.bc index 07dc49381..6a538bb22 100644 --- a/test_cases_bc/cs_tests/cs7.c.bc +++ b/test_cases_bc/cs_tests/cs7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs7.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -202,8 +202,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} @@ -213,4 +213,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs8.c.bc b/test_cases_bc/cs_tests/cs8.c.bc index 14900f36a..437540c83 100644 --- a/test_cases_bc/cs_tests/cs8.c.bc +++ b/test_cases_bc/cs_tests/cs8.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs8.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs8.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs8.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -198,8 +198,8 @@ if.end: ; preds = %if.else, %if.then ret i32 %8 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -209,4 +209,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/cs9.c.bc b/test_cases_bc/cs_tests/cs9.c.bc index c0cc6b5fb..00108dcab 100644 --- a/test_cases_bc/cs_tests/cs9.c.bc +++ b/test_cases_bc/cs_tests/cs9.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/cs9.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/cs9.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/cs9.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/cs9.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -232,8 +232,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} @@ -243,4 +243,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/funcpoiner.c.bc b/test_cases_bc/cs_tests/funcpoiner.c.bc index 004e0310d..6ac7db75a 100644 --- a/test_cases_bc/cs_tests/funcpoiner.c.bc +++ b/test_cases_bc/cs_tests/funcpoiner.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/funcpoiner.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/funcpoiner.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/funcpoiner.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/funcpoiner.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -192,8 +192,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} @@ -203,4 +203,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur0.c.bc b/test_cases_bc/cs_tests/recur0.c.bc index 79bd3416c..adb4e0e8c 100644 --- a/test_cases_bc/cs_tests/recur0.c.bc +++ b/test_cases_bc/cs_tests/recur0.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur0.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur0.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur0.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -182,8 +182,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} @@ -193,4 +193,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur10.c.bc b/test_cases_bc/cs_tests/recur10.c.bc index a96ed4cf5..f9e4f942f 100644 --- a/test_cases_bc/cs_tests/recur10.c.bc +++ b/test_cases_bc/cs_tests/recur10.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur10.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur10.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur10.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur10.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -180,8 +180,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur2.c.bc b/test_cases_bc/cs_tests/recur2.c.bc index bda6a655c..7cfb39519 100644 --- a/test_cases_bc/cs_tests/recur2.c.bc +++ b/test_cases_bc/cs_tests/recur2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -173,8 +173,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur3.c.bc b/test_cases_bc/cs_tests/recur3.c.bc index dd8b38dd3..51f8b5ce0 100644 --- a/test_cases_bc/cs_tests/recur3.c.bc +++ b/test_cases_bc/cs_tests/recur3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur3.c" +target datalayout = "e-m:e-p270:32:32-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 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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur4.c.bc b/test_cases_bc/cs_tests/recur4.c.bc index 9a4bfd303..12dc5b399 100644 --- a/test_cases_bc/cs_tests/recur4.c.bc +++ b/test_cases_bc/cs_tests/recur4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -182,8 +182,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} @@ -193,4 +193,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur5.c.bc b/test_cases_bc/cs_tests/recur5.c.bc index 1455a24ec..db213562b 100644 --- a/test_cases_bc/cs_tests/recur5.c.bc +++ b/test_cases_bc/cs_tests/recur5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur5.c" +target datalayout = "e-m:e-p270:32:32-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 @@ 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,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur6.c.bc b/test_cases_bc/cs_tests/recur6.c.bc index 0374bc42b..6e73f956e 100644 --- a/test_cases_bc/cs_tests/recur6.c.bc +++ b/test_cases_bc/cs_tests/recur6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur6.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -178,8 +178,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} @@ -189,4 +189,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur7.c.bc b/test_cases_bc/cs_tests/recur7.c.bc index b3db52353..64d2f6a2e 100644 --- a/test_cases_bc/cs_tests/recur7.c.bc +++ b/test_cases_bc/cs_tests/recur7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur7.c" +target datalayout = "e-m:e-p270:32:32-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 @@ 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur8.c.bc b/test_cases_bc/cs_tests/recur8.c.bc index e58c0525d..bebe0c2ec 100644 --- a/test_cases_bc/cs_tests/recur8.c.bc +++ b/test_cases_bc/cs_tests/recur8.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur8.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur8.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur8.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -208,9 +208,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} @@ -221,4 +221,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/cs_tests/recur9.c.bc b/test_cases_bc/cs_tests/recur9.c.bc index cb0c9a029..80078c934 100644 --- a/test_cases_bc/cs_tests/recur9.c.bc +++ b/test_cases_bc/cs_tests/recur9.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cs_tests/recur9.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cs_tests/recur9.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/cs_tests/recur9.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/cs_tests/recur9.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -209,9 +209,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} @@ -222,4 +222,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/double_free/df0.c.bc b/test_cases_bc/double_free/df0.c.bc index 66ae41d20..b41436b2b 100644 --- a/test_cases_bc/double_free/df0.c.bc +++ b/test_cases_bc/double_free/df0.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df0.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df0.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df0.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 { @@ -90,9 +90,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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -104,4 +104,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/double_free/df00.c.bc b/test_cases_bc/double_free/df00.c.bc index 1d0f3c8b6..6509fbb5e 100644 --- a/test_cases_bc/double_free/df00.c.bc +++ b/test_cases_bc/double_free/df00.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df00.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df00.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df00.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df00.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 { @@ -108,9 +108,9 @@ if.end: ; preds = %if.else, %if.then ret i32 %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -122,4 +122,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/double_free/df1.c.bc b/test_cases_bc/double_free/df1.c.bc index 52e89ef87..75c0bcddc 100644 --- a/test_cases_bc/double_free/df1.c.bc +++ b/test_cases_bc/double_free/df1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df1.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 { @@ -92,9 +92,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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -106,4 +106,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/double_free/df10.c.bc b/test_cases_bc/double_free/df10.c.bc index c30c9d860..95b1376ae 100644 --- a/test_cases_bc/double_free/df10.c.bc +++ b/test_cases_bc/double_free/df10.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df10.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df10.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df10.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df10.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -200,11 +200,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -229,7 +229,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -274,7 +274,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -292,7 +292,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -311,13 +311,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -359,7 +359,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -370,7 +370,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -384,13 +384,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -814,12 +814,12 @@ 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 #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 = { 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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 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 = { 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 #6 = { nounwind willreturn memory(none) } attributes #7 = { nounwind } attributes #8 = { nounwind allocsize(0) } @@ -833,7 +833,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df11.c.bc b/test_cases_bc/double_free/df11.c.bc index 21aaadc9f..e6b3d78d3 100644 --- a/test_cases_bc/double_free/df11.c.bc +++ b/test_cases_bc/double_free/df11.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df11.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df11.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df11.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df11.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -195,11 +195,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -224,7 +224,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -269,7 +269,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -287,7 +287,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -306,13 +306,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -354,7 +354,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -365,7 +365,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -379,13 +379,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -725,12 +725,12 @@ if.end: ; preds = %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 #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 = { 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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 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 = { 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 #6 = { nounwind willreturn memory(none) } attributes #7 = { nounwind } attributes #8 = { nounwind allocsize(0) } @@ -744,7 +744,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df12.c.bc b/test_cases_bc/double_free/df12.c.bc index 6578a91c1..5efb65feb 100644 --- a/test_cases_bc/double_free/df12.c.bc +++ b/test_cases_bc/double_free/df12.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df12.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df12.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df12.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df12.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -195,11 +195,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -224,7 +224,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -269,7 +269,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -287,7 +287,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -306,13 +306,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -354,7 +354,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -365,7 +365,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -379,13 +379,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -752,12 +752,12 @@ if.end: ; preds = %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 #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 = { 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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 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 = { 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 #6 = { nounwind willreturn memory(none) } attributes #7 = { nounwind } attributes #8 = { nounwind allocsize(0) } @@ -771,7 +771,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df13.c.bc b/test_cases_bc/double_free/df13.c.bc index 0ffc848e8..24bce634c 100644 --- a/test_cases_bc/double_free/df13.c.bc +++ b/test_cases_bc/double_free/df13.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df13.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df13.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df13.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df13.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -743,12 +743,12 @@ if.end: ; preds = %entry ret ptr %1 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -762,7 +762,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df14.c.bc b/test_cases_bc/double_free/df14.c.bc index 072690416..a4086fdcf 100644 --- a/test_cases_bc/double_free/df14.c.bc +++ b/test_cases_bc/double_free/df14.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df14.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df14.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df14.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df14.c" +target datalayout = "e-m:e-p270:32:32-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 } %union.CWE415_Double_Free__malloc_free_struct_34_unionType = type { ptr } @@ -270,11 +270,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -299,7 +299,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -344,7 +344,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -362,7 +362,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -381,13 +381,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -429,7 +429,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -440,7 +440,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -454,13 +454,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -613,7 +613,7 @@ entry: define dso_local void @CWE415_Double_Free__malloc_free_struct_34_bad() #0 { entry: %data = alloca ptr, align 8 - %myUnion = alloca %union.CWE415_Double_Free__malloc_free_struct_34_unionType, align 8 + %myUnion = alloca %union.CWE415_Double_Free__malloc_free_struct_34_unionType, align 1 %data2 = alloca ptr, align 8 store ptr null, ptr %data, align 8 %call = call ptr @DOUBLEFREEMALLOC(i32 noundef 800) @@ -630,8 +630,8 @@ if.end: ; preds = %entry %1 = load ptr, ptr %data, align 8 %call1 = call ptr @SAFEFREE(ptr noundef %1) %2 = load ptr, ptr %data, align 8 - store ptr %2, ptr %myUnion, align 8 - %3 = load ptr, ptr %myUnion, align 8 + store ptr %2, ptr %myUnion, align 1 + %3 = load ptr, ptr %myUnion, align 1 store ptr %3, ptr %data2, align 8 %4 = load ptr, ptr %data2, align 8 %call3 = call ptr @DOUBLEFREE(ptr noundef %4) @@ -676,7 +676,7 @@ declare i64 @time(ptr noundef) #2 define internal void @goodG2B() #0 { entry: %data = alloca ptr, align 8 - %myUnion = alloca %union.CWE415_Double_Free__malloc_free_struct_34_unionType, align 8 + %myUnion = alloca %union.CWE415_Double_Free__malloc_free_struct_34_unionType, align 1 %data1 = alloca ptr, align 8 store ptr null, ptr %data, align 8 %call = call ptr @SAFEMALLOC(i32 noundef 800) @@ -691,8 +691,8 @@ if.then: ; preds = %entry if.end: ; preds = %entry %1 = load ptr, ptr %data, align 8 - store ptr %1, ptr %myUnion, align 8 - %2 = load ptr, ptr %myUnion, align 8 + store ptr %1, ptr %myUnion, align 1 + %2 = load ptr, ptr %myUnion, align 1 store ptr %2, ptr %data1, align 8 %3 = load ptr, ptr %data1, align 8 %call2 = call ptr @SAFEFREE(ptr noundef %3) @@ -703,7 +703,7 @@ if.end: ; preds = %entry define internal void @goodB2G() #0 { entry: %data = alloca ptr, align 8 - %myUnion = alloca %union.CWE415_Double_Free__malloc_free_struct_34_unionType, align 8 + %myUnion = alloca %union.CWE415_Double_Free__malloc_free_struct_34_unionType, align 1 %data2 = alloca ptr, align 8 store ptr null, ptr %data, align 8 %call = call ptr @SAFEMALLOC(i32 noundef 800) @@ -720,18 +720,18 @@ if.end: ; preds = %entry %1 = load ptr, ptr %data, align 8 %call1 = call ptr @SAFEFREE(ptr noundef %1) %2 = load ptr, ptr %data, align 8 - store ptr %2, ptr %myUnion, align 8 - %3 = load ptr, ptr %myUnion, align 8 + store ptr %2, ptr %myUnion, align 1 + %3 = load ptr, ptr %myUnion, align 1 store ptr %3, ptr %data2, align 8 ret void } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -745,7 +745,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df15.c.bc b/test_cases_bc/double_free/df15.c.bc index 02cd80e77..51b1d9e5d 100644 --- a/test_cases_bc/double_free/df15.c.bc +++ b/test_cases_bc/double_free/df15.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df15.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df15.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df15.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df15.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -737,12 +737,12 @@ 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -756,7 +756,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df16.c.bc b/test_cases_bc/double_free/df16.c.bc index b705ede48..84608e665 100644 --- a/test_cases_bc/double_free/df16.c.bc +++ b/test_cases_bc/double_free/df16.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df16.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df16.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df16.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df16.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -746,12 +746,12 @@ 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -765,7 +765,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df18.c.bc b/test_cases_bc/double_free/df18.c.bc index 54a7f10a6..5c1fce648 100644 --- a/test_cases_bc/double_free/df18.c.bc +++ b/test_cases_bc/double_free/df18.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df18.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df18.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df18.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df18.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -707,12 +707,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -726,7 +726,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df19.c.bc b/test_cases_bc/double_free/df19.c.bc index a98e2f900..d5239d5b1 100644 --- a/test_cases_bc/double_free/df19.c.bc +++ b/test_cases_bc/double_free/df19.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df19.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df19.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df19.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df19.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df2.c.bc b/test_cases_bc/double_free/df2.c.bc index 1452ae537..7be0cd723 100644 --- a/test_cases_bc/double_free/df2.c.bc +++ b/test_cases_bc/double_free/df2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df2.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 { @@ -99,9 +99,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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -113,4 +113,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/double_free/df20.c.bc b/test_cases_bc/double_free/df20.c.bc index 4cb16e2b8..ddab9cff0 100644 --- a/test_cases_bc/double_free/df20.c.bc +++ b/test_cases_bc/double_free/df20.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df20.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df20.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df20.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df20.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df21.c.bc b/test_cases_bc/double_free/df21.c.bc index 1312d09c2..1a97cccf5 100644 --- a/test_cases_bc/double_free/df21.c.bc +++ b/test_cases_bc/double_free/df21.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df21.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df21.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df21.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df21.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df22.c.bc b/test_cases_bc/double_free/df22.c.bc index 882e2dd6c..843138521 100644 --- a/test_cases_bc/double_free/df22.c.bc +++ b/test_cases_bc/double_free/df22.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df22.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df22.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df22.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df22.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -272,11 +272,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -301,7 +301,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -346,7 +346,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -364,7 +364,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -383,13 +383,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -431,7 +431,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -442,7 +442,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -456,13 +456,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -842,12 +842,12 @@ if.end6: ; preds = %if.then4, %if.end2 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -861,7 +861,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df23.c.bc b/test_cases_bc/double_free/df23.c.bc index 9e7fab477..6313cfa0c 100644 --- a/test_cases_bc/double_free/df23.c.bc +++ b/test_cases_bc/double_free/df23.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df23.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df23.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df23.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df23.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df24.c.bc b/test_cases_bc/double_free/df24.c.bc index a0c1549b6..dd093944c 100644 --- a/test_cases_bc/double_free/df24.c.bc +++ b/test_cases_bc/double_free/df24.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df24.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df24.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df24.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df24.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -271,11 +271,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -300,7 +300,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -345,7 +345,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -363,7 +363,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -382,13 +382,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -430,7 +430,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -441,7 +441,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -455,13 +455,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -841,12 +841,12 @@ if.end7: ; preds = %if.then5, %if.end3 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -860,7 +860,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df25.c.bc b/test_cases_bc/double_free/df25.c.bc index 9eb879c54..17a8816a3 100644 --- a/test_cases_bc/double_free/df25.c.bc +++ b/test_cases_bc/double_free/df25.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df25.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df25.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df25.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df25.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df26.c.bc b/test_cases_bc/double_free/df26.c.bc index 738d020ef..e3e8f1305 100644 --- a/test_cases_bc/double_free/df26.c.bc +++ b/test_cases_bc/double_free/df26.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df26.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df26.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df26.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df26.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -742,12 +742,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -761,7 +761,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df27.c.bc b/test_cases_bc/double_free/df27.c.bc index 60b2295c1..cddf8ac2c 100644 --- a/test_cases_bc/double_free/df27.c.bc +++ b/test_cases_bc/double_free/df27.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df27.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df27.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df27.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df27.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df28.c.bc b/test_cases_bc/double_free/df28.c.bc index 0791a0f71..0aaf30f19 100644 --- a/test_cases_bc/double_free/df28.c.bc +++ b/test_cases_bc/double_free/df28.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df28.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df28.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df28.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df28.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -272,11 +272,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -301,7 +301,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -346,7 +346,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -364,7 +364,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -383,13 +383,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -431,7 +431,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -442,7 +442,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -456,13 +456,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -842,12 +842,12 @@ if.end6: ; preds = %if.then4, %if.end2 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -861,7 +861,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df29.c.bc b/test_cases_bc/double_free/df29.c.bc index d64c3bdfa..5205c476a 100644 --- a/test_cases_bc/double_free/df29.c.bc +++ b/test_cases_bc/double_free/df29.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df29.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df29.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df29.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df29.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -753,12 +753,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -772,7 +772,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df3.c.bc b/test_cases_bc/double_free/df3.c.bc index 90e119dd1..97b1754d4 100644 --- a/test_cases_bc/double_free/df3.c.bc +++ b/test_cases_bc/double_free/df3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df3.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 { @@ -115,9 +115,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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -129,4 +129,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/double_free/df30.c.bc b/test_cases_bc/double_free/df30.c.bc index 6c5f5dc9c..f64481fb3 100644 --- a/test_cases_bc/double_free/df30.c.bc +++ b/test_cases_bc/double_free/df30.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df30.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df30.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df30.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df30.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -271,11 +271,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -300,7 +300,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -345,7 +345,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -363,7 +363,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -382,13 +382,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -430,7 +430,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -441,7 +441,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -455,13 +455,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -841,12 +841,12 @@ if.end7: ; preds = %if.then5, %if.end3 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -860,7 +860,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df31.c.bc b/test_cases_bc/double_free/df31.c.bc index 49f64fc03..e4c44b727 100644 --- a/test_cases_bc/double_free/df31.c.bc +++ b/test_cases_bc/double_free/df31.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df31.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df31.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df31.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df31.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -270,11 +270,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -299,7 +299,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -344,7 +344,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -362,7 +362,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -381,13 +381,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -429,7 +429,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -440,7 +440,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -454,13 +454,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -852,12 +852,12 @@ if.end8: ; preds = %if.then6, %if.end3 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -871,7 +871,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df32.c.bc b/test_cases_bc/double_free/df32.c.bc index ffffc03ea..030d6f3e8 100644 --- a/test_cases_bc/double_free/df32.c.bc +++ b/test_cases_bc/double_free/df32.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df32.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df32.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df32.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df32.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df33.c.bc b/test_cases_bc/double_free/df33.c.bc index 6762ccebb..00164c320 100644 --- a/test_cases_bc/double_free/df33.c.bc +++ b/test_cases_bc/double_free/df33.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df33.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df33.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df33.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df33.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -270,11 +270,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -299,7 +299,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -344,7 +344,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -362,7 +362,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -381,13 +381,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -429,7 +429,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -440,7 +440,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -454,13 +454,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -840,12 +840,12 @@ if.end6: ; preds = %if.then4, %if.end2 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -859,7 +859,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df34.c.bc b/test_cases_bc/double_free/df34.c.bc index 70bbf4ebc..21ad5209f 100644 --- a/test_cases_bc/double_free/df34.c.bc +++ b/test_cases_bc/double_free/df34.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df34.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df34.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df34.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df34.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -270,11 +270,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -299,7 +299,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -344,7 +344,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -362,7 +362,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -381,13 +381,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -429,7 +429,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -440,7 +440,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -454,13 +454,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -840,12 +840,12 @@ if.end8: ; preds = %if.then6, %if.end3 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -859,7 +859,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df35.c.bc b/test_cases_bc/double_free/df35.c.bc index c7f7f7639..1abe35965 100644 --- a/test_cases_bc/double_free/df35.c.bc +++ b/test_cases_bc/double_free/df35.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df35.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df35.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df35.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df35.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -796,12 +796,12 @@ if.end14: ; preds = %if.else12, %if.then 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -815,7 +815,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df36.c.bc b/test_cases_bc/double_free/df36.c.bc index 901f36c15..fd4b4b12f 100644 --- a/test_cases_bc/double_free/df36.c.bc +++ b/test_cases_bc/double_free/df36.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df36.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df36.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df36.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df36.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df37.c.bc b/test_cases_bc/double_free/df37.c.bc index b37a50100..dfabb1ae7 100644 --- a/test_cases_bc/double_free/df37.c.bc +++ b/test_cases_bc/double_free/df37.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df37.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df37.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df37.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df37.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -270,11 +270,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -299,7 +299,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -344,7 +344,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -362,7 +362,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -381,13 +381,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -429,7 +429,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -440,7 +440,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -454,13 +454,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -840,12 +840,12 @@ if.end7: ; preds = %if.then5, %if.end3 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -859,7 +859,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df38.c.bc b/test_cases_bc/double_free/df38.c.bc index e0afc7656..b49d93652 100644 --- a/test_cases_bc/double_free/df38.c.bc +++ b/test_cases_bc/double_free/df38.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df38.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df38.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df38.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df38.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df39.c.bc b/test_cases_bc/double_free/df39.c.bc index efa9664df..3f6055b4d 100644 --- a/test_cases_bc/double_free/df39.c.bc +++ b/test_cases_bc/double_free/df39.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df39.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df39.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df39.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df39.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -743,12 +743,12 @@ while.end3: ; preds = %while.body1 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -762,7 +762,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df4.c.bc b/test_cases_bc/double_free/df4.c.bc index 7eb726a27..bd1daf63f 100644 --- a/test_cases_bc/double_free/df4.c.bc +++ b/test_cases_bc/double_free/df4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df4.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 { @@ -109,9 +109,9 @@ if.end: ; preds = %if.else, %if.then ret i32 %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -123,4 +123,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/double_free/df40.c.bc b/test_cases_bc/double_free/df40.c.bc index e6fd578b7..93007db79 100644 --- a/test_cases_bc/double_free/df40.c.bc +++ b/test_cases_bc/double_free/df40.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df40.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df40.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df40.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df40.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -725,12 +725,12 @@ sink: ; preds = %if.end 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -744,7 +744,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df41.c.bc b/test_cases_bc/double_free/df41.c.bc index 497d7623a..33595253c 100644 --- a/test_cases_bc/double_free/df41.c.bc +++ b/test_cases_bc/double_free/df41.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df41.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df41.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df41.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df41.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -274,11 +274,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -303,7 +303,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -348,7 +348,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -366,7 +366,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -385,13 +385,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -433,7 +433,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -444,7 +444,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -458,13 +458,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -814,12 +814,12 @@ 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -833,7 +833,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df42.c.bc b/test_cases_bc/double_free/df42.c.bc index 98af2833b..bb2de4df0 100644 --- a/test_cases_bc/double_free/df42.c.bc +++ b/test_cases_bc/double_free/df42.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df42.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df42.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df42.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df42.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -716,12 +716,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -735,7 +735,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df43.c.bc b/test_cases_bc/double_free/df43.c.bc index 17c585b94..0c284c79d 100644 --- a/test_cases_bc/double_free/df43.c.bc +++ b/test_cases_bc/double_free/df43.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df43.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df43.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df43.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df43.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -752,12 +752,12 @@ if.end: ; preds = %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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -771,7 +771,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df44.c.bc b/test_cases_bc/double_free/df44.c.bc index f17968ea4..e9bf61e24 100644 --- a/test_cases_bc/double_free/df44.c.bc +++ b/test_cases_bc/double_free/df44.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df44.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df44.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df44.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df44.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -823,12 +823,12 @@ for.end8: ; preds = %for.cond2 declare i32 @DOUBLEFREE_FP(...) #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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -842,7 +842,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df45.c.bc b/test_cases_bc/double_free/df45.c.bc index b71545e19..1acdef953 100644 --- a/test_cases_bc/double_free/df45.c.bc +++ b/test_cases_bc/double_free/df45.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df45.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df45.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df45.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df45.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -743,12 +743,12 @@ if.end: ; preds = %entry ret ptr %1 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -762,7 +762,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df46.c.bc b/test_cases_bc/double_free/df46.c.bc index 9a7189958..939f62bd4 100644 --- a/test_cases_bc/double_free/df46.c.bc +++ b/test_cases_bc/double_free/df46.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df46.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df46.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df46.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df46.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -269,11 +269,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -298,7 +298,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -343,7 +343,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -361,7 +361,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -380,13 +380,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -428,7 +428,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -439,7 +439,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -453,13 +453,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -737,12 +737,12 @@ 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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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(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 #5 = { 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 #6 = { nounwind allocsize(0) } attributes #7 = { nounwind } attributes #8 = { nounwind willreturn memory(none) } @@ -756,7 +756,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df5.c.bc b/test_cases_bc/double_free/df5.c.bc index 8becdb0f0..1fee2aebd 100644 --- a/test_cases_bc/double_free/df5.c.bc +++ b/test_cases_bc/double_free/df5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df5.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -195,11 +195,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -224,7 +224,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -269,7 +269,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -287,7 +287,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -306,13 +306,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -354,7 +354,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -365,7 +365,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -379,13 +379,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -734,12 +734,12 @@ 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 #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 = { 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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 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 = { 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 #6 = { nounwind willreturn memory(none) } attributes #7 = { nounwind } attributes #8 = { nounwind allocsize(0) } @@ -753,7 +753,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df6.c.bc b/test_cases_bc/double_free/df6.c.bc index 6cad3f488..fd03c9df3 100644 --- a/test_cases_bc/double_free/df6.c.bc +++ b/test_cases_bc/double_free/df6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df6.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -195,11 +195,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -224,7 +224,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -269,7 +269,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -287,7 +287,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -306,13 +306,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -354,7 +354,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -365,7 +365,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -379,13 +379,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -751,12 +751,12 @@ if.end: ; preds = %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 #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 = { 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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 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 = { 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 #6 = { nounwind willreturn memory(none) } attributes #7 = { nounwind } attributes #8 = { nounwind allocsize(0) } @@ -770,7 +770,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df7.c.bc b/test_cases_bc/double_free/df7.c.bc index b78383d8a..89c94cf8f 100644 --- a/test_cases_bc/double_free/df7.c.bc +++ b/test_cases_bc/double_free/df7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df7.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -195,11 +195,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -224,7 +224,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -269,7 +269,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -287,7 +287,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -306,13 +306,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -354,7 +354,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -365,7 +365,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -379,13 +379,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -743,12 +743,12 @@ while.end3: ; preds = %while.body1 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 #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 = { 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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 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 = { 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 #6 = { nounwind willreturn memory(none) } attributes #7 = { nounwind } attributes #8 = { nounwind allocsize(0) } @@ -762,7 +762,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df8.c.bc b/test_cases_bc/double_free/df8.c.bc index 7f2579572..87555a285 100644 --- a/test_cases_bc/double_free/df8.c.bc +++ b/test_cases_bc/double_free/df8.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df8.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df8.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df8.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -195,11 +195,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -224,7 +224,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -269,7 +269,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -287,7 +287,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -306,13 +306,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -354,7 +354,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -365,7 +365,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -379,13 +379,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -823,12 +823,12 @@ for.end8: ; preds = %for.cond2 declare i32 @DOUBLEFREE_FP(...) #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 #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 = { 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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 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 = { 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 #6 = { nounwind willreturn memory(none) } attributes #7 = { nounwind } attributes #8 = { nounwind allocsize(0) } @@ -842,7 +842,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/double_free/df9.c.bc b/test_cases_bc/double_free/df9.c.bc index 598121089..a1e41090b 100644 --- a/test_cases_bc/double_free/df9.c.bc +++ b/test_cases_bc/double_free/df9.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/double_free/df9.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/double_free/df9.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/double_free/df9.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/double_free/df9.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -195,11 +195,11 @@ entry: %structTwoIntsStruct.addr = alloca ptr, align 8 store ptr %structTwoIntsStruct, ptr %structTwoIntsStruct.addr, align 8 %0 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %intOne, align 4 + %intOne = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %0, i32 0, i32 0 + %1 = load i32, ptr %intOne, align 1 %2 = load ptr, ptr %structTwoIntsStruct.addr, align 8 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1 - %3 = load i32, ptr %intTwo, align 4 + %intTwo = getelementptr inbounds nuw %struct._twoIntsStruct, ptr %2, i32 0, i32 1 + %3 = load i32, ptr %intTwo, align 1 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1, i32 noundef %3) ret void } @@ -224,7 +224,7 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %2 = load ptr, ptr %bytes.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 %conv = zext i8 %4 to i32 %call = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %conv) @@ -269,7 +269,7 @@ land.lhs.true: ; preds = %while.cond %3 = load ptr, ptr %hex.addr, align 8 %4 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %4 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %mul + %arrayidx = getelementptr inbounds nuw i8, ptr %3, i64 %mul %5 = load i8, ptr %arrayidx, align 1 %conv = sext i8 %5 to i32 %idxprom = sext i32 %conv to i64 @@ -287,7 +287,7 @@ land.rhs: ; preds = %land.lhs.true %9 = load i64, ptr %numWritten, align 8 %mul4 = mul i64 2, %9 %add = add i64 %mul4, 1 - %arrayidx5 = getelementptr inbounds i8, ptr %8, i64 %add + %arrayidx5 = getelementptr inbounds nuw i8, ptr %8, i64 %add %10 = load i8, ptr %arrayidx5, align 1 %conv6 = sext i8 %10 to i32 %idxprom7 = sext i32 %conv6 to i64 @@ -306,13 +306,13 @@ while.body: ; preds = %land.end %13 = load ptr, ptr %hex.addr, align 8 %14 = load i64, ptr %numWritten, align 8 %mul12 = mul i64 2, %14 - %arrayidx13 = getelementptr inbounds i8, ptr %13, i64 %mul12 + %arrayidx13 = getelementptr inbounds nuw i8, ptr %13, i64 %mul12 %call14 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %arrayidx13, ptr noundef @.str.12, ptr noundef %byte) #7 %15 = load i32, ptr %byte, align 4 %conv15 = trunc i32 %15 to i8 %16 = load ptr, ptr %bytes.addr, align 8 %17 = load i64, ptr %numWritten, align 8 - %arrayidx16 = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx16 = getelementptr inbounds nuw i8, ptr %16, i64 %17 store i8 %conv15, ptr %arrayidx16, align 1 %18 = load i64, ptr %numWritten, align 8 %inc = add i64 %18, 1 @@ -354,7 +354,7 @@ land.lhs.true: ; preds = %while.cond %2 = load ptr, ptr %hex.addr, align 8 %3 = load i64, ptr %numWritten, align 8 %mul = mul i64 2, %3 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 %mul + %arrayidx = getelementptr inbounds nuw i32, ptr %2, i64 %mul %4 = load i32, ptr %arrayidx, align 4 %call = call i32 @iswxdigit(i32 noundef %4) #7 %tobool = icmp ne i32 %call, 0 @@ -365,7 +365,7 @@ land.rhs: ; preds = %land.lhs.true %6 = load i64, ptr %numWritten, align 8 %mul1 = mul i64 2, %6 %add = add i64 %mul1, 1 - %arrayidx2 = getelementptr inbounds i32, ptr %5, i64 %add + %arrayidx2 = getelementptr inbounds nuw i32, ptr %5, i64 %add %7 = load i32, ptr %arrayidx2, align 4 %call3 = call i32 @iswxdigit(i32 noundef %7) #7 %tobool4 = icmp ne i32 %call3, 0 @@ -379,13 +379,13 @@ while.body: ; preds = %land.end %9 = load ptr, ptr %hex.addr, align 8 %10 = load i64, ptr %numWritten, align 8 %mul5 = mul i64 2, %10 - %arrayidx6 = getelementptr inbounds i32, ptr %9, i64 %mul5 + %arrayidx6 = getelementptr inbounds nuw i32, ptr %9, i64 %mul5 %call7 = call i32 (ptr, ptr, ...) @__isoc99_swscanf(ptr noundef %arrayidx6, ptr noundef @.str.14, ptr noundef %byte) #7 %11 = load i32, ptr %byte, align 4 %conv = trunc i32 %11 to i8 %12 = load ptr, ptr %bytes.addr, align 8 %13 = load i64, ptr %numWritten, align 8 - %arrayidx8 = getelementptr inbounds i8, ptr %12, i64 %13 + %arrayidx8 = getelementptr inbounds nuw i8, ptr %12, i64 %13 store i8 %conv, ptr %arrayidx8, align 1 %14 = load i64, ptr %numWritten, align 8 %inc = add i64 %14, 1 @@ -725,12 +725,12 @@ sink: ; preds = %if.end 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 #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 = { 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 = { 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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 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 = { 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 #6 = { nounwind willreturn memory(none) } attributes #7 = { nounwind } attributes #8 = { nounwind allocsize(0) } @@ -744,7 +744,7 @@ attributes #9 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/fs_tests/array_alias_1.c.bc b/test_cases_bc/fs_tests/array_alias_1.c.bc index 11d6272be..2ec73ce2d 100644 --- a/test_cases_bc/fs_tests/array_alias_1.c.bc +++ b/test_cases_bc/fs_tests/array_alias_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/array_alias_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/array_alias_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/array_alias_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/array_alias_1.c" +target datalayout = "e-m:e-p270:32:32-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,47 +151,47 @@ entry: %y = 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 %x, ptr %f1, align 16 %arrayidx1 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 + %f2 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 store ptr %y, ptr %f2, align 8 %arrayidx2 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f13 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx2, i32 0, i32 0 + %f13 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx2, i32 0, i32 0 %0 = load ptr, ptr %f13, align 16 %arrayidx4 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f25 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx4, i32 0, i32 1 + %f25 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx4, i32 0, i32 1 %1 = load ptr, ptr %f25, 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 - %f29 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx8, i32 0, i32 1 + %f29 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx8, i32 0, i32 1 %3 = load ptr, ptr %f29, align 8 call void @NOALIAS(ptr noundef %2, ptr noundef %3) %arrayidx10 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f111 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx10, i32 0, i32 0 + %f111 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx10, i32 0, i32 0 %4 = load ptr, ptr %f111, align 16 %arrayidx12 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f113 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx12, i32 0, i32 0 + %f113 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx12, i32 0, i32 0 %5 = load ptr, ptr %f113, align 16 call void @MAYALIAS(ptr noundef %4, ptr noundef %5) %arrayidx14 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f115 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx14, i32 0, i32 0 + %f115 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx14, i32 0, i32 0 store ptr %y, ptr %f115, align 16 %arrayidx16 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f117 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx16, i32 0, i32 0 + %f117 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx16, i32 0, i32 0 %6 = load ptr, ptr %f117, align 16 %arrayidx18 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f219 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx18, i32 0, i32 1 + %f219 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx18, i32 0, i32 1 %7 = load ptr, ptr %f219, align 8 call void @MUSTALIAS(ptr noundef %6, 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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/array_alias_2.c.bc b/test_cases_bc/fs_tests/array_alias_2.c.bc index df5412073..8464329e5 100644 --- a/test_cases_bc/fs_tests/array_alias_2.c.bc +++ b/test_cases_bc/fs_tests/array_alias_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/array_alias_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/array_alias_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/array_alias_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/array_alias_2.c" +target datalayout = "e-m:e-p270:32:32-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, ptr } @@ -156,55 +156,55 @@ entry: %y = alloca float, align 4 store i32 0, ptr %retval, align 4 %arrayidx = getelementptr inbounds [3 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 [3 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 + %f2 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 store ptr %c, ptr %f2, align 8 %arrayidx2 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f3 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx2, i32 0, i32 2 + %f3 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx2, i32 0, i32 2 store ptr %x, ptr %f3, align 16 %arrayidx3 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f14 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx3, i32 0, i32 0 + %f14 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx3, i32 0, i32 0 store ptr %b, ptr %f14, align 8 %arrayidx5 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f26 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx5, i32 0, i32 1 + %f26 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx5, i32 0, i32 1 store ptr %d, ptr %f26, align 8 %arrayidx7 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f38 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx7, i32 0, i32 2 + %f38 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx7, i32 0, i32 2 store ptr %y, ptr %f38, align 8 %arrayidx9 = getelementptr inbounds [2 x ptr], ptr %p, i64 0, i64 0 store ptr %c, ptr %arrayidx9, align 16 %arrayidx10 = getelementptr inbounds [2 x ptr], ptr %p, i64 0, i64 1 store ptr %d, ptr %arrayidx10, align 8 %arrayidx11 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f112 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx11, i32 0, i32 0 + %f112 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx11, i32 0, i32 0 %0 = load ptr, ptr %f112, align 16 %arrayidx13 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f114 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx13, i32 0, i32 0 + %f114 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx13, i32 0, i32 0 %1 = load ptr, ptr %f114, align 8 call void @MAYALIAS(ptr noundef %0, ptr noundef %1) %arrayidx15 = getelementptr inbounds [2 x ptr], ptr %p, i64 0, i64 0 %2 = load ptr, ptr %arrayidx15, align 16 %arrayidx16 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f217 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx16, i32 0, i32 1 + %f217 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx16, i32 0, i32 1 %3 = load ptr, ptr %f217, align 8 call void @MAYALIAS(ptr noundef %2, ptr noundef %3) %arrayidx18 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f319 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx18, i32 0, i32 2 + %f319 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx18, i32 0, i32 2 %4 = load ptr, ptr %f319, align 16 call void @MAYALIAS(ptr noundef %4, ptr noundef %y) %arrayidx20 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f121 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx20, i32 0, i32 0 + %f121 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx20, i32 0, i32 0 %5 = load ptr, ptr %f121, align 16 %arrayidx22 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f223 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx22, i32 0, i32 1 + %f223 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx22, i32 0, i32 1 %6 = load ptr, ptr %f223, align 8 call void @NOALIAS(ptr noundef %5, ptr noundef %6) %arrayidx24 = getelementptr inbounds [2 x ptr], ptr %p, i64 0, i64 1 %7 = load ptr, ptr %arrayidx24, align 8 %arrayidx25 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f126 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx25, i32 0, i32 0 + %f126 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx25, i32 0, i32 0 %8 = load ptr, ptr %f126, align 8 call void @NOALIAS(ptr noundef %7, ptr noundef %8) %9 = load i32, ptr %a, align 4 @@ -213,23 +213,23 @@ entry: if.then: ; preds = %entry %arrayidx27 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f128 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx27, i32 0, i32 0 + %f128 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx27, i32 0, i32 0 store ptr %c, ptr %f128, align 8 br label %if.end if.end: ; preds = %if.then, %entry %arrayidx29 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f130 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx29, i32 0, i32 0 + %f130 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx29, i32 0, i32 0 %10 = load ptr, ptr %f130, align 16 %arrayidx31 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f232 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx31, i32 0, i32 1 + %f232 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx31, i32 0, i32 1 %11 = load ptr, ptr %f232, align 8 call void @MAYALIAS(ptr noundef %10, ptr noundef %11) 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} @@ -239,4 +239,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/array_alias_3.c.bc b/test_cases_bc/fs_tests/array_alias_3.c.bc index e06a6977f..2051de948 100644 --- a/test_cases_bc/fs_tests/array_alias_3.c.bc +++ b/test_cases_bc/fs_tests/array_alias_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/array_alias_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/array_alias_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/array_alias_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/array_alias_3.c" +target datalayout = "e-m:e-p270:32:32-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,26 +151,26 @@ entry: %y = 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 %x, ptr %f1, align 16 %arrayidx1 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 + %f2 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 store ptr %y, ptr %f2, align 8 %arrayidx2 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f13 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx2, i32 0, i32 0 + %f13 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx2, i32 0, i32 0 store ptr %y, ptr %f13, align 16 %arrayidx4 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f15 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx4, i32 0, i32 0 + %f15 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx4, i32 0, i32 0 %0 = load ptr, ptr %f15, align 16 %arrayidx6 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f27 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx6, i32 0, i32 1 + %f27 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx6, i32 0, i32 1 %1 = load ptr, ptr %f27, align 8 call void @MUSTALIAS(ptr noundef %0, ptr noundef %1) ret i32 0 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/array_alias_4.c.bc b/test_cases_bc/fs_tests/array_alias_4.c.bc index 670ad62c5..5b8c180a3 100644 --- a/test_cases_bc/fs_tests/array_alias_4.c.bc +++ b/test_cases_bc/fs_tests/array_alias_4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/array_alias_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/array_alias_4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/array_alias_4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/array_alias_4.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -153,10 +153,10 @@ entry: %d = 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 0 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 + %f2 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 store ptr %c, ptr %f2, align 8 %0 = load i32, ptr %a, align 4 %tobool = icmp ne i32 %0, 0 @@ -164,23 +164,23 @@ entry: if.then: ; preds = %entry %arrayidx2 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f13 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx2, i32 0, i32 0 + %f13 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx2, i32 0, i32 0 store ptr %c, ptr %f13, align 16 br label %if.end if.end: ; preds = %if.then, %entry %arrayidx4 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f15 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx4, i32 0, i32 0 + %f15 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx4, i32 0, i32 0 %1 = load ptr, ptr %f15, align 16 %arrayidx6 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f27 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx6, i32 0, i32 1 + %f27 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx6, i32 0, i32 1 %2 = load ptr, ptr %f27, align 8 call void @MAYALIAS(ptr noundef %1, ptr noundef %2) ret i32 0 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/array_alias_5.c.bc b/test_cases_bc/fs_tests/array_alias_5.c.bc index 7de6768d0..bd59462df 100644 --- a/test_cases_bc/fs_tests/array_alias_5.c.bc +++ b/test_cases_bc/fs_tests/array_alias_5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/array_alias_5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/array_alias_5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/array_alias_5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/array_alias_5.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -153,16 +153,16 @@ entry: %d = alloca i32, align 4 store i32 0, ptr %retval, align 4 %arrayidx = getelementptr inbounds [3 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 [3 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 + %f2 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx1, i32 0, i32 1 store ptr %c, ptr %f2, align 8 %arrayidx2 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f13 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx2, i32 0, i32 0 + %f13 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx2, i32 0, i32 0 store ptr %b, ptr %f13, align 16 %arrayidx4 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f25 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx4, i32 0, i32 1 + %f25 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx4, i32 0, i32 1 store ptr %d, ptr %f25, align 8 %0 = load i32, ptr %a, align 4 %tobool = icmp ne i32 %0, 0 @@ -170,23 +170,23 @@ entry: if.then: ; preds = %entry %arrayidx6 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f17 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx6, i32 0, i32 0 + %f17 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx6, i32 0, i32 0 store ptr %c, ptr %f17, align 16 br label %if.end if.end: ; preds = %if.then, %entry %arrayidx8 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f19 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx8, i32 0, i32 0 + %f19 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx8, i32 0, i32 0 %1 = load ptr, ptr %f19, align 16 %arrayidx10 = getelementptr inbounds [3 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f211 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx10, i32 0, i32 1 + %f211 = getelementptr inbounds nuw %struct.MyStruct, ptr %arrayidx10, i32 0, i32 1 %2 = load ptr, ptr %f211, align 8 call void @MAYALIAS(ptr noundef %1, ptr noundef %2) ret i32 0 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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} @@ -196,4 +196,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/branch_1.c.bc b/test_cases_bc/fs_tests/branch_1.c.bc index 922c4184d..5745ecd71 100644 --- a/test_cases_bc/fs_tests/branch_1.c.bc +++ b/test_cases_bc/fs_tests/branch_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/branch_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/branch_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/branch_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/branch_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -169,8 +169,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/branch_2.c.bc b/test_cases_bc/fs_tests/branch_2.c.bc index b52687ca8..e6055464a 100644 --- a/test_cases_bc/fs_tests/branch_2.c.bc +++ b/test_cases_bc/fs_tests/branch_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/branch_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/branch_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/branch_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/branch_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -172,8 +172,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} @@ -183,4 +183,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/branch_3.c.bc b/test_cases_bc/fs_tests/branch_3.c.bc index 2c7871502..45de2dda3 100644 --- a/test_cases_bc/fs_tests/branch_3.c.bc +++ b/test_cases_bc/fs_tests/branch_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/branch_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/branch_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/branch_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/branch_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -178,8 +178,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} @@ -189,4 +189,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/function_pointer.c.bc b/test_cases_bc/fs_tests/function_pointer.c.bc index 0ca4bcc6b..59208d85d 100644 --- a/test_cases_bc/fs_tests/function_pointer.c.bc +++ b/test_cases_bc/fs_tests/function_pointer.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/function_pointer.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/function_pointer.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/function_pointer.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/function_pointer.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -190,8 +190,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/function_pointer_2.c.bc b/test_cases_bc/fs_tests/function_pointer_2.c.bc index bacdbcf44..0874f64b2 100644 --- a/test_cases_bc/fs_tests/function_pointer_2.c.bc +++ b/test_cases_bc/fs_tests/function_pointer_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/function_pointer_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/function_pointer_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/function_pointer_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/function_pointer_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -184,8 +184,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/global_1.c.bc b/test_cases_bc/fs_tests/global_1.c.bc index 214a67db6..fec651fa3 100644 --- a/test_cases_bc/fs_tests/global_1.c.bc +++ b/test_cases_bc/fs_tests/global_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/global_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/global_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/global_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/global_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -178,8 +178,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} @@ -189,4 +189,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/global_2.c.bc b/test_cases_bc/fs_tests/global_2.c.bc index fccc521e1..6b4a82561 100644 --- a/test_cases_bc/fs_tests/global_2.c.bc +++ b/test_cases_bc/fs_tests/global_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/global_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/global_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/global_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/global_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -184,8 +184,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/global_3.c.bc b/test_cases_bc/fs_tests/global_3.c.bc index 88a35d8cb..e54d72cce 100644 --- a/test_cases_bc/fs_tests/global_3.c.bc +++ b/test_cases_bc/fs_tests/global_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/global_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/global_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/global_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/global_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -177,8 +177,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} @@ -188,4 +188,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/global_4.c.bc b/test_cases_bc/fs_tests/global_4.c.bc index 385475fec..e8acbdd87 100644 --- a/test_cases_bc/fs_tests/global_4.c.bc +++ b/test_cases_bc/fs_tests/global_4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/global_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/global_4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/global_4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/global_4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -187,8 +187,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} @@ -198,4 +198,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/global_5.c.bc b/test_cases_bc/fs_tests/global_5.c.bc index 7a7efda18..3544b3df6 100644 --- a/test_cases_bc/fs_tests/global_5.c.bc +++ b/test_cases_bc/fs_tests/global_5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/global_5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/global_5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/global_5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/global_5.c" +target datalayout = "e-m:e-p270:32:32-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/pcycle1.c.bc b/test_cases_bc/fs_tests/pcycle1.c.bc index 4c28433df..b44a38403 100644 --- a/test_cases_bc/fs_tests/pcycle1.c.bc +++ b/test_cases_bc/fs_tests/pcycle1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/pcycle1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/pcycle1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/pcycle1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/pcycle1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -172,8 +172,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} @@ -183,4 +183,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/pcycle2.c.bc b/test_cases_bc/fs_tests/pcycle2.c.bc index 29ff99ff7..29fc20640 100644 --- a/test_cases_bc/fs_tests/pcycle2.c.bc +++ b/test_cases_bc/fs_tests/pcycle2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/pcycle2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/pcycle2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/pcycle2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/pcycle2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -161,8 +161,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} @@ -172,4 +172,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/return.c.bc b/test_cases_bc/fs_tests/return.c.bc index 5e735055f..b1cf88cc3 100644 --- a/test_cases_bc/fs_tests/return.c.bc +++ b/test_cases_bc/fs_tests/return.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/return.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/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/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/return.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/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" @.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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/simple_1.c.bc b/test_cases_bc/fs_tests/simple_1.c.bc index 4ad63613d..443061729 100644 --- a/test_cases_bc/fs_tests/simple_1.c.bc +++ b/test_cases_bc/fs_tests/simple_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/simple_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/simple_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/simple_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/simple_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -162,8 +162,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} @@ -173,4 +173,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/simple_2.c.bc b/test_cases_bc/fs_tests/simple_2.c.bc index 3223b937e..76ee4ce0b 100644 --- a/test_cases_bc/fs_tests/simple_2.c.bc +++ b/test_cases_bc/fs_tests/simple_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/simple_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/simple_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/simple_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/simple_2.c" +target datalayout = "e-m:e-p270:32:32-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,8 +170,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/simple_3.c.bc b/test_cases_bc/fs_tests/simple_3.c.bc index 344b31608..132e36ae2 100644 --- a/test_cases_bc/fs_tests/simple_3.c.bc +++ b/test_cases_bc/fs_tests/simple_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/simple_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/simple_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/simple_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/simple_3.c" +target datalayout = "e-m:e-p270:32:32-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/strong_update.c.bc b/test_cases_bc/fs_tests/strong_update.c.bc index 1306eec79..cebf81628 100644 --- a/test_cases_bc/fs_tests/strong_update.c.bc +++ b/test_cases_bc/fs_tests/strong_update.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/strong_update.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/strong_update.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/strong_update.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/strong_update.c" +target datalayout = "e-m:e-p270:32:32-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/struct_1.c.bc b/test_cases_bc/fs_tests/struct_1.c.bc index 783fc4d4c..1f507e59f 100644 --- a/test_cases_bc/fs_tests/struct_1.c.bc +++ b/test_cases_bc/fs_tests/struct_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/struct_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/struct_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/struct_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/struct_1.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -146,41 +146,41 @@ declare i32 @getchar() #1 define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %s1 = alloca %struct.MyStruct, align 8 - %s2 = alloca %struct.MyStruct, align 8 + %s1 = alloca %struct.MyStruct, align 1 + %s2 = alloca %struct.MyStruct, align 1 %x = alloca i32, align 4 %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - store ptr %x, ptr %f1, align 8 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 1 - store ptr %y, ptr %f2, align 8 - %f11 = getelementptr inbounds %struct.MyStruct, ptr %s2, i32 0, i32 0 - store ptr %y, ptr %f11, align 8 - %f22 = getelementptr inbounds %struct.MyStruct, ptr %s2, i32 0, i32 1 - store ptr %x, ptr %f22, align 8 - %f13 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - %0 = load ptr, ptr %f13, align 8 - %f24 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 1 - %1 = load ptr, ptr %f24, align 8 + %f1 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + store ptr %x, ptr %f1, align 1 + %f2 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 1 + store ptr %y, ptr %f2, align 1 + %f11 = getelementptr inbounds nuw %struct.MyStruct, ptr %s2, i32 0, i32 0 + store ptr %y, ptr %f11, align 1 + %f22 = getelementptr inbounds nuw %struct.MyStruct, ptr %s2, i32 0, i32 1 + store ptr %x, ptr %f22, align 1 + %f13 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + %0 = load ptr, ptr %f13, align 1 + %f24 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 1 + %1 = load ptr, ptr %f24, align 1 call void @NOALIAS(ptr noundef %0, ptr noundef %1) - %f15 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - %2 = load ptr, ptr %f15, align 8 - %f16 = getelementptr inbounds %struct.MyStruct, ptr %s2, i32 0, i32 0 - %3 = load ptr, ptr %f16, align 8 + %f15 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + %2 = load ptr, ptr %f15, align 1 + %f16 = getelementptr inbounds nuw %struct.MyStruct, ptr %s2, i32 0, i32 0 + %3 = load ptr, ptr %f16, align 1 call void @NOALIAS(ptr noundef %2, ptr noundef %3) - %f17 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - store ptr %y, ptr %f17, align 8 - %f18 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - %4 = load ptr, ptr %f18, align 8 - %f19 = getelementptr inbounds %struct.MyStruct, ptr %s2, i32 0, i32 0 - %5 = load ptr, ptr %f19, align 8 + %f17 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + store ptr %y, ptr %f17, align 1 + %f18 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + %4 = load ptr, ptr %f18, align 1 + %f19 = getelementptr inbounds nuw %struct.MyStruct, ptr %s2, i32 0, i32 0 + %5 = load ptr, ptr %f19, align 1 call void @MUSTALIAS(ptr noundef %4, ptr noundef %5) ret i32 0 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/struct_2.c.bc b/test_cases_bc/fs_tests/struct_2.c.bc index 47217ffd7..57baa6ab3 100644 --- a/test_cases_bc/fs_tests/struct_2.c.bc +++ b/test_cases_bc/fs_tests/struct_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/struct_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/struct_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/struct_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/struct_2.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -146,41 +146,41 @@ declare i32 @getchar() #1 define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 - %s1 = alloca %struct.MyStruct, align 8 - %s2 = alloca %struct.MyStruct, align 8 + %s1 = alloca %struct.MyStruct, align 1 + %s2 = alloca %struct.MyStruct, align 1 %x = alloca i32, align 4 %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - store ptr %x, ptr %f1, align 8 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 1 - store ptr %y, ptr %f2, align 8 - %f11 = getelementptr inbounds %struct.MyStruct, ptr %s2, i32 0, i32 0 - store ptr %y, ptr %f11, align 8 - %f22 = getelementptr inbounds %struct.MyStruct, ptr %s2, i32 0, i32 1 - store ptr %x, ptr %f22, align 8 - %f13 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - %0 = load ptr, ptr %f13, align 8 - %f24 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 1 - %1 = load ptr, ptr %f24, align 8 + %f1 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + store ptr %x, ptr %f1, align 1 + %f2 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 1 + store ptr %y, ptr %f2, align 1 + %f11 = getelementptr inbounds nuw %struct.MyStruct, ptr %s2, i32 0, i32 0 + store ptr %y, ptr %f11, align 1 + %f22 = getelementptr inbounds nuw %struct.MyStruct, ptr %s2, i32 0, i32 1 + store ptr %x, ptr %f22, align 1 + %f13 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + %0 = load ptr, ptr %f13, align 1 + %f24 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 1 + %1 = load ptr, ptr %f24, align 1 call void @NOALIAS(ptr noundef %0, ptr noundef %1) - %f15 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - %2 = load ptr, ptr %f15, align 8 - %f16 = getelementptr inbounds %struct.MyStruct, ptr %s2, i32 0, i32 0 - %3 = load ptr, ptr %f16, align 8 + %f15 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + %2 = load ptr, ptr %f15, align 1 + %f16 = getelementptr inbounds nuw %struct.MyStruct, ptr %s2, i32 0, i32 0 + %3 = load ptr, ptr %f16, align 1 call void @NOALIAS(ptr noundef %2, ptr noundef %3) - %f17 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - store ptr %y, ptr %f17, align 8 - %f18 = getelementptr inbounds %struct.MyStruct, ptr %s1, i32 0, i32 0 - %4 = load ptr, ptr %f18, align 8 - %f19 = getelementptr inbounds %struct.MyStruct, ptr %s2, i32 0, i32 0 - %5 = load ptr, ptr %f19, align 8 + %f17 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + store ptr %y, ptr %f17, align 1 + %f18 = getelementptr inbounds nuw %struct.MyStruct, ptr %s1, i32 0, i32 0 + %4 = load ptr, ptr %f18, align 1 + %f19 = getelementptr inbounds nuw %struct.MyStruct, ptr %s2, i32 0, i32 0 + %5 = load ptr, ptr %f19, align 1 call void @MUSTALIAS(ptr noundef %4, ptr noundef %5) ret i32 0 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/test-su.c.bc b/test_cases_bc/fs_tests/test-su.c.bc index b071da49c..987209f71 100644 --- a/test_cases_bc/fs_tests/test-su.c.bc +++ b/test_cases_bc/fs_tests/test-su.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/test-su.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/test-su.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/test-su.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/test-su.c" +target datalayout = "e-m:e-p270:32:32-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/fs_tests/tt.c.bc b/test_cases_bc/fs_tests/tt.c.bc index 28876df04..bac9c3857 100644 --- a/test_cases_bc/fs_tests/tt.c.bc +++ b/test_cases_bc/fs_tests/tt.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/fs_tests/tt.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/fs_tests/tt.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/fs_tests/tt.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/fs_tests/tt.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -16,8 +16,8 @@ entry: 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} @@ -27,4 +27,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mem_leak/malloc0.c.bc b/test_cases_bc/mem_leak/malloc0.c.bc index 2350d3102..1f8491c5f 100644 --- a/test_cases_bc/mem_leak/malloc0.c.bc +++ b/test_cases_bc/mem_leak/malloc0.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc0.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc0.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc0.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,13 +96,13 @@ entry: %a = alloca ptr, align 8 %b = alloca ptr, align 8 %k = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %a, metadata !62, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %a, !62, !DIExpression(), !64) %call = call ptr @NFRMALLOC(i32 noundef 4), !dbg !65 store ptr %call, ptr %a, align 8, !dbg !64 - call void @llvm.dbg.declare(metadata ptr %b, metadata !66, metadata !DIExpression()), !dbg !67 + #dbg_declare(ptr %b, !66, !DIExpression(), !67) %call1 = call ptr @NFRMALLOC(i32 noundef 4), !dbg !68 store ptr %call1, ptr %b, align 8, !dbg !67 - call void @llvm.dbg.declare(metadata ptr %k, metadata !69, metadata !DIExpression()), !dbg !70 + #dbg_declare(ptr %k, !69, !DIExpression(), !70) %0 = load ptr, ptr %a, align 8, !dbg !71 store ptr %0, ptr %k, align 8, !dbg !70 %1 = load ptr, ptr %b, align 8, !dbg !72 @@ -126,9 +123,9 @@ entry: %a.addr = alloca ptr, align 8 %b.addr = alloca ptr, align 8 store ptr %a, ptr %a.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !85, metadata !DIExpression()), !dbg !86 + #dbg_declare(ptr %a.addr, !85, !DIExpression(), !86) store ptr %b, ptr %b.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !87, metadata !DIExpression()), !dbg !88 + #dbg_declare(ptr %b.addr, !87, !DIExpression(), !88) %0 = load ptr, ptr %a.addr, align 8, !dbg !89 store i32 300, ptr %0, align 4, !dbg !90 %1 = load ptr, ptr %b.addr, align 8, !dbg !91 @@ -136,17 +133,16 @@ entry: ret void, !dbg !93 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 allocsize(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"="+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.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/mem_leak/malloc0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e7cb2b7e939770647742a9f673685b5c") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc0.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "e7cb2b7e939770647742a9f673685b5c") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -154,9 +150,9 @@ attributes #3 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -204,7 +200,7 @@ attributes #3 = { nounwind allocsize(0) } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e7cb2b7e939770647742a9f673685b5c") +!59 = !DIFile(filename: "src/mem_leak/malloc0.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "e7cb2b7e939770647742a9f673685b5c") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "a", scope: !58, file: !59, line: 12, type: !63) diff --git a/test_cases_bc/mem_leak/malloc1.c.bc b/test_cases_bc/mem_leak/malloc1.c.bc index 7ddbee864..33915d61d 100644 --- a/test_cases_bc/mem_leak/malloc1.c.bc +++ b/test_cases_bc/mem_leak/malloc1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc1.c" +target datalayout = "e-m:e-p270:32:32-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 [13 x i8] c"%d,%d,%d,%d,\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -100,8 +97,8 @@ define dso_local i32 @main() #0 !dbg !66 { entry: %k = alloca ptr, align 8 %a = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %k, metadata !69, metadata !DIExpression()), !dbg !71 - call void @llvm.dbg.declare(metadata ptr %a, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %k, !69, !DIExpression(), !71) + #dbg_declare(ptr %a, !72, !DIExpression(), !73) %call = call ptr @SAFEMALLOC(i32 noundef 4), !dbg !74 store ptr %call, ptr %a, align 8, !dbg !73 %0 = load ptr, ptr %a, align 8, !dbg !75 @@ -116,22 +113,21 @@ entry: %7 = load ptr, ptr %k, align 8, !dbg !84 %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %3, i32 noundef %5, ptr noundef %6, ptr noundef %7), !dbg !85 %8 = load ptr, ptr %a, align 8, !dbg !86 - call void @free(ptr noundef %8) #6, !dbg !87 + call void @free(ptr noundef %8) #5, !dbg !87 ret i32 0, !dbg !88 } -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +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 allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0) } -attributes #6 = { nounwind } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -139,13 +135,13 @@ attributes #6 = { 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/mem_leak/malloc1.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a5a9d73a6531064107323c22c9afad3e") +!2 = !DIFile(filename: "src/mem_leak/malloc1.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a5a9d73a6531064107323c22c9afad3e") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 104, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 13) -!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/mem_leak/malloc1.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a5a9d73a6531064107323c22c9afad3e") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc1.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a5a9d73a6531064107323c22c9afad3e") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -154,9 +150,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc10.c.bc b/test_cases_bc/mem_leak/malloc10.c.bc index 8a571edf5..7d381ce3f 100644 --- a/test_cases_bc/mem_leak/malloc10.c.bc +++ b/test_cases_bc/mem_leak/malloc10.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc10.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc10.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc10.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc10.c" +target datalayout = "e-m:e-p270:32:32-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_rr_node = type { i16, i16, i16, i16, i16, i16, ptr, ptr, float, float } @@ -12,28 +12,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -42,10 +39,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -54,10 +51,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -66,10 +63,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -78,10 +75,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -90,10 +87,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -102,10 +99,10 @@ define dso_local i32 @main() #0 !dbg !66 { entry: %rr_node = alloca ptr, align 8 %i = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %rr_node, metadata !69, metadata !DIExpression()), !dbg !88 + #dbg_declare(ptr %rr_node, !69, !DIExpression(), !88) %call = call ptr @SAFEMALLOC(i32 noundef 400), !dbg !89 store ptr %call, ptr %rr_node, align 8, !dbg !90 - call void @llvm.dbg.declare(metadata ptr %i, metadata !91, metadata !DIExpression()), !dbg !92 + #dbg_declare(ptr %i, !91, !DIExpression(), !92) %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !93 %0 = load ptr, ptr %rr_node, align 8, !dbg !94 %1 = load i32, ptr %i, align 4, !dbg !95 @@ -115,27 +112,26 @@ entry: %3 = load i32, ptr %i, align 4, !dbg !96 %idxprom2 = sext i32 %3 to i64, !dbg !94 %arrayidx3 = getelementptr inbounds %struct.s_rr_node, ptr %2, i64 %idxprom2, !dbg !94 - %edges = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx3, i32 0, i32 6, !dbg !97 + %edges = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx3, i32 0, i32 6, !dbg !97 store ptr %call1, ptr %edges, align 8, !dbg !98 %4 = load ptr, ptr %rr_node, align 8, !dbg !99 - call void @free(ptr noundef %4) #6, !dbg !100 + call void @free(ptr noundef %4) #5, !dbg !100 %5 = load ptr, ptr %rr_node, align 8, !dbg !101 %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %5), !dbg !102 ret i32 0, !dbg !103 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 -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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -143,13 +139,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 24, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc10.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "89e9bd574aaf068c00db3b6d6181d8ca") +!2 = !DIFile(filename: "src/mem_leak/malloc10.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "89e9bd574aaf068c00db3b6d6181d8ca") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc10.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "89e9bd574aaf068c00db3b6d6181d8ca") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc10.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "89e9bd574aaf068c00db3b6d6181d8ca") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -158,9 +154,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc11.c.bc b/test_cases_bc/mem_leak/malloc11.c.bc index 445ef7d5f..d64628f83 100644 --- a/test_cases_bc/mem_leak/malloc11.c.bc +++ b/test_cases_bc/mem_leak/malloc11.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc11.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc11.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc11.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc11.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -98,54 +95,53 @@ define dso_local ptr @allocation() #0 !dbg !58 { entry: %retval = alloca ptr, align 8 %k = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %k, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %k, !63, !DIExpression(), !64) %0 = load i32, ptr %k, align 4, !dbg !65 %cmp = icmp slt i32 %0, 0, !dbg !67 - br i1 %cmp, label %if.then, label %if.else, !dbg !68 + br i1 %cmp, label %if.then, label %if.else, !dbg !67 if.then: ; preds = %entry - %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !69 - store ptr %call, ptr %retval, align 8, !dbg !70 - br label %return, !dbg !70 + %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !68 + store ptr %call, ptr %retval, align 8, !dbg !69 + br label %return, !dbg !69 if.else: ; preds = %entry - %call1 = call ptr @SAFEMALLOC(i32 noundef 2), !dbg !71 - store ptr %call1, ptr %retval, align 8, !dbg !72 - br label %return, !dbg !72 + %call1 = call ptr @SAFEMALLOC(i32 noundef 2), !dbg !70 + store ptr %call1, ptr %retval, align 8, !dbg !71 + br label %return, !dbg !71 return: ; preds = %if.else, %if.then - %1 = load ptr, ptr %retval, align 8, !dbg !73 - ret ptr %1, !dbg !73 + %1 = load ptr, ptr %retval, align 8, !dbg !72 + ret ptr %1, !dbg !72 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !74 { +define dso_local i32 @main() #0 !dbg !73 { entry: %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !77, metadata !DIExpression()), !dbg !78 - %call = call ptr @allocation(), !dbg !79 - store ptr %call, ptr %p, align 8, !dbg !78 - %0 = load ptr, ptr %p, align 8, !dbg !80 - call void @free(ptr noundef %0) #5, !dbg !81 - ret i32 0, !dbg !82 + #dbg_declare(ptr %p, !76, !DIExpression(), !77) + %call = call ptr @allocation(), !dbg !78 + store ptr %call, ptr %p, align 8, !dbg !77 + %0 = load ptr, ptr %p, align 8, !dbg !79 + call void @free(ptr noundef %0) #4, !dbg !80 + ret i32 0, !dbg !81 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc11.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d0f52430e5d9a4dd94a88e347e5c6294") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc11.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "d0f52430e5d9a4dd94a88e347e5c6294") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -153,9 +149,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -203,7 +199,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "allocation", scope: !59, file: !59, line: 9, type: !60, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc11.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d0f52430e5d9a4dd94a88e347e5c6294") +!59 = !DIFile(filename: "src/mem_leak/malloc11.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "d0f52430e5d9a4dd94a88e347e5c6294") !60 = !DISubroutineType(types: !61) !61 = !{!62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -212,18 +208,17 @@ attributes #5 = { nounwind } !65 = !DILocation(line: 11, column: 5, scope: !66) !66 = distinct !DILexicalBlock(scope: !58, file: !59, line: 11, column: 5) !67 = !DILocation(line: 11, column: 6, scope: !66) -!68 = !DILocation(line: 11, column: 5, scope: !58) -!69 = !DILocation(line: 12, column: 10, scope: !66) -!70 = !DILocation(line: 12, column: 3, scope: !66) -!71 = !DILocation(line: 14, column: 10, scope: !66) -!72 = !DILocation(line: 14, column: 3, scope: !66) -!73 = !DILocation(line: 16, column: 1, scope: !58) -!74 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 18, type: !75, scopeLine: 18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!75 = !DISubroutineType(types: !76) -!76 = !{!15} -!77 = !DILocalVariable(name: "p", scope: !74, file: !59, line: 20, type: !62) -!78 = !DILocation(line: 20, column: 7, scope: !74) -!79 = !DILocation(line: 20, column: 11, scope: !74) -!80 = !DILocation(line: 21, column: 7, scope: !74) -!81 = !DILocation(line: 21, column: 2, scope: !74) -!82 = !DILocation(line: 22, column: 1, scope: !74) +!68 = !DILocation(line: 12, column: 10, scope: !66) +!69 = !DILocation(line: 12, column: 3, scope: !66) +!70 = !DILocation(line: 14, column: 10, scope: !66) +!71 = !DILocation(line: 14, column: 3, scope: !66) +!72 = !DILocation(line: 16, column: 1, scope: !58) +!73 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 18, type: !74, scopeLine: 18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!74 = !DISubroutineType(types: !75) +!75 = !{!15} +!76 = !DILocalVariable(name: "p", scope: !73, file: !59, line: 20, type: !62) +!77 = !DILocation(line: 20, column: 7, scope: !73) +!78 = !DILocation(line: 20, column: 11, scope: !73) +!79 = !DILocation(line: 21, column: 7, scope: !73) +!80 = !DILocation(line: 21, column: 2, scope: !73) +!81 = !DILocation(line: 22, column: 1, scope: !73) diff --git a/test_cases_bc/mem_leak/malloc12.c.bc b/test_cases_bc/mem_leak/malloc12.c.bc index 44d6d160e..86187ecc2 100644 --- a/test_cases_bc/mem_leak/malloc12.c.bc +++ b/test_cases_bc/mem_leak/malloc12.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc12.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc12.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc12.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc12.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -106,44 +103,43 @@ entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !68, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %p, !68, !DIExpression(), !69) %0 = load ptr, ptr %p, align 8, !dbg !70 %tobool = icmp ne ptr %0, null, !dbg !70 - br i1 %tobool, label %if.then, label %if.else, !dbg !72 + br i1 %tobool, label %if.then, label %if.else, !dbg !70 if.then: ; preds = %entry - %call = call ptr @allocation(), !dbg !73 - store ptr %call, ptr %p, align 8, !dbg !74 - br label %if.end, !dbg !75 + %call = call ptr @allocation(), !dbg !72 + store ptr %call, ptr %p, align 8, !dbg !73 + br label %if.end, !dbg !74 if.else: ; preds = %entry - %call1 = call ptr @allocation(), !dbg !76 - store ptr %call1, ptr %p, align 8, !dbg !77 + %call1 = call ptr @allocation(), !dbg !75 + store ptr %call1, ptr %p, align 8, !dbg !76 br label %if.end if.end: ; preds = %if.else, %if.then - %1 = load ptr, ptr %p, align 8, !dbg !78 - call void @free(ptr noundef %1) #5, !dbg !79 - %2 = load i32, ptr %retval, align 4, !dbg !80 - ret i32 %2, !dbg !80 + %1 = load ptr, ptr %p, align 8, !dbg !77 + call void @free(ptr noundef %1) #4, !dbg !78 + %2 = load i32, ptr %retval, align 4, !dbg !79 + ret i32 %2, !dbg !79 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc12.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0a73a208634f56ca2368ffe8710d884a") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc12.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "0a73a208634f56ca2368ffe8710d884a") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -151,9 +147,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -200,8 +196,8 @@ attributes #5 = { nounwind } !55 = !DILocation(line: 30, column: 17, scope: !52) !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) -!58 = distinct !DISubprogram(name: "allocation", scope: !59, file: !59, line: 9, type: !60, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc12.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0a73a208634f56ca2368ffe8710d884a") +!58 = distinct !DISubprogram(name: "allocation", scope: !59, file: !59, line: 9, type: !60, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0) +!59 = !DIFile(filename: "src/mem_leak/malloc12.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "0a73a208634f56ca2368ffe8710d884a") !60 = !DISubroutineType(types: !61) !61 = !{!62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -214,12 +210,11 @@ attributes #5 = { nounwind } !69 = !DILocation(line: 16, column: 7, scope: !65) !70 = !DILocation(line: 17, column: 7, scope: !71) !71 = distinct !DILexicalBlock(scope: !65, file: !59, line: 17, column: 7) -!72 = !DILocation(line: 17, column: 7, scope: !65) -!73 = !DILocation(line: 18, column: 8, scope: !71) -!74 = !DILocation(line: 18, column: 6, scope: !71) -!75 = !DILocation(line: 18, column: 5, scope: !71) -!76 = !DILocation(line: 20, column: 6, scope: !71) -!77 = !DILocation(line: 20, column: 4, scope: !71) -!78 = !DILocation(line: 21, column: 7, scope: !65) -!79 = !DILocation(line: 21, column: 2, scope: !65) -!80 = !DILocation(line: 22, column: 1, scope: !65) +!72 = !DILocation(line: 18, column: 8, scope: !71) +!73 = !DILocation(line: 18, column: 6, scope: !71) +!74 = !DILocation(line: 18, column: 5, scope: !71) +!75 = !DILocation(line: 20, column: 6, scope: !71) +!76 = !DILocation(line: 20, column: 4, scope: !71) +!77 = !DILocation(line: 21, column: 7, scope: !65) +!78 = !DILocation(line: 21, column: 2, scope: !65) +!79 = !DILocation(line: 22, column: 1, scope: !65) diff --git a/test_cases_bc/mem_leak/malloc13.c.bc b/test_cases_bc/mem_leak/malloc13.c.bc index d4cd19c09..60f2333e5 100644 --- a/test_cases_bc/mem_leak/malloc13.c.bc +++ b/test_cases_bc/mem_leak/malloc13.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc13.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc13.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc13.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc13.c" +target datalayout = "e-m:e-p270:32:32-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 [100 x ptr] zeroinitializer, align 16, !dbg !0 @.str = private unnamed_addr constant [3 x i8] c"%d\00", align 1, !dbg !5 @@ -11,28 +11,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !25 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !34 ret ptr %call, !dbg !35 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !40 ret ptr %call, !dbg !41 } @@ -41,10 +38,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !46 ret ptr %call, !dbg !47 } @@ -53,10 +50,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !52 ret ptr %call, !dbg !53 } @@ -65,10 +62,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !58 ret ptr %call, !dbg !59 } @@ -77,10 +74,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !64 ret ptr %call, !dbg !65 } @@ -89,10 +86,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !66 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %n.addr, !67, !DIExpression(), !68) %0 = load i32, ptr %n.addr, align 4, !dbg !69 %conv = sext i32 %0 to i64, !dbg !69 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !70 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !70 ret ptr %call, !dbg !71 } @@ -100,7 +97,7 @@ entry: define dso_local i32 @main() #0 !dbg !72 { entry: %i = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %i, !75, !DIExpression(), !76) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !77 %0 = load i32, ptr %i, align 4, !dbg !78 %idxprom = sext i32 %0 to i64, !dbg !79 @@ -114,13 +111,12 @@ entry: ret i32 0, !dbg !84 } -declare i32 @printf(ptr noundef, ...) #3 +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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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.dbg.cu = !{!2} !llvm.module.flags = !{!17, !18, !19, !20, !21, !22, !23} @@ -128,12 +124,12 @@ attributes #4 = { nounwind allocsize(0) } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !7, line: 9, type: !12, 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/mem_leak/malloc13.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "773c86d05ea0566a3ff4b01c4d3b55c6") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc13.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "773c86d05ea0566a3ff4b01c4d3b55c6") !4 = !{!5, !0} !5 = !DIGlobalVariableExpression(var: !6, expr: !DIExpression()) !6 = distinct !DIGlobalVariable(scope: null, file: !7, line: 15, type: !8, isLocal: true, isDefinition: true) -!7 = !DIFile(filename: "src/mem_leak/malloc13.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "773c86d05ea0566a3ff4b01c4d3b55c6") +!7 = !DIFile(filename: "src/mem_leak/malloc13.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "773c86d05ea0566a3ff4b01c4d3b55c6") !8 = !DICompositeType(tag: DW_TAG_array_type, baseType: !9, size: 24, elements: !10) !9 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !10 = !{!11} @@ -150,9 +146,9 @@ attributes #4 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !25 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !26, file: !26, line: 5, type: !27, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !30) -!26 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!26 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !27 = !DISubroutineType(types: !28) !28 = !{!29, !14} !29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc14.c.bc b/test_cases_bc/mem_leak/malloc14.c.bc index 00e322e9f..40ea17d35 100644 --- a/test_cases_bc/mem_leak/malloc14.c.bc +++ b/test_cases_bc/mem_leak/malloc14.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc14.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc14.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc14.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc14.c" +target datalayout = "e-m:e-p270:32:32-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 [5 x i8] c"%d%d\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !64 ret ptr %call, !dbg !65 } @@ -101,11 +98,11 @@ entry: %p = alloca ptr, align 8 %i = alloca i32, align 4 %q = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !69, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %p, !69, !DIExpression(), !71) %call = call ptr @NFRMALLOC(i32 noundef 1), !dbg !72 store ptr %call, ptr %p, align 8, !dbg !71 - call void @llvm.dbg.declare(metadata ptr %i, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %q, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %i, !73, !DIExpression(), !74) + #dbg_declare(ptr %q, !75, !DIExpression(), !76) %0 = load ptr, ptr %p, align 8, !dbg !77 %1 = load i32, ptr %i, align 4, !dbg !78 %idx.ext = sext i32 %1 to i64, !dbg !79 @@ -117,13 +114,12 @@ entry: ret i32 0, !dbg !84 } -declare i32 @printf(ptr noundef, ...) #3 +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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -131,13 +127,13 @@ attributes #4 = { nounwind allocsize(0) } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 15, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc14.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3293c2f2c8d00a34681b947de18921e2") +!2 = !DIFile(filename: "src/mem_leak/malloc14.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "3293c2f2c8d00a34681b947de18921e2") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 5) -!7 = 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/mem_leak/malloc14.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3293c2f2c8d00a34681b947de18921e2") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc14.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "3293c2f2c8d00a34681b947de18921e2") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -146,9 +142,9 @@ attributes #4 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc15.c.bc b/test_cases_bc/mem_leak/malloc15.c.bc index 1b3b3bedf..9fa68e03d 100644 --- a/test_cases_bc/mem_leak/malloc15.c.bc +++ b/test_cases_bc/mem_leak/malloc15.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc15.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc15.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc15.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc15.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !56 ret ptr %call, !dbg !57 } @@ -104,23 +101,22 @@ entry: define dso_local i32 @main() #0 !dbg !65 { entry: %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !68, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %p, !68, !DIExpression(), !69) %call = call ptr @foo(), !dbg !70 store ptr %call, ptr %p, align 8, !dbg !69 ret i32 0, !dbg !71 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 allocsize(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"="+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.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/mem_leak/malloc15.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "42b4911f7ec28a4aa311f53deb9ff4fc") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc15.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "42b4911f7ec28a4aa311f53deb9ff4fc") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -128,9 +124,9 @@ attributes #3 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -177,8 +173,8 @@ attributes #3 = { nounwind allocsize(0) } !55 = !DILocation(line: 30, column: 17, scope: !52) !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) -!58 = distinct !DISubprogram(name: "foo", scope: !59, file: !59, line: 9, type: !60, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc15.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "42b4911f7ec28a4aa311f53deb9ff4fc") +!58 = distinct !DISubprogram(name: "foo", scope: !59, file: !59, line: 9, type: !60, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0) +!59 = !DIFile(filename: "src/mem_leak/malloc15.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "42b4911f7ec28a4aa311f53deb9ff4fc") !60 = !DISubroutineType(types: !61) !61 = !{!62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) diff --git a/test_cases_bc/mem_leak/malloc16.c.bc b/test_cases_bc/mem_leak/malloc16.c.bc index c61f35421..f118344e9 100644 --- a/test_cases_bc/mem_leak/malloc16.c.bc +++ b/test_cases_bc/mem_leak/malloc16.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc16.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc16.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc16.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc16.c" +target datalayout = "e-m:e-p270:32:32-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.FOO = type { ptr, ptr, ptr } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !13 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !19, metadata !DIExpression()), !dbg !20 + #dbg_declare(ptr %n.addr, !19, !DIExpression(), !20) %0 = load i32, ptr %n.addr, align 4, !dbg !21 %conv = sext i32 %0 to i64, !dbg !21 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !22 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !22 ret ptr %call, !dbg !23 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !24 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !28 ret ptr %call, !dbg !29 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !34 ret ptr %call, !dbg !35 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !40 ret ptr %call, !dbg !41 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !46 ret ptr %call, !dbg !47 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !52 ret ptr %call, !dbg !53 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !58 ret ptr %call, !dbg !59 } @@ -100,42 +97,42 @@ define dso_local void @getfree(ptr noundef %net) #0 !dbg !60 { entry: %net.addr = alloca ptr, align 8 store ptr %net, ptr %net.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %net.addr, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %net.addr, !71, !DIExpression(), !72) %0 = load ptr, ptr %net.addr, align 8, !dbg !73 - %f1 = getelementptr inbounds %struct.FOO, ptr %0, i32 0, i32 0, !dbg !74 + %f1 = getelementptr inbounds nuw %struct.FOO, ptr %0, i32 0, i32 0, !dbg !74 %1 = load ptr, ptr %f1, align 8, !dbg !74 - call void @free(ptr noundef %1) #5, !dbg !75 + call void @free(ptr noundef %1) #4, !dbg !75 %2 = load ptr, ptr %net.addr, align 8, !dbg !76 - %f2 = getelementptr inbounds %struct.FOO, ptr %2, i32 0, i32 1, !dbg !77 + %f2 = getelementptr inbounds nuw %struct.FOO, ptr %2, i32 0, i32 1, !dbg !77 %3 = load ptr, ptr %f2, align 8, !dbg !77 - call void @free(ptr noundef %3) #5, !dbg !78 + call void @free(ptr noundef %3) #4, !dbg !78 %4 = load ptr, ptr %net.addr, align 8, !dbg !79 - %f3 = getelementptr inbounds %struct.FOO, ptr %4, i32 0, i32 2, !dbg !80 + %f3 = getelementptr inbounds nuw %struct.FOO, ptr %4, i32 0, i32 2, !dbg !80 %5 = load ptr, ptr %f3, align 8, !dbg !80 - call void @free(ptr noundef %5) #5, !dbg !81 + call void @free(ptr noundef %5) #4, !dbg !81 ret void, !dbg !82 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @readmin(ptr noundef %net1) #0 !dbg !83 { entry: %net1.addr = alloca ptr, align 8 store ptr %net1, ptr %net1.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %net1.addr, metadata !84, metadata !DIExpression()), !dbg !85 + #dbg_declare(ptr %net1.addr, !84, !DIExpression(), !85) %call = call ptr @SAFEMALLOC(i32 noundef 4), !dbg !86 %0 = load ptr, ptr %net1.addr, align 8, !dbg !87 - %f1 = getelementptr inbounds %struct.FOO, ptr %0, i32 0, i32 0, !dbg !88 + %f1 = getelementptr inbounds nuw %struct.FOO, ptr %0, i32 0, i32 0, !dbg !88 store ptr %call, ptr %f1, align 8, !dbg !89 %call1 = call ptr @SAFEMALLOC(i32 noundef 2), !dbg !90 %1 = load ptr, ptr %net1.addr, align 8, !dbg !91 - %f2 = getelementptr inbounds %struct.FOO, ptr %1, i32 0, i32 1, !dbg !92 + %f2 = getelementptr inbounds nuw %struct.FOO, ptr %1, i32 0, i32 1, !dbg !92 store ptr %call1, ptr %f2, align 8, !dbg !93 %call2 = call ptr @SAFEMALLOC(i32 noundef 3), !dbg !94 %2 = load ptr, ptr %net1.addr, align 8, !dbg !95 - %f3 = getelementptr inbounds %struct.FOO, ptr %2, i32 0, i32 2, !dbg !96 + %f3 = getelementptr inbounds nuw %struct.FOO, ptr %2, i32 0, i32 2, !dbg !96 store ptr %call2, ptr %f3, align 8, !dbg !97 ret void, !dbg !98 } @@ -144,25 +141,24 @@ entry: define dso_local i32 @main() #0 !dbg !99 { entry: %net = alloca %struct.FOO, align 8 - call void @llvm.dbg.declare(metadata ptr %net, metadata !102, metadata !DIExpression()), !dbg !103 + #dbg_declare(ptr %net, !102, !DIExpression(), !103) call void @readmin(ptr noundef %net), !dbg !104 call void @getfree(ptr noundef %net), !dbg !105 ret i32 0, !dbg !106 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +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/mem_leak/malloc16.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7413256decbfa61bd4e5c92078e69254") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc16.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7413256decbfa61bd4e5c92078e69254") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -173,9 +169,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !13 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !14, file: !14, line: 5, type: !15, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!14 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!14 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !15 = !DISubroutineType(types: !16) !16 = !{!17, !4} !17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -222,7 +218,7 @@ attributes #5 = { nounwind } !58 = !DILocation(line: 30, column: 10, scope: !54) !59 = !DILocation(line: 30, column: 3, scope: !54) !60 = distinct !DISubprogram(name: "getfree", scope: !61, file: !61, line: 19, type: !62, scopeLine: 19, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!61 = !DIFile(filename: "src/mem_leak/malloc16.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7413256decbfa61bd4e5c92078e69254") +!61 = !DIFile(filename: "src/mem_leak/malloc16.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7413256decbfa61bd4e5c92078e69254") !62 = !DISubroutineType(types: !63) !63 = !{null, !64} !64 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !65, size: 64) diff --git a/test_cases_bc/mem_leak/malloc17.c.bc b/test_cases_bc/mem_leak/malloc17.c.bc index a6854ca6d..14ed059ab 100644 --- a/test_cases_bc/mem_leak/malloc17.c.bc +++ b/test_cases_bc/mem_leak/malloc17.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc17.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc17.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc17.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc17.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -99,7 +96,7 @@ entry: define dso_local ptr @gl_unpack_image3D() #0 !dbg !66 { entry: %image = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %image, !70, !DIExpression(), !71) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !72 store ptr %call, ptr %image, align 8, !dbg !71 %0 = load ptr, ptr %image, align 8, !dbg !73 @@ -117,20 +114,20 @@ entry: define dso_local void @glColorSubTableEXT() #0 !dbg !78 { entry: %image = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image, metadata !81, metadata !DIExpression()), !dbg !82 + #dbg_declare(ptr %image, !81, !DIExpression(), !82) %call = call ptr @gl_unpack_image(), !dbg !83 store ptr %call, ptr %image, align 8, !dbg !82 %0 = load ptr, ptr %image, align 8, !dbg !84 - call void @free(ptr noundef %0) #6, !dbg !85 + call void @free(ptr noundef %0) #5, !dbg !85 %1 = load ptr, ptr %image, align 8, !dbg !86 %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %1), !dbg !87 ret void, !dbg !88 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !89 { @@ -139,13 +136,12 @@ entry: ret i32 0, !dbg !93 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -153,13 +149,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 26, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc17.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "76edc384bfd6068704bf40bc7b7a629e") +!2 = !DIFile(filename: "src/mem_leak/malloc17.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "76edc384bfd6068704bf40bc7b7a629e") !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/mem_leak/malloc17.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "76edc384bfd6068704bf40bc7b7a629e") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc17.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "76edc384bfd6068704bf40bc7b7a629e") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -168,9 +164,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -226,7 +222,7 @@ attributes #6 = { nounwind } !72 = !DILocation(line: 12, column: 15, scope: !66) !73 = !DILocation(line: 13, column: 9, scope: !66) !74 = !DILocation(line: 13, column: 2, scope: !66) -!75 = distinct !DISubprogram(name: "gl_unpack_image", scope: !2, file: !2, line: 15, type: !67, scopeLine: 15, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) +!75 = distinct !DISubprogram(name: "gl_unpack_image", scope: !2, file: !2, line: 15, type: !67, scopeLine: 15, spFlags: DISPFlagDefinition, unit: !7) !76 = !DILocation(line: 17, column: 9, scope: !75) !77 = !DILocation(line: 17, column: 2, scope: !75) !78 = distinct !DISubprogram(name: "glColorSubTableEXT", scope: !2, file: !2, line: 21, type: !79, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) @@ -240,7 +236,7 @@ attributes #6 = { nounwind } !86 = !DILocation(line: 26, column: 16, scope: !78) !87 = !DILocation(line: 26, column: 2, scope: !78) !88 = !DILocation(line: 27, column: 1, scope: !78) -!89 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 30, type: !90, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) +!89 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 30, type: !90, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !7) !90 = !DISubroutineType(types: !91) !91 = !{!23} !92 = !DILocation(line: 33, column: 2, scope: !89) diff --git a/test_cases_bc/mem_leak/malloc18.c.bc b/test_cases_bc/mem_leak/malloc18.c.bc index eda270e92..1f5bb324a 100644 --- a/test_cases_bc/mem_leak/malloc18.c.bc +++ b/test_cases_bc/mem_leak/malloc18.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc18.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc18.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc18.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc18.c" +target datalayout = "e-m:e-p270:32:32-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.Img = type { i32, ptr } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -101,15 +98,15 @@ entry: %p.addr = alloca ptr, align 8 %image = alloca ptr, align 8 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !68, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %p.addr, !68, !DIExpression(), !69) %0 = load ptr, ptr %p.addr, align 8, !dbg !70 store i32 100, ptr %0, align 4, !dbg !71 - call void @llvm.dbg.declare(metadata ptr %image, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %image, !72, !DIExpression(), !73) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !74 store ptr %call, ptr %image, align 8, !dbg !73 %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !75 %1 = load ptr, ptr %image, align 8, !dbg !76 - %data = getelementptr inbounds %struct.Img, ptr %1, i32 0, i32 1, !dbg !77 + %data = getelementptr inbounds nuw %struct.Img, ptr %1, i32 0, i32 1, !dbg !77 store ptr %call1, ptr %data, align 8, !dbg !78 %2 = load ptr, ptr %image, align 8, !dbg !79 ret ptr %2, !dbg !80 @@ -120,14 +117,14 @@ define dso_local void @free_image(ptr noundef %image) #0 !dbg !81 { entry: %image.addr = alloca ptr, align 8 store ptr %image, ptr %image.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %image.addr, metadata !84, metadata !DIExpression()), !dbg !85 + #dbg_declare(ptr %image.addr, !84, !DIExpression(), !85) %0 = load ptr, ptr %image.addr, align 8, !dbg !86 - call void @free(ptr noundef %0) #5, !dbg !87 + call void @free(ptr noundef %0) #4, !dbg !87 ret void, !dbg !88 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !89 { @@ -138,47 +135,46 @@ entry: %c = alloca i32, align 4 %image = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !92, metadata !DIExpression()), !dbg !93 - call void @llvm.dbg.declare(metadata ptr %b, metadata !94, metadata !DIExpression()), !dbg !95 - call void @llvm.dbg.declare(metadata ptr %c, metadata !96, metadata !DIExpression()), !dbg !97 + #dbg_declare(ptr %x, !92, !DIExpression(), !93) + #dbg_declare(ptr %b, !94, !DIExpression(), !95) + #dbg_declare(ptr %c, !96, !DIExpression(), !97) store i32 10, ptr %b, align 4, !dbg !98 store i32 20, ptr %c, align 4, !dbg !99 %0 = load ptr, ptr %x, align 8, !dbg !100 %tobool = icmp ne ptr %0, null, !dbg !100 - br i1 %tobool, label %if.then, label %if.else, !dbg !102 + br i1 %tobool, label %if.then, label %if.else, !dbg !100 if.then: ; preds = %entry - store ptr %b, ptr %x, align 8, !dbg !103 - br label %if.end, !dbg !104 + store ptr %b, ptr %x, align 8, !dbg !102 + br label %if.end, !dbg !103 if.else: ; preds = %entry - store ptr %c, ptr %x, align 8, !dbg !105 + store ptr %c, ptr %x, align 8, !dbg !104 br label %if.end if.end: ; preds = %if.else, %if.then - call void @llvm.dbg.declare(metadata ptr %image, metadata !106, metadata !DIExpression()), !dbg !107 - %1 = load ptr, ptr %x, align 8, !dbg !108 - %call = call ptr @read_color_image(ptr noundef %1), !dbg !109 - store ptr %call, ptr %image, align 8, !dbg !107 - %2 = load ptr, ptr %image, align 8, !dbg !110 - call void @free_image(ptr noundef %2), !dbg !111 - %3 = load i32, ptr %retval, align 4, !dbg !112 - ret i32 %3, !dbg !112 + #dbg_declare(ptr %image, !105, !DIExpression(), !106) + %1 = load ptr, ptr %x, align 8, !dbg !107 + %call = call ptr @read_color_image(ptr noundef %1), !dbg !108 + store ptr %call, ptr %image, align 8, !dbg !106 + %2 = load ptr, ptr %image, align 8, !dbg !109 + call void @free_image(ptr noundef %2), !dbg !110 + %3 = load i32, ptr %retval, align 4, !dbg !111 + ret i32 %3, !dbg !111 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc18.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e51bb549c39a4d47a33e5a478142ac75") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc18.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "e51bb549c39a4d47a33e5a478142ac75") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -186,9 +182,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -236,7 +232,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "read_color_image", scope: !59, file: !59, line: 17, type: !60, scopeLine: 17, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc18.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e51bb549c39a4d47a33e5a478142ac75") +!59 = !DIFile(filename: "src/mem_leak/malloc18.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "e51bb549c39a4d47a33e5a478142ac75") !60 = !DISubroutineType(types: !61) !61 = !{!62, !67} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !63, size: 64) @@ -279,14 +275,13 @@ attributes #5 = { nounwind } !99 = !DILocation(line: 36, column: 4, scope: !89) !100 = !DILocation(line: 37, column: 5, scope: !101) !101 = distinct !DILexicalBlock(scope: !89, file: !59, line: 37, column: 5) -!102 = !DILocation(line: 37, column: 5, scope: !89) -!103 = !DILocation(line: 38, column: 4, scope: !101) -!104 = !DILocation(line: 38, column: 2, scope: !101) -!105 = !DILocation(line: 40, column: 4, scope: !101) -!106 = !DILocalVariable(name: "image", scope: !89, file: !59, line: 41, type: !62) -!107 = !DILocation(line: 41, column: 14, scope: !89) -!108 = !DILocation(line: 41, column: 39, scope: !89) -!109 = !DILocation(line: 41, column: 22, scope: !89) -!110 = !DILocation(line: 43, column: 13, scope: !89) -!111 = !DILocation(line: 43, column: 2, scope: !89) -!112 = !DILocation(line: 46, column: 1, scope: !89) +!102 = !DILocation(line: 38, column: 4, scope: !101) +!103 = !DILocation(line: 38, column: 2, scope: !101) +!104 = !DILocation(line: 40, column: 4, scope: !101) +!105 = !DILocalVariable(name: "image", scope: !89, file: !59, line: 41, type: !62) +!106 = !DILocation(line: 41, column: 14, scope: !89) +!107 = !DILocation(line: 41, column: 39, scope: !89) +!108 = !DILocation(line: 41, column: 22, scope: !89) +!109 = !DILocation(line: 43, column: 13, scope: !89) +!110 = !DILocation(line: 43, column: 2, scope: !89) +!111 = !DILocation(line: 46, column: 1, scope: !89) diff --git a/test_cases_bc/mem_leak/malloc19.c.bc b/test_cases_bc/mem_leak/malloc19.c.bc index 85b9a9a83..a1bfb7491 100644 --- a/test_cases_bc/mem_leak/malloc19.c.bc +++ b/test_cases_bc/mem_leak/malloc19.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc19.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc19.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc19.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc19.c" +target datalayout = "e-m:e-p270:32:32-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.Img = type { i32, ptr } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,12 +96,12 @@ entry: define dso_local ptr @read_color_image() #0 !dbg !58 { entry: %image = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image, metadata !68, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %image, !68, !DIExpression(), !69) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !70 store ptr %call, ptr %image, align 8, !dbg !69 %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !71 %0 = load ptr, ptr %image, align 8, !dbg !72 - %data = getelementptr inbounds %struct.Img, ptr %0, i32 0, i32 1, !dbg !73 + %data = getelementptr inbounds nuw %struct.Img, ptr %0, i32 0, i32 1, !dbg !73 store ptr %call1, ptr %data, align 8, !dbg !74 %1 = load ptr, ptr %image, align 8, !dbg !75 ret ptr %1, !dbg !76 @@ -115,26 +112,26 @@ define dso_local void @free_image(ptr noundef %image) #0 !dbg !77 { entry: %image.addr = alloca ptr, align 8 store ptr %image, ptr %image.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %image.addr, metadata !80, metadata !DIExpression()), !dbg !81 + #dbg_declare(ptr %image.addr, !80, !DIExpression(), !81) %0 = load ptr, ptr %image.addr, align 8, !dbg !82 - %data = getelementptr inbounds %struct.Img, ptr %0, i32 0, i32 1, !dbg !83 + %data = getelementptr inbounds nuw %struct.Img, ptr %0, i32 0, i32 1, !dbg !83 %1 = load ptr, ptr %data, align 8, !dbg !83 - call void @free(ptr noundef %1) #5, !dbg !84 + call void @free(ptr noundef %1) #4, !dbg !84 %2 = load ptr, ptr %image.addr, align 8, !dbg !85 - call void @free(ptr noundef %2) #5, !dbg !86 + call void @free(ptr noundef %2) #4, !dbg !86 ret void, !dbg !87 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !88 { entry: %a = alloca i32, align 4 %image = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %a, metadata !91, metadata !DIExpression()), !dbg !92 - call void @llvm.dbg.declare(metadata ptr %image, metadata !93, metadata !DIExpression()), !dbg !94 + #dbg_declare(ptr %a, !91, !DIExpression(), !92) + #dbg_declare(ptr %image, !93, !DIExpression(), !94) %call = call ptr @read_color_image(), !dbg !95 store ptr %call, ptr %image, align 8, !dbg !96 %0 = load ptr, ptr %image, align 8, !dbg !97 @@ -142,19 +139,18 @@ entry: ret i32 0, !dbg !99 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc19.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cb8541316bbb04f64f0721f9bb5a749d") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc19.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "cb8541316bbb04f64f0721f9bb5a749d") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -162,9 +158,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -212,7 +208,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "read_color_image", scope: !59, file: !59, line: 16, type: !60, scopeLine: 16, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc19.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cb8541316bbb04f64f0721f9bb5a749d") +!59 = !DIFile(filename: "src/mem_leak/malloc19.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "cb8541316bbb04f64f0721f9bb5a749d") !60 = !DISubroutineType(types: !61) !61 = !{!62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !63, size: 64) diff --git a/test_cases_bc/mem_leak/malloc2.c.bc b/test_cases_bc/mem_leak/malloc2.c.bc index 836399517..50b238aae 100644 --- a/test_cases_bc/mem_leak/malloc2.c.bc +++ b/test_cases_bc/mem_leak/malloc2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc2.c" +target datalayout = "e-m:e-p270:32:32-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 [13 x i8] c"%d,%d,%d,%d,\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -100,22 +97,22 @@ define dso_local void @foo(ptr noundef %p) #0 !dbg !66 { 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 !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %p.addr, !70, !DIExpression(), !71) %0 = load ptr, ptr %p.addr, align 8, !dbg !72 - call void @free(ptr noundef %0) #6, !dbg !73 + call void @free(ptr noundef %0) #5, !dbg !73 ret void, !dbg !74 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !75 { entry: %k = alloca ptr, align 8 %a = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %k, metadata !78, metadata !DIExpression()), !dbg !79 - call void @llvm.dbg.declare(metadata ptr %a, metadata !80, metadata !DIExpression()), !dbg !81 + #dbg_declare(ptr %k, !78, !DIExpression(), !79) + #dbg_declare(ptr %a, !80, !DIExpression(), !81) %call = call ptr @SAFEMALLOC(i32 noundef 4), !dbg !82 store ptr %call, ptr %a, align 8, !dbg !81 %0 = load ptr, ptr %a, align 8, !dbg !83 @@ -134,15 +131,14 @@ entry: ret i32 0, !dbg !96 } -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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -150,13 +146,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 20, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc2.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8983e86c52ae8eb1b818508a934fa900") +!2 = !DIFile(filename: "src/mem_leak/malloc2.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "8983e86c52ae8eb1b818508a934fa900") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 104, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 13) -!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/mem_leak/malloc2.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8983e86c52ae8eb1b818508a934fa900") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc2.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "8983e86c52ae8eb1b818508a934fa900") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -165,9 +161,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc20.c.bc b/test_cases_bc/mem_leak/malloc20.c.bc index 32f093830..bb91246b3 100644 --- a/test_cases_bc/mem_leak/malloc20.c.bc +++ b/test_cases_bc/mem_leak/malloc20.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc20.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc20.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc20.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc20.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,7 +96,7 @@ entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 %q = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !62, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %p, !62, !DIExpression(), !64) %call = call ptr @PLKMALLOC(i32 noundef 1), !dbg !65 store ptr %call, ptr %p, align 8, !dbg !64 %0 = load ptr, ptr %p, align 8, !dbg !66 @@ -111,7 +108,7 @@ if.then: ; preds = %entry br label %return, !dbg !69 if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %q, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %q, !70, !DIExpression(), !71) %call1 = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !72 store ptr %call1, ptr %q, align 8, !dbg !71 %1 = load ptr, ptr %q, align 8, !dbg !73 @@ -124,9 +121,9 @@ if.then3: ; preds = %if.end if.end4: ; preds = %if.end %2 = load ptr, ptr %p, align 8, !dbg !77 - call void @free(ptr noundef %2) #5, !dbg !78 + call void @free(ptr noundef %2) #4, !dbg !78 %3 = load ptr, ptr %q, align 8, !dbg !79 - call void @free(ptr noundef %3) #5, !dbg !80 + call void @free(ptr noundef %3) #4, !dbg !80 br label %return, !dbg !81 return: ; preds = %if.end4, %if.then3, %if.then @@ -135,7 +132,7 @@ return: ; preds = %if.end4, %if.then3, } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !82 { @@ -144,19 +141,18 @@ entry: ret i32 0, !dbg !84 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc20.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3a8f1543a00610af0faa798526891466") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc20.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "3a8f1543a00610af0faa798526891466") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -164,9 +160,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -214,7 +210,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "func", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc20.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3a8f1543a00610af0faa798526891466") +!59 = !DIFile(filename: "src/mem_leak/malloc20.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "3a8f1543a00610af0faa798526891466") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "p", scope: !58, file: !59, line: 13, type: !63) @@ -223,20 +219,20 @@ attributes #5 = { nounwind } !65 = !DILocation(line: 13, column: 11, scope: !58) !66 = !DILocation(line: 15, column: 6, scope: !67) !67 = distinct !DILexicalBlock(scope: !58, file: !59, line: 15, column: 5) -!68 = !DILocation(line: 15, column: 5, scope: !58) +!68 = !DILocation(line: 15, column: 5, scope: !67) !69 = !DILocation(line: 16, column: 3, scope: !67) !70 = !DILocalVariable(name: "q", scope: !58, file: !59, line: 18, type: !63) !71 = !DILocation(line: 18, column: 7, scope: !58) !72 = !DILocation(line: 18, column: 11, scope: !58) !73 = !DILocation(line: 20, column: 6, scope: !74) !74 = distinct !DILexicalBlock(scope: !58, file: !59, line: 20, column: 5) -!75 = !DILocation(line: 20, column: 5, scope: !58) +!75 = !DILocation(line: 20, column: 5, scope: !74) !76 = !DILocation(line: 21, column: 3, scope: !74) !77 = !DILocation(line: 23, column: 7, scope: !58) !78 = !DILocation(line: 23, column: 2, scope: !58) !79 = !DILocation(line: 25, column: 7, scope: !58) !80 = !DILocation(line: 25, column: 2, scope: !58) !81 = !DILocation(line: 27, column: 1, scope: !58) -!82 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 30, type: !60, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!82 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 30, type: !60, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !0) !83 = !DILocation(line: 32, column: 2, scope: !82) !84 = !DILocation(line: 33, column: 1, scope: !82) diff --git a/test_cases_bc/mem_leak/malloc21.c.bc b/test_cases_bc/mem_leak/malloc21.c.bc index 9e26ca710..ded7765b9 100644 --- a/test_cases_bc/mem_leak/malloc21.c.bc +++ b/test_cases_bc/mem_leak/malloc21.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc21.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc21.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc21.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc21.c" +target datalayout = "e-m:e-p270:32:32-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.FOO = type { ptr, ptr, ptr } @@ -12,28 +12,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 ret ptr %call, !dbg !37 } @@ -42,10 +39,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 ret ptr %call, !dbg !43 } @@ -54,10 +51,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 ret ptr %call, !dbg !49 } @@ -66,10 +63,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 ret ptr %call, !dbg !55 } @@ -78,10 +75,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 ret ptr %call, !dbg !61 } @@ -90,10 +87,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !66 ret ptr %call, !dbg !67 } @@ -102,50 +99,50 @@ define dso_local void @getfree(ptr noundef %net) #0 !dbg !68 { entry: %net.addr = alloca ptr, align 8 store ptr %net, ptr %net.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %net.addr, metadata !78, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %net.addr, !78, !DIExpression(), !79) %0 = load ptr, ptr %net.addr, align 8, !dbg !80 - %f1 = getelementptr inbounds %struct.FOO, ptr %0, i32 0, i32 0, !dbg !81 + %f1 = getelementptr inbounds nuw %struct.FOO, ptr %0, i32 0, i32 0, !dbg !81 %1 = load ptr, ptr %f1, align 8, !dbg !81 - call void @free(ptr noundef %1) #6, !dbg !82 + call void @free(ptr noundef %1) #5, !dbg !82 %2 = load ptr, ptr %net.addr, align 8, !dbg !83 - %f2 = getelementptr inbounds %struct.FOO, ptr %2, i32 0, i32 1, !dbg !84 + %f2 = getelementptr inbounds nuw %struct.FOO, ptr %2, i32 0, i32 1, !dbg !84 %3 = load ptr, ptr %f2, align 8, !dbg !84 - call void @free(ptr noundef %3) #6, !dbg !85 + call void @free(ptr noundef %3) #5, !dbg !85 %4 = load ptr, ptr %net.addr, align 8, !dbg !86 - %f3 = getelementptr inbounds %struct.FOO, ptr %4, i32 0, i32 2, !dbg !87 + %f3 = getelementptr inbounds nuw %struct.FOO, ptr %4, i32 0, i32 2, !dbg !87 %5 = load ptr, ptr %f3, align 8, !dbg !87 - call void @free(ptr noundef %5) #6, !dbg !88 + call void @free(ptr noundef %5) #5, !dbg !88 ret void, !dbg !89 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @readmin() #0 !dbg !90 { entry: %net1 = alloca %struct.FOO, align 8 - call void @llvm.dbg.declare(metadata ptr %net1, metadata !93, metadata !DIExpression()), !dbg !94 + #dbg_declare(ptr %net1, !93, !DIExpression(), !94) %call = call ptr @NFRMALLOC(i32 noundef 4), !dbg !95 - %f1 = getelementptr inbounds %struct.FOO, ptr %net1, i32 0, i32 0, !dbg !96 + %f1 = getelementptr inbounds nuw %struct.FOO, ptr %net1, i32 0, i32 0, !dbg !96 store ptr %call, ptr %f1, align 8, !dbg !97 %call1 = call ptr @NFRMALLOC(i32 noundef 2), !dbg !98 - %f2 = getelementptr inbounds %struct.FOO, ptr %net1, i32 0, i32 1, !dbg !99 + %f2 = getelementptr inbounds nuw %struct.FOO, ptr %net1, i32 0, i32 1, !dbg !99 store ptr %call1, ptr %f2, align 8, !dbg !100 %call2 = call ptr @NFRMALLOC(i32 noundef 3), !dbg !101 - %f3 = getelementptr inbounds %struct.FOO, ptr %net1, i32 0, i32 2, !dbg !102 + %f3 = getelementptr inbounds nuw %struct.FOO, ptr %net1, i32 0, i32 2, !dbg !102 store ptr %call2, ptr %f3, align 8, !dbg !103 - %f13 = getelementptr inbounds %struct.FOO, ptr %net1, i32 0, i32 0, !dbg !104 + %f13 = getelementptr inbounds nuw %struct.FOO, ptr %net1, i32 0, i32 0, !dbg !104 %0 = load ptr, ptr %f13, align 8, !dbg !104 - %f24 = getelementptr inbounds %struct.FOO, ptr %net1, i32 0, i32 1, !dbg !105 + %f24 = getelementptr inbounds nuw %struct.FOO, ptr %net1, i32 0, i32 1, !dbg !105 %1 = load ptr, ptr %f24, align 8, !dbg !105 - %f35 = getelementptr inbounds %struct.FOO, ptr %net1, i32 0, i32 2, !dbg !106 + %f35 = getelementptr inbounds nuw %struct.FOO, ptr %net1, i32 0, i32 2, !dbg !106 %2 = load ptr, ptr %f35, align 8, !dbg !106 %call6 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %0, ptr noundef %1, ptr noundef %2), !dbg !107 ret void, !dbg !108 } -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !109 { @@ -154,13 +151,12 @@ entry: ret i32 0, !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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} @@ -168,13 +164,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 30, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc21.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c83f9af6573ff6b7ab69cb0e4d4bced8") +!2 = !DIFile(filename: "src/mem_leak/malloc21.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "c83f9af6573ff6b7ab69cb0e4d4bced8") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 72, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 9) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc21.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c83f9af6573ff6b7ab69cb0e4d4bced8") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc21.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "c83f9af6573ff6b7ab69cb0e4d4bced8") !9 = !{!10} !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64) !11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -186,9 +182,9 @@ attributes #6 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!25, !11} !25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -275,7 +271,7 @@ attributes #6 = { nounwind } !106 = !DILocation(line: 30, column: 41, scope: !90) !107 = !DILocation(line: 30, column: 2, scope: !90) !108 = !DILocation(line: 32, column: 1, scope: !90) -!109 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 34, type: !110, scopeLine: 34, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) +!109 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 34, type: !110, scopeLine: 34, spFlags: DISPFlagDefinition, unit: !7) !110 = !DISubroutineType(types: !111) !111 = !{!11} !112 = !DILocation(line: 36, column: 2, scope: !109) diff --git a/test_cases_bc/mem_leak/malloc22.c.bc b/test_cases_bc/mem_leak/malloc22.c.bc index 52b7bc2d2..17e35a251 100644 --- a/test_cases_bc/mem_leak/malloc22.c.bc +++ b/test_cases_bc/mem_leak/malloc22.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc22.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc22.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc22.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc22.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -100,7 +97,7 @@ define dso_local ptr @bar1(ptr noundef %b) #0 !dbg !66 { entry: %b.addr = alloca ptr, align 8 store ptr %b, ptr %b.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %b.addr, !70, !DIExpression(), !71) %0 = load ptr, ptr %b.addr, align 8, !dbg !72 ret ptr %0, !dbg !73 } @@ -114,16 +111,16 @@ entry: %k = alloca ptr, align 8 %t = alloca ptr, align 8 store ptr %x, ptr %x.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !77, metadata !DIExpression()), !dbg !78 + #dbg_declare(ptr %x.addr, !77, !DIExpression(), !78) store ptr %y, ptr %y.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %y.addr, metadata !79, metadata !DIExpression()), !dbg !80 - call void @llvm.dbg.declare(metadata ptr %k, metadata !81, metadata !DIExpression()), !dbg !82 + #dbg_declare(ptr %y.addr, !79, !DIExpression(), !80) + #dbg_declare(ptr %k, !81, !DIExpression(), !82) %0 = load ptr, ptr %x.addr, align 8, !dbg !83 %call = call ptr @bar1(ptr noundef %0), !dbg !84 store ptr %call, ptr %k, align 8, !dbg !82 %1 = load ptr, ptr %k, align 8, !dbg !85 - call void @free(ptr noundef %1) #6, !dbg !86 - call void @llvm.dbg.declare(metadata ptr %t, metadata !87, metadata !DIExpression()), !dbg !88 + call void @free(ptr noundef %1) #5, !dbg !86 + #dbg_declare(ptr %t, !87, !DIExpression(), !88) %2 = load ptr, ptr %y.addr, align 8, !dbg !89 %call1 = call ptr @bar1(ptr noundef %2), !dbg !90 store ptr %call1, ptr %t, align 8, !dbg !88 @@ -134,19 +131,19 @@ entry: } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !94 { entry: %p = alloca ptr, align 8 %q = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !97, metadata !DIExpression()), !dbg !98 + #dbg_declare(ptr %p, !97, !DIExpression(), !98) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !99 store ptr %call, ptr %p, align 8, !dbg !98 - call void @llvm.dbg.declare(metadata ptr %q, metadata !100, metadata !DIExpression()), !dbg !101 + #dbg_declare(ptr %q, !100, !DIExpression(), !101) %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !102 store ptr %call1, ptr %q, align 8, !dbg !101 %0 = load ptr, ptr %p, align 8, !dbg !103 @@ -155,13 +152,12 @@ entry: ret i32 0, !dbg !106 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -169,13 +165,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 21, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc22.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "27a3782ef2bff203171497e32857bb4b") +!2 = !DIFile(filename: "src/mem_leak/malloc22.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "27a3782ef2bff203171497e32857bb4b") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc22.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "27a3782ef2bff203171497e32857bb4b") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc22.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "27a3782ef2bff203171497e32857bb4b") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -184,9 +180,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc23.c.bc b/test_cases_bc/mem_leak/malloc23.c.bc index 7c0dace26..6fbe5458c 100644 --- a/test_cases_bc/mem_leak/malloc23.c.bc +++ b/test_cases_bc/mem_leak/malloc23.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc23.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc23.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc23.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc23.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,55 +96,54 @@ entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 %q = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !62, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %p, !62, !DIExpression(), !64) %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !65 store ptr %call, ptr %p, align 8, !dbg !64 %0 = load ptr, ptr %p, align 8, !dbg !66 - call void @free(ptr noundef %0) #5, !dbg !67 - call void @llvm.dbg.declare(metadata ptr %q, metadata !68, metadata !DIExpression()), !dbg !69 + call void @free(ptr noundef %0) #4, !dbg !67 + #dbg_declare(ptr %q, !68, !DIExpression(), !69) %call1 = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !70 store ptr %call1, ptr %q, align 8, !dbg !69 %1 = load ptr, ptr %q, align 8, !dbg !71 %cmp = icmp eq ptr %1, null, !dbg !73 - br i1 %cmp, label %if.then, label %if.end, !dbg !74 + br i1 %cmp, label %if.then, label %if.end, !dbg !73 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !75 - br label %return, !dbg !75 + store i32 -1, ptr %retval, align 4, !dbg !74 + br label %return, !dbg !74 if.end: ; preds = %entry - %2 = load ptr, ptr %q, align 8, !dbg !76 - call void @free(ptr noundef %2) #5, !dbg !77 - br label %return, !dbg !78 + %2 = load ptr, ptr %q, align 8, !dbg !75 + call void @free(ptr noundef %2) #4, !dbg !76 + br label %return, !dbg !77 return: ; preds = %if.end, %if.then - %3 = load i32, ptr %retval, align 4, !dbg !78 - ret i32 %3, !dbg !78 + %3 = load i32, ptr %retval, align 4, !dbg !77 + ret i32 %3, !dbg !77 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !79 { +define dso_local i32 @main() #0 !dbg !78 { entry: - %call = call i32 @func(), !dbg !80 - ret i32 0, !dbg !81 + %call = call i32 @func(), !dbg !79 + ret i32 0, !dbg !80 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc23.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "afcd89f50abc07c6000d70e4bdea0d41") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc23.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "afcd89f50abc07c6000d70e4bdea0d41") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -155,9 +151,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -205,7 +201,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "func", scope: !59, file: !59, line: 9, type: !60, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc23.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "afcd89f50abc07c6000d70e4bdea0d41") +!59 = !DIFile(filename: "src/mem_leak/malloc23.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "afcd89f50abc07c6000d70e4bdea0d41") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "p", scope: !58, file: !59, line: 11, type: !63) @@ -220,11 +216,10 @@ attributes #5 = { nounwind } !71 = !DILocation(line: 17, column: 5, scope: !72) !72 = distinct !DILexicalBlock(scope: !58, file: !59, line: 17, column: 5) !73 = !DILocation(line: 17, column: 6, scope: !72) -!74 = !DILocation(line: 17, column: 5, scope: !58) -!75 = !DILocation(line: 18, column: 3, scope: !72) -!76 = !DILocation(line: 20, column: 7, scope: !58) -!77 = !DILocation(line: 20, column: 2, scope: !58) -!78 = !DILocation(line: 22, column: 1, scope: !58) -!79 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 25, type: !60, scopeLine: 25, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!80 = !DILocation(line: 28, column: 2, scope: !79) -!81 = !DILocation(line: 29, column: 1, scope: !79) +!74 = !DILocation(line: 18, column: 3, scope: !72) +!75 = !DILocation(line: 20, column: 7, scope: !58) +!76 = !DILocation(line: 20, column: 2, scope: !58) +!77 = !DILocation(line: 22, column: 1, scope: !58) +!78 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 25, type: !60, scopeLine: 25, spFlags: DISPFlagDefinition, unit: !0) +!79 = !DILocation(line: 28, column: 2, scope: !78) +!80 = !DILocation(line: 29, column: 1, scope: !78) diff --git a/test_cases_bc/mem_leak/malloc24.c.bc b/test_cases_bc/mem_leak/malloc24.c.bc index cc7b8c454..54de33a1e 100644 --- a/test_cases_bc/mem_leak/malloc24.c.bc +++ b/test_cases_bc/mem_leak/malloc24.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc24.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc24.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc24.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc24.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,8 +96,8 @@ entry: %retval = alloca i32, align 4 %i = alloca i32, align 4 %atms = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %i, metadata !62, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %atms, metadata !64, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %i, !62, !DIExpression(), !63) + #dbg_declare(ptr %atms, !64, !DIExpression(), !66) %call = call ptr @PLKMALLOC(i32 noundef 10), !dbg !67 store ptr %call, ptr %atms, align 8, !dbg !66 br label %while.cond, !dbg !68 @@ -113,48 +110,47 @@ while.cond: ; preds = %if.end, %entry while.body: ; preds = %while.cond %1 = load i32, ptr %i, align 4, !dbg !71 %cmp1 = icmp sgt i32 %1, 1, !dbg !74 - br i1 %cmp1, label %if.then, label %if.end, !dbg !75 + br i1 %cmp1, label %if.then, label %if.end, !dbg !74 if.then: ; preds = %while.body - store i32 0, ptr %retval, align 4, !dbg !76 - br label %return, !dbg !76 + store i32 0, ptr %retval, align 4, !dbg !75 + br label %return, !dbg !75 if.end: ; preds = %while.body - br label %while.cond, !dbg !68, !llvm.loop !77 + br label %while.cond, !dbg !68, !llvm.loop !76 while.end: ; preds = %while.cond - %2 = load ptr, ptr %atms, align 8, !dbg !80 - call void @free(ptr noundef %2) #5, !dbg !81 - br label %return, !dbg !82 + %2 = load ptr, ptr %atms, align 8, !dbg !79 + call void @free(ptr noundef %2) #4, !dbg !80 + br label %return, !dbg !81 return: ; preds = %while.end, %if.then - %3 = load i32, ptr %retval, align 4, !dbg !82 - ret i32 %3, !dbg !82 + %3 = load i32, ptr %retval, align 4, !dbg !81 + ret i32 %3, !dbg !81 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !83 { +define dso_local i32 @main() #0 !dbg !82 { entry: - %call = call i32 @func(), !dbg !84 - ret i32 0, !dbg !85 + %call = call i32 @func(), !dbg !83 + ret i32 0, !dbg !84 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc24.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "823c2ea18349a78757f948d87350ef0e") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc24.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "823c2ea18349a78757f948d87350ef0e") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -162,9 +158,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -212,7 +208,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "func", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc24.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "823c2ea18349a78757f948d87350ef0e") +!59 = !DIFile(filename: "src/mem_leak/malloc24.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "823c2ea18349a78757f948d87350ef0e") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "i", scope: !58, file: !59, line: 12, type: !15) @@ -228,14 +224,13 @@ attributes #5 = { nounwind } !72 = distinct !DILexicalBlock(scope: !73, file: !59, line: 19, column: 5) !73 = distinct !DILexicalBlock(scope: !58, file: !59, line: 18, column: 15) !74 = !DILocation(line: 19, column: 7, scope: !72) -!75 = !DILocation(line: 19, column: 5, scope: !73) -!76 = !DILocation(line: 20, column: 3, scope: !72) -!77 = distinct !{!77, !68, !78, !79} -!78 = !DILocation(line: 21, column: 2, scope: !58) -!79 = !{!"llvm.loop.mustprogress"} -!80 = !DILocation(line: 23, column: 7, scope: !58) -!81 = !DILocation(line: 23, column: 2, scope: !58) -!82 = !DILocation(line: 24, column: 1, scope: !58) -!83 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 27, type: !60, scopeLine: 27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!84 = !DILocation(line: 30, column: 2, scope: !83) -!85 = !DILocation(line: 31, column: 1, scope: !83) +!75 = !DILocation(line: 20, column: 3, scope: !72) +!76 = distinct !{!76, !68, !77, !78} +!77 = !DILocation(line: 21, column: 2, scope: !58) +!78 = !{!"llvm.loop.mustprogress"} +!79 = !DILocation(line: 23, column: 7, scope: !58) +!80 = !DILocation(line: 23, column: 2, scope: !58) +!81 = !DILocation(line: 24, column: 1, scope: !58) +!82 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 27, type: !60, scopeLine: 27, spFlags: DISPFlagDefinition, unit: !0) +!83 = !DILocation(line: 30, column: 2, scope: !82) +!84 = !DILocation(line: 31, column: 1, scope: !82) diff --git a/test_cases_bc/mem_leak/malloc25.c.bc b/test_cases_bc/mem_leak/malloc25.c.bc index 02c99f4d6..5b70d022a 100644 --- a/test_cases_bc/mem_leak/malloc25.c.bc +++ b/test_cases_bc/mem_leak/malloc25.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc25.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc25.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc25.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc25.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,67 +96,66 @@ entry: %retval = alloca i32, align 4 %i = alloca i32, align 4 %atms = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %i, metadata !62, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %atms, metadata !64, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %i, !62, !DIExpression(), !63) + #dbg_declare(ptr %atms, !64, !DIExpression(), !66) %call = call ptr @NFRMALLOC(i32 noundef 10), !dbg !67 store ptr %call, ptr %atms, align 8, !dbg !66 %0 = load ptr, ptr %atms, align 8, !dbg !68 %cmp = icmp eq ptr %0, null, !dbg !70 - br i1 %cmp, label %if.then, label %if.end, !dbg !71 + br i1 %cmp, label %if.then, label %if.end, !dbg !70 if.then: ; preds = %entry - store i32 0, ptr %retval, align 4, !dbg !72 - br label %for.end, !dbg !72 + store i32 0, ptr %retval, align 4, !dbg !71 + br label %for.end, !dbg !71 if.end: ; preds = %entry - store i32 0, ptr %i, align 4, !dbg !73 - br label %for.cond, !dbg !75 + store i32 0, ptr %i, align 4, !dbg !72 + br label %for.cond, !dbg !74 for.cond: ; preds = %for.inc, %if.end - %1 = load i32, ptr %i, align 4, !dbg !76 - %cmp1 = icmp slt i32 %1, 10, !dbg !78 - br i1 %cmp1, label %for.body, label %for.end, !dbg !79 + %1 = load i32, ptr %i, align 4, !dbg !75 + %cmp1 = icmp slt i32 %1, 10, !dbg !77 + br i1 %cmp1, label %for.body, label %for.end, !dbg !78 for.body: ; preds = %for.cond - %2 = load i32, ptr %i, align 4, !dbg !80 - %cmp2 = icmp sgt i32 %2, 1, !dbg !83 - br i1 %cmp2, label %if.then3, label %if.end4, !dbg !84 + %2 = load i32, ptr %i, align 4, !dbg !79 + %cmp2 = icmp sgt i32 %2, 1, !dbg !82 + br i1 %cmp2, label %if.then3, label %if.end4, !dbg !82 if.then3: ; preds = %for.body - br label %for.end, !dbg !85 + br label %for.end, !dbg !83 if.end4: ; preds = %for.body - br label %for.inc, !dbg !86 + br label %for.inc, !dbg !84 for.inc: ; preds = %if.end4 - %3 = load i32, ptr %i, align 4, !dbg !87 - %inc = add nsw i32 %3, 1, !dbg !87 - store i32 %inc, ptr %i, align 4, !dbg !87 - br label %for.cond, !dbg !88, !llvm.loop !89 + %3 = load i32, ptr %i, align 4, !dbg !85 + %inc = add nsw i32 %3, 1, !dbg !85 + store i32 %inc, ptr %i, align 4, !dbg !85 + br label %for.cond, !dbg !86, !llvm.loop !87 for.end: ; preds = %if.then3, %for.cond, %if.then - %4 = load i32, ptr %retval, align 4, !dbg !92 - ret i32 %4, !dbg !92 + %4 = load i32, ptr %retval, align 4, !dbg !90 + ret i32 %4, !dbg !90 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !93 { +define dso_local i32 @main() #0 !dbg !91 { entry: - %call = call i32 @func(), !dbg !94 - ret i32 0, !dbg !95 + %call = call i32 @func(), !dbg !92 + ret i32 0, !dbg !93 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 allocsize(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"="+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.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/mem_leak/malloc25.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c6893f42da2b5c63e0b759dc59904ca3") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc25.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "c6893f42da2b5c63e0b759dc59904ca3") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -167,9 +163,9 @@ attributes #3 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -217,7 +213,7 @@ attributes #3 = { nounwind allocsize(0) } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "func", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc25.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c6893f42da2b5c63e0b759dc59904ca3") +!59 = !DIFile(filename: "src/mem_leak/malloc25.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "c6893f42da2b5c63e0b759dc59904ca3") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "i", scope: !58, file: !59, line: 11, type: !15) @@ -229,28 +225,26 @@ attributes #3 = { nounwind allocsize(0) } !68 = !DILocation(line: 14, column: 5, scope: !69) !69 = distinct !DILexicalBlock(scope: !58, file: !59, line: 14, column: 5) !70 = !DILocation(line: 14, column: 9, scope: !69) -!71 = !DILocation(line: 14, column: 5, scope: !58) -!72 = !DILocation(line: 15, column: 3, scope: !69) -!73 = !DILocation(line: 18, column: 8, scope: !74) -!74 = distinct !DILexicalBlock(scope: !58, file: !59, line: 18, column: 2) -!75 = !DILocation(line: 18, column: 6, scope: !74) -!76 = !DILocation(line: 18, column: 13, scope: !77) -!77 = distinct !DILexicalBlock(scope: !74, file: !59, line: 18, column: 2) -!78 = !DILocation(line: 18, column: 15, scope: !77) -!79 = !DILocation(line: 18, column: 2, scope: !74) -!80 = !DILocation(line: 19, column: 6, scope: !81) -!81 = distinct !DILexicalBlock(scope: !82, file: !59, line: 19, column: 6) -!82 = distinct !DILexicalBlock(scope: !77, file: !59, line: 18, column: 25) -!83 = !DILocation(line: 19, column: 8, scope: !81) -!84 = !DILocation(line: 19, column: 6, scope: !82) -!85 = !DILocation(line: 20, column: 4, scope: !81) -!86 = !DILocation(line: 22, column: 2, scope: !82) -!87 = !DILocation(line: 18, column: 22, scope: !77) -!88 = !DILocation(line: 18, column: 2, scope: !77) -!89 = distinct !{!89, !79, !90, !91} -!90 = !DILocation(line: 22, column: 2, scope: !74) -!91 = !{!"llvm.loop.mustprogress"} -!92 = !DILocation(line: 24, column: 1, scope: !58) -!93 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 27, type: !60, scopeLine: 27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!94 = !DILocation(line: 30, column: 2, scope: !93) -!95 = !DILocation(line: 31, column: 1, scope: !93) +!71 = !DILocation(line: 15, column: 3, scope: !69) +!72 = !DILocation(line: 18, column: 8, scope: !73) +!73 = distinct !DILexicalBlock(scope: !58, file: !59, line: 18, column: 2) +!74 = !DILocation(line: 18, column: 6, scope: !73) +!75 = !DILocation(line: 18, column: 13, scope: !76) +!76 = distinct !DILexicalBlock(scope: !73, file: !59, line: 18, column: 2) +!77 = !DILocation(line: 18, column: 15, scope: !76) +!78 = !DILocation(line: 18, column: 2, scope: !73) +!79 = !DILocation(line: 19, column: 6, scope: !80) +!80 = distinct !DILexicalBlock(scope: !81, file: !59, line: 19, column: 6) +!81 = distinct !DILexicalBlock(scope: !76, file: !59, line: 18, column: 25) +!82 = !DILocation(line: 19, column: 8, scope: !80) +!83 = !DILocation(line: 20, column: 4, scope: !80) +!84 = !DILocation(line: 22, column: 2, scope: !81) +!85 = !DILocation(line: 18, column: 22, scope: !76) +!86 = !DILocation(line: 18, column: 2, scope: !76) +!87 = distinct !{!87, !78, !88, !89} +!88 = !DILocation(line: 22, column: 2, scope: !73) +!89 = !{!"llvm.loop.mustprogress"} +!90 = !DILocation(line: 24, column: 1, scope: !58) +!91 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 27, type: !60, scopeLine: 27, spFlags: DISPFlagDefinition, unit: !0) +!92 = !DILocation(line: 30, column: 2, scope: !91) +!93 = !DILocation(line: 31, column: 1, scope: !91) diff --git a/test_cases_bc/mem_leak/malloc26.c.bc b/test_cases_bc/mem_leak/malloc26.c.bc index 093db759d..d2d1ea730 100644 --- a/test_cases_bc/mem_leak/malloc26.c.bc +++ b/test_cases_bc/mem_leak/malloc26.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc26.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc26.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc26.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc26.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !16 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !22, metadata !DIExpression()), !dbg !23 + #dbg_declare(ptr %n.addr, !22, !DIExpression(), !23) %0 = load i32, ptr %n.addr, align 4, !dbg !24 %conv = sext i32 %0 to i64, !dbg !24 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !25 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !25 ret ptr %call, !dbg !26 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !27 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !28, metadata !DIExpression()), !dbg !29 + #dbg_declare(ptr %n.addr, !28, !DIExpression(), !29) %0 = load i32, ptr %n.addr, align 4, !dbg !30 %conv = sext i32 %0 to i64, !dbg !30 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !31 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !31 ret ptr %call, !dbg !32 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !33 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !34, metadata !DIExpression()), !dbg !35 + #dbg_declare(ptr %n.addr, !34, !DIExpression(), !35) %0 = load i32, ptr %n.addr, align 4, !dbg !36 %conv = sext i32 %0 to i64, !dbg !36 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !37 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !37 ret ptr %call, !dbg !38 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !39 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !40, metadata !DIExpression()), !dbg !41 + #dbg_declare(ptr %n.addr, !40, !DIExpression(), !41) %0 = load i32, ptr %n.addr, align 4, !dbg !42 %conv = sext i32 %0 to i64, !dbg !42 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !43 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !43 ret ptr %call, !dbg !44 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !45 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !46, metadata !DIExpression()), !dbg !47 + #dbg_declare(ptr %n.addr, !46, !DIExpression(), !47) %0 = load i32, ptr %n.addr, align 4, !dbg !48 %conv = sext i32 %0 to i64, !dbg !48 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !49 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !49 ret ptr %call, !dbg !50 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !51 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !52, metadata !DIExpression()), !dbg !53 + #dbg_declare(ptr %n.addr, !52, !DIExpression(), !53) %0 = load i32, ptr %n.addr, align 4, !dbg !54 %conv = sext i32 %0 to i64, !dbg !54 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !55 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !55 ret ptr %call, !dbg !56 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !57 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !58, metadata !DIExpression()), !dbg !59 + #dbg_declare(ptr %n.addr, !58, !DIExpression(), !59) %0 = load i32, ptr %n.addr, align 4, !dbg !60 %conv = sext i32 %0 to i64, !dbg !60 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !61 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !61 ret ptr %call, !dbg !62 } @@ -98,8 +95,8 @@ define dso_local ptr @alloc_matrix() #0 !dbg !63 { entry: %i = alloca i32, align 4 %cptr = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %i, metadata !67, metadata !DIExpression()), !dbg !68 - call void @llvm.dbg.declare(metadata ptr %cptr, metadata !69, metadata !DIExpression()), !dbg !70 + #dbg_declare(ptr %i, !67, !DIExpression(), !68) + #dbg_declare(ptr %cptr, !69, !DIExpression(), !70) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !71 store ptr %call, ptr %cptr, align 8, !dbg !72 store i32 0, ptr %i, align 4, !dbg !73 @@ -136,8 +133,8 @@ entry: %matrix.addr = alloca ptr, align 8 %i = alloca i32, align 4 store ptr %matrix, ptr %matrix.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %matrix.addr, metadata !96, metadata !DIExpression()), !dbg !97 - call void @llvm.dbg.declare(metadata ptr %i, metadata !98, metadata !DIExpression()), !dbg !99 + #dbg_declare(ptr %matrix.addr, !96, !DIExpression(), !97) + #dbg_declare(ptr %i, !98, !DIExpression(), !99) store i32 0, ptr %i, align 4, !dbg !100 br label %for.cond, !dbg !102 @@ -152,7 +149,7 @@ for.body: ; preds = %for.cond %idxprom = sext i32 %2 to i64, !dbg !107 %arrayidx = getelementptr inbounds ptr, ptr %1, i64 %idxprom, !dbg !107 %3 = load ptr, ptr %arrayidx, align 8, !dbg !107 - call void @free(ptr noundef %3) #5, !dbg !110 + call void @free(ptr noundef %3) #4, !dbg !110 br label %for.inc, !dbg !111 for.inc: ; preds = %for.body @@ -163,18 +160,18 @@ for.inc: ; preds = %for.body for.end: ; preds = %for.cond %5 = load ptr, ptr %matrix.addr, align 8, !dbg !116 - call void @free(ptr noundef %5) #5, !dbg !117 + call void @free(ptr noundef %5) #4, !dbg !117 ret void, !dbg !118 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !119 { entry: %dir_list = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %dir_list, metadata !122, metadata !DIExpression()), !dbg !123 + #dbg_declare(ptr %dir_list, !122, !DIExpression(), !123) %call = call ptr @alloc_matrix(), !dbg !124 store ptr %call, ptr %dir_list, align 8, !dbg !125 %0 = load ptr, ptr %dir_list, align 8, !dbg !126 @@ -182,19 +179,18 @@ entry: ret i32 0, !dbg !128 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !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/mem_leak/malloc26.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ab5baec3e2f679f1cef0a9df2749a426") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc26.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "ab5baec3e2f679f1cef0a9df2749a426") !2 = !{!3, !4, !6} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !5, size: 64) @@ -208,9 +204,9 @@ attributes #5 = { nounwind } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !16 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !17, file: !17, line: 5, type: !18, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !21) -!17 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!17 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !18 = !DISubroutineType(types: !19) !19 = !{!7, !20} !20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -257,7 +253,7 @@ attributes #5 = { nounwind } !61 = !DILocation(line: 30, column: 10, scope: !57) !62 = !DILocation(line: 30, column: 3, scope: !57) !63 = distinct !DISubprogram(name: "alloc_matrix", scope: !64, file: !64, line: 11, type: !65, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !21) -!64 = !DIFile(filename: "src/mem_leak/malloc26.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ab5baec3e2f679f1cef0a9df2749a426") +!64 = !DIFile(filename: "src/mem_leak/malloc26.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "ab5baec3e2f679f1cef0a9df2749a426") !65 = !DISubroutineType(types: !66) !66 = !{!6} !67 = !DILocalVariable(name: "i", scope: !63, file: !64, line: 13, type: !20) diff --git a/test_cases_bc/mem_leak/malloc27.c.bc b/test_cases_bc/mem_leak/malloc27.c.bc index c192ba8c5..ecc175d06 100644 --- a/test_cases_bc/mem_leak/malloc27.c.bc +++ b/test_cases_bc/mem_leak/malloc27.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc27.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc27.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc27.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc27.c" +target datalayout = "e-m:e-p270:32:32-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 [5 x i8] c"%d%d\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -100,7 +97,7 @@ define dso_local void @alloc_indirect(ptr noundef %p) #0 !dbg !66 { 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 !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %p.addr, !71, !DIExpression(), !72) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !73 %0 = load ptr, ptr %p.addr, align 8, !dbg !74 store ptr %call, ptr %0, align 8, !dbg !75 @@ -112,22 +109,22 @@ define dso_local void @free_indirect(ptr noundef %q) #0 !dbg !77 { entry: %q.addr = alloca ptr, align 8 store ptr %q, ptr %q.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %q.addr, metadata !78, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %q.addr, !78, !DIExpression(), !79) %0 = load ptr, ptr %q.addr, align 8, !dbg !80 %1 = load ptr, ptr %0, align 8, !dbg !81 - call void @free(ptr noundef %1) #6, !dbg !82 + call void @free(ptr noundef %1) #5, !dbg !82 ret void, !dbg !83 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @alloc_inin(ptr noundef %x) #0 !dbg !84 { 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 !88, metadata !DIExpression()), !dbg !89 + #dbg_declare(ptr %x.addr, !88, !DIExpression(), !89) %call = call ptr @NFRMALLOC(i32 noundef 10), !dbg !90 %0 = load ptr, ptr %x.addr, align 8, !dbg !91 %1 = load ptr, ptr %0, align 8, !dbg !92 @@ -140,7 +137,7 @@ define dso_local void @alloc_wrapper(ptr noundef %s) #0 !dbg !95 { entry: %s.addr = alloca ptr, align 8 store ptr %s, ptr %s.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %s.addr, metadata !96, metadata !DIExpression()), !dbg !97 + #dbg_declare(ptr %s.addr, !96, !DIExpression(), !97) %0 = load ptr, ptr %s.addr, align 8, !dbg !98 call void @alloc_indirect(ptr noundef %0), !dbg !99 ret void, !dbg !100 @@ -152,10 +149,10 @@ entry: %a = alloca i32, align 4 %y = alloca ptr, align 8 %x = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %a, metadata !104, metadata !DIExpression()), !dbg !105 - call void @llvm.dbg.declare(metadata ptr %y, metadata !106, metadata !DIExpression()), !dbg !107 + #dbg_declare(ptr %a, !104, !DIExpression(), !105) + #dbg_declare(ptr %y, !106, !DIExpression(), !107) store ptr %a, ptr %y, align 8, !dbg !107 - call void @llvm.dbg.declare(metadata ptr %x, metadata !108, metadata !DIExpression()), !dbg !109 + #dbg_declare(ptr %x, !108, !DIExpression(), !109) store ptr %y, ptr %x, align 8, !dbg !109 %0 = load ptr, ptr %x, align 8, !dbg !110 call void @alloc_wrapper(ptr noundef %0), !dbg !111 @@ -169,15 +166,14 @@ entry: ret i32 0, !dbg !119 } -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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -185,13 +181,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 35, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc27.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "aa4d50f1e8f4dc0d042050bbe3f44b1a") +!2 = !DIFile(filename: "src/mem_leak/malloc27.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "aa4d50f1e8f4dc0d042050bbe3f44b1a") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 5) -!7 = 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/mem_leak/malloc27.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "aa4d50f1e8f4dc0d042050bbe3f44b1a") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc27.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "aa4d50f1e8f4dc0d042050bbe3f44b1a") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -200,9 +196,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc28.c.bc b/test_cases_bc/mem_leak/malloc28.c.bc index 3df37e09c..516a3bb87 100644 --- a/test_cases_bc/mem_leak/malloc28.c.bc +++ b/test_cases_bc/mem_leak/malloc28.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc28.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc28.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc28.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc28.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -12,28 +12,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !36 ret ptr %call, !dbg !37 } @@ -42,10 +39,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !42 ret ptr %call, !dbg !43 } @@ -54,10 +51,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !48 ret ptr %call, !dbg !49 } @@ -66,10 +63,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !54 ret ptr %call, !dbg !55 } @@ -78,10 +75,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !60 ret ptr %call, !dbg !61 } @@ -90,10 +87,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !66 ret ptr %call, !dbg !67 } @@ -103,17 +100,17 @@ entry: %net.addr = alloca ptr, align 8 %arc = alloca ptr, align 8 store ptr %net, ptr %net.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %net.addr, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %arc, metadata !73, metadata !DIExpression()), !dbg !74 + #dbg_declare(ptr %net.addr, !71, !DIExpression(), !72) + #dbg_declare(ptr %arc, !73, !DIExpression(), !74) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !75 store ptr %call, ptr %arc, align 8, !dbg !74 %0 = load ptr, ptr %arc, align 8, !dbg !76 %1 = load ptr, ptr %net.addr, align 8, !dbg !77 - %arcs = getelementptr inbounds %struct.network, ptr %1, i32 0, i32 0, !dbg !78 + %arcs = getelementptr inbounds nuw %struct.network, ptr %1, i32 0, i32 0, !dbg !78 store ptr %0, ptr %arcs, align 8, !dbg !79 %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !80 %2 = load ptr, ptr %net.addr, align 8, !dbg !81 - %stop_arcs = getelementptr inbounds %struct.network, ptr %2, i32 0, i32 1, !dbg !82 + %stop_arcs = getelementptr inbounds nuw %struct.network, ptr %2, i32 0, i32 1, !dbg !82 store ptr %call1, ptr %stop_arcs, align 8, !dbg !83 ret void, !dbg !84 } @@ -122,29 +119,28 @@ entry: define dso_local i32 @main() #0 !dbg !85 { entry: %net = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %net, metadata !88, metadata !DIExpression()), !dbg !89 + #dbg_declare(ptr %net, !88, !DIExpression(), !89) %call = call ptr @SAFEMALLOC(i32 noundef 20), !dbg !90 store ptr %call, ptr %net, align 8, !dbg !91 %0 = load ptr, ptr %net, align 8, !dbg !92 call void @func(ptr noundef %0), !dbg !93 %1 = load ptr, ptr %net, align 8, !dbg !94 - call void @free(ptr noundef %1) #5, !dbg !95 + call void @free(ptr noundef %1) #4, !dbg !95 %2 = load ptr, ptr %net, align 8, !dbg !96 - %arcs = getelementptr inbounds %struct.network, ptr %2, i32 0, i32 0, !dbg !97 + %arcs = getelementptr inbounds nuw %struct.network, ptr %2, i32 0, i32 0, !dbg !97 %3 = load ptr, ptr %arcs, align 8, !dbg !97 - call void @free(ptr noundef %3) #5, !dbg !98 + call void @free(ptr noundef %3) #4, !dbg !98 ret i32 0, !dbg !99 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} @@ -152,10 +148,10 @@ attributes #5 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "net", scope: !2, file: !5, line: 17, 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/mem_leak/malloc28.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "716a4ef3e3c386c4e0473c85d0cd0811") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc28.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "716a4ef3e3c386c4e0473c85d0cd0811") !4 = !{!0} -!5 = !DIFile(filename: "src/mem_leak/malloc28.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "716a4ef3e3c386c4e0473c85d0cd0811") +!5 = !DIFile(filename: "src/mem_leak/malloc28.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "716a4ef3e3c386c4e0473c85d0cd0811") !6 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64) !7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "network", file: !5, line: 10, size: 128, elements: !8) !8 = !{!9, !12} @@ -170,9 +166,9 @@ attributes #5 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!25, !11} !25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc29.c.bc b/test_cases_bc/mem_leak/malloc29.c.bc index 42c8dc330..8a97e6047 100644 --- a/test_cases_bc/mem_leak/malloc29.c.bc +++ b/test_cases_bc/mem_leak/malloc29.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc29.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc29.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc29.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc29.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @func.q = internal global ptr null, align 8, !dbg !0 @.str = private unnamed_addr constant [5 x i8] c"%d%d\00", align 1, !dbg !10 @@ -11,28 +11,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !26 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !34 ret ptr %call, !dbg !35 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !40 ret ptr %call, !dbg !41 } @@ -41,10 +38,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !46 ret ptr %call, !dbg !47 } @@ -53,10 +50,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !52 ret ptr %call, !dbg !53 } @@ -65,10 +62,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !58 ret ptr %call, !dbg !59 } @@ -77,10 +74,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !64 ret ptr %call, !dbg !65 } @@ -89,10 +86,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !66 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %n.addr, !67, !DIExpression(), !68) %0 = load i32, ptr %n.addr, align 4, !dbg !69 %conv = sext i32 %0 to i64, !dbg !69 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !70 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !70 ret ptr %call, !dbg !71 } @@ -101,7 +98,7 @@ define dso_local i32 @func() #0 !dbg !2 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %p, !72, !DIExpression(), !73) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !74 store ptr %call, ptr %p, align 8, !dbg !73 %0 = load ptr, ptr %p, align 8, !dbg !75 @@ -113,7 +110,7 @@ entry: ret i32 %3, !dbg !80 } -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !81 { @@ -122,11 +119,10 @@ entry: ret i32 0, !dbg !83 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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.dbg.cu = !{!7} !llvm.module.flags = !{!18, !19, !20, !21, !22, !23, !24} @@ -135,12 +131,12 @@ attributes #4 = { nounwind allocsize(0) } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "q", scope: !2, file: !3, line: 10, type: !17, isLocal: true, isDefinition: true) !2 = distinct !DISubprogram(name: "func", scope: !3, file: !3, line: 9, type: !4, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !16) -!3 = !DIFile(filename: "src/mem_leak/malloc29.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9f3fa353fc795ded8ec7068f3ba1c01c") +!3 = !DIFile(filename: "src/mem_leak/malloc29.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "9f3fa353fc795ded8ec7068f3ba1c01c") !4 = !DISubroutineType(types: !5) !5 = !{!6} !6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc29.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9f3fa353fc795ded8ec7068f3ba1c01c") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc29.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "9f3fa353fc795ded8ec7068f3ba1c01c") !9 = !{!0, !10} !10 = !DIGlobalVariableExpression(var: !11, expr: !DIExpression()) !11 = distinct !DIGlobalVariable(scope: null, file: !3, line: 13, type: !12, isLocal: true, isDefinition: true) @@ -157,9 +153,9 @@ attributes #4 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !26 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !27, file: !27, line: 5, type: !28, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !16) -!27 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!27 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !28 = !DISubroutineType(types: !29) !29 = !{!30, !6} !30 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -213,6 +209,6 @@ attributes #4 = { nounwind allocsize(0) } !78 = !DILocation(line: 13, column: 18, scope: !2) !79 = !DILocation(line: 13, column: 2, scope: !2) !80 = !DILocation(line: 15, column: 1, scope: !2) -!81 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 17, type: !4, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !16) +!81 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 17, type: !4, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !7) !82 = !DILocation(line: 18, column: 2, scope: !81) !83 = !DILocation(line: 19, column: 1, scope: !81) diff --git a/test_cases_bc/mem_leak/malloc3.c.bc b/test_cases_bc/mem_leak/malloc3.c.bc index e02611b7f..9e6f4e085 100644 --- a/test_cases_bc/mem_leak/malloc3.c.bc +++ b/test_cases_bc/mem_leak/malloc3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc3.c" +target datalayout = "e-m:e-p270:32:32-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 [13 x i8] c"%d,%d,%d,%d,\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -100,7 +97,7 @@ define dso_local ptr @foo(ptr noundef %p) #0 !dbg !66 { 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 !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %p.addr, !70, !DIExpression(), !71) %0 = load ptr, ptr %p.addr, align 8, !dbg !72 ret ptr %0, !dbg !73 } @@ -110,22 +107,22 @@ define dso_local void @bar(ptr noundef %s) #0 !dbg !74 { entry: %s.addr = alloca ptr, align 8 store ptr %s, ptr %s.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %s.addr, metadata !77, metadata !DIExpression()), !dbg !78 + #dbg_declare(ptr %s.addr, !77, !DIExpression(), !78) %0 = load ptr, ptr %s.addr, align 8, !dbg !79 - call void @free(ptr noundef %0) #6, !dbg !80 + call void @free(ptr noundef %0) #5, !dbg !80 ret void, !dbg !81 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !82 { entry: %k = alloca ptr, align 8 %a = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %k, metadata !85, metadata !DIExpression()), !dbg !86 - call void @llvm.dbg.declare(metadata ptr %a, metadata !87, metadata !DIExpression()), !dbg !88 + #dbg_declare(ptr %k, !85, !DIExpression(), !86) + #dbg_declare(ptr %a, !87, !DIExpression(), !88) %call = call ptr @SAFEMALLOC(i32 noundef 4), !dbg !89 store ptr %call, ptr %a, align 8, !dbg !88 %0 = load ptr, ptr %a, align 8, !dbg !90 @@ -145,15 +142,14 @@ entry: ret i32 0, !dbg !104 } -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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -161,13 +157,13 @@ attributes #6 = { 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/mem_leak/malloc3.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2553fbd6cfad59245eb035e0bb8ac7d5") +!2 = !DIFile(filename: "src/mem_leak/malloc3.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "2553fbd6cfad59245eb035e0bb8ac7d5") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 104, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 13) -!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/mem_leak/malloc3.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2553fbd6cfad59245eb035e0bb8ac7d5") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc3.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "2553fbd6cfad59245eb035e0bb8ac7d5") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -176,9 +172,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc30.c.bc b/test_cases_bc/mem_leak/malloc30.c.bc index e83d730f8..4b65cefee 100644 --- a/test_cases_bc/mem_leak/malloc30.c.bc +++ b/test_cases_bc/mem_leak/malloc30.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc30.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc30.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc30.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc30.c" +target datalayout = "e-m:e-p270:32:32-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 [5 x i8] c"%d%d\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 ret ptr %call, !dbg !37 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 ret ptr %call, !dbg !43 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 ret ptr %call, !dbg !49 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 ret ptr %call, !dbg !55 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 ret ptr %call, !dbg !61 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !66 ret ptr %call, !dbg !67 } @@ -101,19 +98,19 @@ entry: %i = alloca i32, align 4 %p = alloca ptr, align 8 %q = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %i, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %i, !71, !DIExpression(), !72) store i32 10, ptr %i, align 4, !dbg !72 - call void @llvm.dbg.declare(metadata ptr %p, metadata !73, metadata !DIExpression()), !dbg !74 + #dbg_declare(ptr %p, !73, !DIExpression(), !74) %call = call ptr @SAFEMALLOC(i32 noundef 100), !dbg !75 store ptr %call, ptr %p, align 8, !dbg !74 - call void @llvm.dbg.declare(metadata ptr %q, metadata !76, metadata !DIExpression()), !dbg !77 + #dbg_declare(ptr %q, !76, !DIExpression(), !77) %0 = load ptr, ptr %p, align 8, !dbg !78 %1 = load i32, ptr %i, align 4, !dbg !79 %idx.ext = sext i32 %1 to i64, !dbg !80 %add.ptr = getelementptr inbounds i32, ptr %0, i64 %idx.ext, !dbg !80 store ptr %add.ptr, ptr %q, align 8, !dbg !77 %2 = load ptr, ptr %q, align 8, !dbg !81 - call void @free(ptr noundef %2) #6, !dbg !82 + call void @free(ptr noundef %2) #5, !dbg !82 %3 = load ptr, ptr %p, align 8, !dbg !83 %4 = load ptr, ptr %q, align 8, !dbg !84 %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %3, ptr noundef %4), !dbg !85 @@ -121,17 +118,16 @@ entry: } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 -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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} @@ -139,13 +135,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 15, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc30.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "028d146ab0a8bcb750aa8ac221743177") +!2 = !DIFile(filename: "src/mem_leak/malloc30.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "028d146ab0a8bcb750aa8ac221743177") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 5) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc30.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "028d146ab0a8bcb750aa8ac221743177") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc30.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "028d146ab0a8bcb750aa8ac221743177") !9 = !{!10} !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64) !11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -157,9 +153,9 @@ attributes #6 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!25, !11} !25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc31.c.bc b/test_cases_bc/mem_leak/malloc31.c.bc index 4a58ae324..f81e2697f 100644 --- a/test_cases_bc/mem_leak/malloc31.c.bc +++ b/test_cases_bc/mem_leak/malloc31.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc31.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc31.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc31.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc31.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -100,7 +97,7 @@ define dso_local void @bar1(ptr noundef %b) #0 !dbg !66 { entry: %b.addr = alloca ptr, align 8 store ptr %b, ptr %b.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %b.addr, !71, !DIExpression(), !72) %call = call ptr @LEAKFN(i32 noundef 10), !dbg !73 %0 = load ptr, ptr %b.addr, align 8, !dbg !74 store ptr %call, ptr %0, align 8, !dbg !75 @@ -112,15 +109,15 @@ define dso_local void @barfree(ptr noundef %a) #0 !dbg !77 { 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 !78, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %a.addr, !78, !DIExpression(), !79) %0 = load ptr, ptr %a.addr, align 8, !dbg !80 %1 = load ptr, ptr %0, align 8, !dbg !81 - call void @free(ptr noundef %1) #6, !dbg !82 + call void @free(ptr noundef %1) #5, !dbg !82 ret void, !dbg !83 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @foo() #0 !dbg !84 { @@ -128,10 +125,10 @@ entry: %retval = alloca ptr, align 8 %x = alloca ptr, align 8 %y = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %x, metadata !87, metadata !DIExpression()), !dbg !88 + #dbg_declare(ptr %x, !87, !DIExpression(), !88) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !89 store ptr %call, ptr %x, align 8, !dbg !88 - call void @llvm.dbg.declare(metadata ptr %y, metadata !90, metadata !DIExpression()), !dbg !91 + #dbg_declare(ptr %y, !90, !DIExpression(), !91) %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !92 store ptr %call1, ptr %y, align 8, !dbg !91 %0 = load ptr, ptr %x, align 8, !dbg !93 @@ -139,11 +136,11 @@ entry: %1 = load ptr, ptr %x, align 8, !dbg !95 call void @barfree(ptr noundef %1), !dbg !96 %2 = load ptr, ptr %x, align 8, !dbg !97 - call void @free(ptr noundef %2) #6, !dbg !98 + call void @free(ptr noundef %2) #5, !dbg !98 %3 = load ptr, ptr %y, align 8, !dbg !99 call void @bar1(ptr noundef %3), !dbg !100 %4 = load ptr, ptr %y, align 8, !dbg !101 - call void @free(ptr noundef %4) #6, !dbg !102 + call void @free(ptr noundef %4) #5, !dbg !102 %5 = load ptr, ptr %x, align 8, !dbg !103 %6 = load ptr, ptr %y, align 8, !dbg !104 %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %5, ptr noundef %6), !dbg !105 @@ -151,7 +148,7 @@ entry: ret ptr %7, !dbg !106 } -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !107 { @@ -160,13 +157,12 @@ entry: ret i32 0, !dbg !111 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -174,13 +170,13 @@ attributes #6 = { 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/mem_leak/malloc31.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a339ab125c3c17cb2a9fed7d5f54d2dd") +!2 = !DIFile(filename: "src/mem_leak/malloc31.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a339ab125c3c17cb2a9fed7d5f54d2dd") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc31.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a339ab125c3c17cb2a9fed7d5f54d2dd") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc31.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a339ab125c3c17cb2a9fed7d5f54d2dd") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -189,9 +185,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -279,7 +275,7 @@ attributes #6 = { nounwind } !104 = !DILocation(line: 32, column: 16, scope: !84) !105 = !DILocation(line: 32, column: 2, scope: !84) !106 = !DILocation(line: 33, column: 1, scope: !84) -!107 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 36, type: !108, scopeLine: 36, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) +!107 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 36, type: !108, scopeLine: 36, spFlags: DISPFlagDefinition, unit: !7) !108 = !DISubroutineType(types: !109) !109 = !{!23} !110 = !DILocation(line: 39, column: 3, scope: !107) diff --git a/test_cases_bc/mem_leak/malloc32.c.bc b/test_cases_bc/mem_leak/malloc32.c.bc index 9fb1b090b..7ec7dfc29 100644 --- a/test_cases_bc/mem_leak/malloc32.c.bc +++ b/test_cases_bc/mem_leak/malloc32.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc32.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc32.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc32.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc32.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -100,7 +97,7 @@ define dso_local void @bar1(ptr noundef %b) #0 !dbg !66 { entry: %b.addr = alloca ptr, align 8 store ptr %b, ptr %b.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %b.addr, !71, !DIExpression(), !72) %call = call ptr @LEAKFN(i32 noundef 10), !dbg !73 %0 = load ptr, ptr %b.addr, align 8, !dbg !74 store ptr %call, ptr %0, align 8, !dbg !75 @@ -113,23 +110,23 @@ entry: %retval = alloca ptr, align 8 %x = alloca ptr, align 8 %y = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %x, metadata !80, metadata !DIExpression()), !dbg !81 + #dbg_declare(ptr %x, !80, !DIExpression(), !81) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !82 store ptr %call, ptr %x, align 8, !dbg !81 - call void @llvm.dbg.declare(metadata ptr %y, metadata !83, metadata !DIExpression()), !dbg !84 + #dbg_declare(ptr %y, !83, !DIExpression(), !84) %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !85 store ptr %call1, ptr %y, align 8, !dbg !84 %0 = load ptr, ptr %x, align 8, !dbg !86 call void @bar1(ptr noundef %0), !dbg !87 %1 = load ptr, ptr %x, align 8, !dbg !88 %2 = load ptr, ptr %1, align 8, !dbg !89 - call void @free(ptr noundef %2) #6, !dbg !90 + call void @free(ptr noundef %2) #5, !dbg !90 %3 = load ptr, ptr %x, align 8, !dbg !91 - call void @free(ptr noundef %3) #6, !dbg !92 + call void @free(ptr noundef %3) #5, !dbg !92 %4 = load ptr, ptr %y, align 8, !dbg !93 call void @bar1(ptr noundef %4), !dbg !94 %5 = load ptr, ptr %y, align 8, !dbg !95 - call void @free(ptr noundef %5) #6, !dbg !96 + call void @free(ptr noundef %5) #5, !dbg !96 %6 = load ptr, ptr %x, align 8, !dbg !97 %7 = load ptr, ptr %y, align 8, !dbg !98 %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %6, ptr noundef %7), !dbg !99 @@ -138,9 +135,9 @@ entry: } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !101 { @@ -149,13 +146,12 @@ entry: ret i32 0, !dbg !105 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -163,13 +159,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 27, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc32.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ea92f32433f6c17fcf08c3662bd181c1") +!2 = !DIFile(filename: "src/mem_leak/malloc32.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "ea92f32433f6c17fcf08c3662bd181c1") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc32.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ea92f32433f6c17fcf08c3662bd181c1") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc32.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "ea92f32433f6c17fcf08c3662bd181c1") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -178,9 +174,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -262,7 +258,7 @@ attributes #6 = { nounwind } !98 = !DILocation(line: 27, column: 16, scope: !77) !99 = !DILocation(line: 27, column: 2, scope: !77) !100 = !DILocation(line: 28, column: 1, scope: !77) -!101 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 31, type: !102, scopeLine: 31, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) +!101 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 31, type: !102, scopeLine: 31, spFlags: DISPFlagDefinition, unit: !7) !102 = !DISubroutineType(types: !103) !103 = !{!23} !104 = !DILocation(line: 34, column: 3, scope: !101) diff --git a/test_cases_bc/mem_leak/malloc33.c.bc b/test_cases_bc/mem_leak/malloc33.c.bc index d3c0465bd..d19cdb064 100644 --- a/test_cases_bc/mem_leak/malloc33.c.bc +++ b/test_cases_bc/mem_leak/malloc33.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc33.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc33.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc33.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc33.c" +target datalayout = "e-m:e-p270:32:32-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 [5 x i8] c"%d%d\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -99,7 +96,7 @@ entry: define dso_local ptr @readcolor() #0 !dbg !66 { entry: %image = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %image, !71, !DIExpression(), !72) %call = call ptr @SAFEMALLOC(i32 noundef 100), !dbg !73 store ptr %call, ptr %image, align 8, !dbg !72 %call1 = call ptr @LEAKFN(i32 noundef 10), !dbg !74 @@ -114,20 +111,20 @@ define dso_local i32 @main() #0 !dbg !79 { entry: %image1 = alloca ptr, align 8 %image2 = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image1, metadata !82, metadata !DIExpression()), !dbg !83 + #dbg_declare(ptr %image1, !82, !DIExpression(), !83) %call = call ptr @readcolor(), !dbg !84 store ptr %call, ptr %image1, align 8, !dbg !83 - call void @llvm.dbg.declare(metadata ptr %image2, metadata !85, metadata !DIExpression()), !dbg !86 + #dbg_declare(ptr %image2, !85, !DIExpression(), !86) %call1 = call ptr @readcolor(), !dbg !87 store ptr %call1, ptr %image2, align 8, !dbg !86 %0 = load ptr, ptr %image1, align 8, !dbg !88 %1 = load ptr, ptr %0, align 8, !dbg !89 - call void @free(ptr noundef %1) #6, !dbg !90 + call void @free(ptr noundef %1) #5, !dbg !90 %2 = load ptr, ptr %image1, align 8, !dbg !91 - call void @free(ptr noundef %2) #6, !dbg !92 + call void @free(ptr noundef %2) #5, !dbg !92 %3 = load ptr, ptr %image2, align 8, !dbg !93 %4 = load ptr, ptr %3, align 8, !dbg !94 - call void @free(ptr noundef %4) #6, !dbg !95 + call void @free(ptr noundef %4) #5, !dbg !95 %5 = load ptr, ptr %image1, align 8, !dbg !96 %6 = load ptr, ptr %image2, align 8, !dbg !97 %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %5, ptr noundef %6), !dbg !98 @@ -135,17 +132,16 @@ entry: } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 -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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -153,13 +149,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 31, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc33.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b61ed66348b566a9a2359d72f8ca5fe6") +!2 = !DIFile(filename: "src/mem_leak/malloc33.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "b61ed66348b566a9a2359d72f8ca5fe6") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 5) -!7 = 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/mem_leak/malloc33.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b61ed66348b566a9a2359d72f8ca5fe6") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc33.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "b61ed66348b566a9a2359d72f8ca5fe6") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -168,9 +164,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc34.c.bc b/test_cases_bc/mem_leak/malloc34.c.bc index 913ad0013..d11d47b18 100644 --- a/test_cases_bc/mem_leak/malloc34.c.bc +++ b/test_cases_bc/mem_leak/malloc34.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc34.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc34.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc34.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc34.c" +target datalayout = "e-m:e-p270:32:32-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 [5 x i8] c"%d%d\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -99,7 +96,7 @@ entry: define dso_local ptr @readcolor() #0 !dbg !66 { entry: %image = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %image, !70, !DIExpression(), !71) %call = call ptr @NFRMALLOC(i32 noundef 100), !dbg !72 store ptr %call, ptr %image, align 8, !dbg !71 %0 = load ptr, ptr %image, align 8, !dbg !73 @@ -111,14 +108,14 @@ define dso_local i32 @main() #0 !dbg !75 { entry: %image1 = alloca ptr, align 8 %image2 = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image1, metadata !78, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %image1, !78, !DIExpression(), !79) %call = call ptr @readcolor(), !dbg !80 store ptr %call, ptr %image1, align 8, !dbg !79 - call void @llvm.dbg.declare(metadata ptr %image2, metadata !81, metadata !DIExpression()), !dbg !82 + #dbg_declare(ptr %image2, !81, !DIExpression(), !82) %call1 = call ptr @readcolor(), !dbg !83 store ptr %call1, ptr %image2, align 8, !dbg !82 %0 = load ptr, ptr %image1, align 8, !dbg !84 - call void @free(ptr noundef %0) #6, !dbg !85 + call void @free(ptr noundef %0) #5, !dbg !85 %1 = load ptr, ptr %image1, align 8, !dbg !86 %2 = load ptr, ptr %image2, align 8, !dbg !87 %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %1, ptr noundef %2), !dbg !88 @@ -126,17 +123,16 @@ entry: } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 -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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -144,13 +140,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 27, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc34.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "5e395a20f9a0cd4c7f099c1afaca877b") +!2 = !DIFile(filename: "src/mem_leak/malloc34.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "5e395a20f9a0cd4c7f099c1afaca877b") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 5) -!7 = 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/mem_leak/malloc34.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "5e395a20f9a0cd4c7f099c1afaca877b") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc34.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "5e395a20f9a0cd4c7f099c1afaca877b") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -159,9 +155,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc35.c.bc b/test_cases_bc/mem_leak/malloc35.c.bc index 4d0171618..e2cc4f4cd 100644 --- a/test_cases_bc/mem_leak/malloc35.c.bc +++ b/test_cases_bc/mem_leak/malloc35.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc35.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc35.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc35.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc35.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !64 ret ptr %call, !dbg !65 } @@ -99,7 +96,7 @@ entry: define dso_local ptr @readcolor() #0 !dbg !66 { entry: %image = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %image, !70, !DIExpression(), !71) %call = call ptr @NFRMALLOC(i32 noundef 100), !dbg !72 store ptr %call, ptr %image, align 8, !dbg !71 %0 = load ptr, ptr %image, align 8, !dbg !73 @@ -110,7 +107,7 @@ entry: define dso_local i32 @main() #0 !dbg !75 { entry: %image1 = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %image1, metadata !78, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %image1, !78, !DIExpression(), !79) %call = call ptr @readcolor(), !dbg !80 store ptr %call, ptr %image1, align 8, !dbg !79 %0 = load ptr, ptr %image1, align 8, !dbg !81 @@ -118,13 +115,12 @@ entry: ret i32 0, !dbg !83 } -declare i32 @printf(ptr noundef, ...) #3 +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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -132,13 +128,13 @@ attributes #4 = { nounwind allocsize(0) } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 26, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc35.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4327e243ffadcc846e3dcd1061037e06") +!2 = !DIFile(filename: "src/mem_leak/malloc35.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "4327e243ffadcc846e3dcd1061037e06") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc35.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4327e243ffadcc846e3dcd1061037e06") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc35.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "4327e243ffadcc846e3dcd1061037e06") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -147,9 +143,9 @@ attributes #4 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc36.c.bc b/test_cases_bc/mem_leak/malloc36.c.bc index 1af459fcb..ecec61e44 100644 --- a/test_cases_bc/mem_leak/malloc36.c.bc +++ b/test_cases_bc/mem_leak/malloc36.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc36.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc36.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc36.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc36.c" +target datalayout = "e-m:e-p270:32:32-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 [5 x i8] c"%d%d\00", align 1, !dbg !0 @.str.1 = private unnamed_addr constant [3 x i8] c"%d\00", align 1, !dbg !7 @@ -11,28 +11,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !23 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !30, metadata !DIExpression()), !dbg !31 + #dbg_declare(ptr %n.addr, !30, !DIExpression(), !31) %0 = load i32, ptr %n.addr, align 4, !dbg !32 %conv = sext i32 %0 to i64, !dbg !32 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !33 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !33 ret ptr %call, !dbg !34 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !35 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !36, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %n.addr, !36, !DIExpression(), !37) %0 = load i32, ptr %n.addr, align 4, !dbg !38 %conv = sext i32 %0 to i64, !dbg !38 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !39 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !39 ret ptr %call, !dbg !40 } @@ -41,10 +38,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !41 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !42, metadata !DIExpression()), !dbg !43 + #dbg_declare(ptr %n.addr, !42, !DIExpression(), !43) %0 = load i32, ptr %n.addr, align 4, !dbg !44 %conv = sext i32 %0 to i64, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !45 ret ptr %call, !dbg !46 } @@ -53,10 +50,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !47 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !48, metadata !DIExpression()), !dbg !49 + #dbg_declare(ptr %n.addr, !48, !DIExpression(), !49) %0 = load i32, ptr %n.addr, align 4, !dbg !50 %conv = sext i32 %0 to i64, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !51 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !51 ret ptr %call, !dbg !52 } @@ -65,10 +62,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !53 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !54, metadata !DIExpression()), !dbg !55 + #dbg_declare(ptr %n.addr, !54, !DIExpression(), !55) %0 = load i32, ptr %n.addr, align 4, !dbg !56 %conv = sext i32 %0 to i64, !dbg !56 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !57 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !57 ret ptr %call, !dbg !58 } @@ -77,10 +74,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !59 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !60, metadata !DIExpression()), !dbg !61 + #dbg_declare(ptr %n.addr, !60, !DIExpression(), !61) %0 = load i32, ptr %n.addr, align 4, !dbg !62 %conv = sext i32 %0 to i64, !dbg !62 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !63 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !63 ret ptr %call, !dbg !64 } @@ -89,10 +86,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !65 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !66, metadata !DIExpression()), !dbg !67 + #dbg_declare(ptr %n.addr, !66, !DIExpression(), !67) %0 = load i32, ptr %n.addr, align 4, !dbg !68 %conv = sext i32 %0 to i64, !dbg !68 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !69 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !69 ret ptr %call, !dbg !70 } @@ -101,10 +98,10 @@ define dso_local void @SerialReadBuf() #0 !dbg !71 { entry: %buf = alloca ptr, align 8 %n = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %buf, metadata !74, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %buf, !74, !DIExpression(), !76) %call = call ptr @NFRMALLOC(i32 noundef 10), !dbg !77 store ptr %call, ptr %buf, align 8, !dbg !76 - call void @llvm.dbg.declare(metadata ptr %n, metadata !78, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %n, !78, !DIExpression(), !79) br label %while.cond, !dbg !80 while.cond: ; preds = %if.end, %if.then, %entry @@ -120,41 +117,40 @@ while.body: ; preds = %while.cond store ptr %call2, ptr %buf, align 8, !dbg !87 %3 = load i32, ptr %n, align 4, !dbg !88 %tobool3 = icmp ne i32 %3, 0, !dbg !88 - br i1 %tobool3, label %if.then, label %if.end, !dbg !90 + br i1 %tobool3, label %if.then, label %if.end, !dbg !88 if.then: ; preds = %while.body - br label %while.cond, !dbg !91, !llvm.loop !93 + br label %while.cond, !dbg !90, !llvm.loop !92 if.end: ; preds = %while.body - %4 = load ptr, ptr %buf, align 8, !dbg !96 - call void @free(ptr noundef %4) #6, !dbg !97 - br label %while.cond, !dbg !80, !llvm.loop !93 + %4 = load ptr, ptr %buf, align 8, !dbg !95 + call void @free(ptr noundef %4) #5, !dbg !96 + br label %while.cond, !dbg !80, !llvm.loop !92 while.end: ; preds = %while.cond - %5 = load ptr, ptr %buf, align 8, !dbg !98 - %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %5), !dbg !99 - ret void, !dbg !100 + %5 = load ptr, ptr %buf, align 8, !dbg !97 + %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %5), !dbg !98 + ret void, !dbg !99 } -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; 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 !101 { +define dso_local i32 @main() #0 !dbg !100 { entry: - call void @SerialReadBuf(), !dbg !104 - ret i32 0, !dbg !105 + call void @SerialReadBuf(), !dbg !103 + ret i32 0, !dbg !104 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0) } -attributes #6 = { nounwind } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!12} !llvm.module.flags = !{!15, !16, !17, !18, !19, !20, !21} @@ -162,7 +158,7 @@ attributes #6 = { nounwind } !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/mem_leak/malloc36.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ac822f800185d7cc0869bd28534a686e") +!2 = !DIFile(filename: "src/mem_leak/malloc36.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "ac822f800185d7cc0869bd28534a686e") !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} @@ -172,8 +168,8 @@ attributes #6 = { nounwind } !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !10) !10 = !{!11} !11 = !DISubrange(count: 3) -!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/mem_leak/malloc36.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ac822f800185d7cc0869bd28534a686e") +!12 = distinct !DICompileUnit(language: DW_LANG_C11, file: !13, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !14, splitDebugInlining: false, nameTableKind: None) +!13 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc36.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "ac822f800185d7cc0869bd28534a686e") !14 = !{!0, !7} !15 = !{i32 7, !"Dwarf Version", i32 5} !16 = !{i32 2, !"Debug Info Version", i32 3} @@ -182,9 +178,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !23 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !24, file: !24, line: 5, type: !25, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !29) -!24 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!24 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !25 = !DISubroutineType(types: !26) !26 = !{!27, !28} !27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -250,19 +246,18 @@ attributes #6 = { nounwind } !87 = !DILocation(line: 19, column: 8, scope: !83) !88 = !DILocation(line: 21, column: 6, scope: !89) !89 = distinct !DILexicalBlock(scope: !83, file: !2, line: 21, column: 6) -!90 = !DILocation(line: 21, column: 6, scope: !83) -!91 = !DILocation(line: 22, column: 4, scope: !92) -!92 = distinct !DILexicalBlock(scope: !89, file: !2, line: 21, column: 8) -!93 = distinct !{!93, !80, !94, !95} -!94 = !DILocation(line: 25, column: 2, scope: !71) -!95 = !{!"llvm.loop.mustprogress"} -!96 = !DILocation(line: 24, column: 8, scope: !83) -!97 = !DILocation(line: 24, column: 3, scope: !83) -!98 = !DILocation(line: 27, column: 14, scope: !71) -!99 = !DILocation(line: 27, column: 2, scope: !71) -!100 = !DILocation(line: 29, column: 1, scope: !71) -!101 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 31, type: !102, scopeLine: 31, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !29) -!102 = !DISubroutineType(types: !103) -!103 = !{!28} -!104 = !DILocation(line: 33, column: 2, scope: !101) -!105 = !DILocation(line: 34, column: 1, scope: !101) +!90 = !DILocation(line: 22, column: 4, scope: !91) +!91 = distinct !DILexicalBlock(scope: !89, file: !2, line: 21, column: 8) +!92 = distinct !{!92, !80, !93, !94} +!93 = !DILocation(line: 25, column: 2, scope: !71) +!94 = !{!"llvm.loop.mustprogress"} +!95 = !DILocation(line: 24, column: 8, scope: !83) +!96 = !DILocation(line: 24, column: 3, scope: !83) +!97 = !DILocation(line: 27, column: 14, scope: !71) +!98 = !DILocation(line: 27, column: 2, scope: !71) +!99 = !DILocation(line: 29, column: 1, scope: !71) +!100 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 31, type: !101, scopeLine: 31, spFlags: DISPFlagDefinition, unit: !12) +!101 = !DISubroutineType(types: !102) +!102 = !{!28} +!103 = !DILocation(line: 33, column: 2, scope: !100) +!104 = !DILocation(line: 34, column: 1, scope: !100) diff --git a/test_cases_bc/mem_leak/malloc37.c.bc b/test_cases_bc/mem_leak/malloc37.c.bc index 88c4ea1ef..1cf91ecc4 100644 --- a/test_cases_bc/mem_leak/malloc37.c.bc +++ b/test_cases_bc/mem_leak/malloc37.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc37.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc37.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc37.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc37.c" +target datalayout = "e-m:e-p270:32:32-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.Buf = type { ptr } @@ -13,28 +13,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !24 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -43,10 +40,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -55,10 +52,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -67,10 +64,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -79,10 +76,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -91,10 +88,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !66 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %n.addr, !67, !DIExpression(), !68) %0 = load i32, ptr %n.addr, align 4, !dbg !69 %conv = sext i32 %0 to i64, !dbg !69 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !70 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !70 ret ptr %call, !dbg !71 } @@ -102,12 +99,12 @@ entry: define dso_local ptr @readBuf() #0 !dbg !72 { entry: %buf = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf, metadata !76, metadata !DIExpression()), !dbg !77 + #dbg_declare(ptr %buf, !76, !DIExpression(), !77) %call = call ptr @NFRMALLOC(i32 noundef 10), !dbg !78 store ptr %call, ptr %buf, align 8, !dbg !77 %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !79 %0 = load ptr, ptr %buf, align 8, !dbg !80 - %name = getelementptr inbounds %struct.Buf, ptr %0, i32 0, i32 0, !dbg !81 + %name = getelementptr inbounds nuw %struct.Buf, ptr %0, i32 0, i32 0, !dbg !81 store ptr %call1, ptr %name, align 8, !dbg !82 %1 = load ptr, ptr %buf, align 8, !dbg !83 ret ptr %1, !dbg !84 @@ -118,39 +115,38 @@ define dso_local i32 @main() #0 !dbg !85 { entry: %buf = alloca ptr, align 8 %buf1 = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf, metadata !88, metadata !DIExpression()), !dbg !89 + #dbg_declare(ptr %buf, !88, !DIExpression(), !89) %call = call ptr @readBuf(), !dbg !90 store ptr %call, ptr %buf, align 8, !dbg !89 %0 = load ptr, ptr %buf, align 8, !dbg !91 - %name = getelementptr inbounds %struct.Buf, ptr %0, i32 0, i32 0, !dbg !92 + %name = getelementptr inbounds nuw %struct.Buf, ptr %0, i32 0, i32 0, !dbg !92 %1 = load ptr, ptr %name, align 8, !dbg !92 %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %1), !dbg !93 - call void @llvm.dbg.declare(metadata ptr %buf1, metadata !94, metadata !DIExpression()), !dbg !95 + #dbg_declare(ptr %buf1, !94, !DIExpression(), !95) %call2 = call ptr @readBuf(), !dbg !96 store ptr %call2, ptr %buf1, align 8, !dbg !95 %2 = load ptr, ptr %buf, align 8, !dbg !97 - %name3 = getelementptr inbounds %struct.Buf, ptr %2, i32 0, i32 0, !dbg !98 + %name3 = getelementptr inbounds nuw %struct.Buf, ptr %2, i32 0, i32 0, !dbg !98 %3 = load ptr, ptr %name3, align 8, !dbg !98 - call void @free(ptr noundef %3) #6, !dbg !99 + call void @free(ptr noundef %3) #5, !dbg !99 %4 = load ptr, ptr %buf1, align 8, !dbg !100 - %name4 = getelementptr inbounds %struct.Buf, ptr %4, i32 0, i32 0, !dbg !101 + %name4 = getelementptr inbounds nuw %struct.Buf, ptr %4, i32 0, i32 0, !dbg !101 %5 = load ptr, ptr %name4, align 8, !dbg !101 %call5 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %5), !dbg !102 ret i32 0, !dbg !103 } -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +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 allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0) } -attributes #6 = { nounwind } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!9} !llvm.module.flags = !{!16, !17, !18, !19, !20, !21, !22} @@ -158,15 +154,15 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 29, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc37.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d9a3901b6c2fcf743daea3ef726a4537") +!2 = !DIFile(filename: "src/mem_leak/malloc37.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "d9a3901b6c2fcf743daea3ef726a4537") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) !7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) !8 = distinct !DIGlobalVariable(name: "Buf", scope: !9, file: !2, line: 14, type: !12, isLocal: false, 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/mem_leak/malloc37.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d9a3901b6c2fcf743daea3ef726a4537") +!9 = distinct !DICompileUnit(language: DW_LANG_C11, file: !10, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !11, splitDebugInlining: false, nameTableKind: None) +!10 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc37.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "d9a3901b6c2fcf743daea3ef726a4537") !11 = !{!0, !7} !12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Buf", file: !2, line: 10, size: 64, elements: !13) !13 = !{!14} @@ -179,9 +175,9 @@ attributes #6 = { nounwind } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !24 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !25, file: !25, line: 5, type: !26, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !9, retainedNodes: !30) -!25 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!25 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !26 = !DISubroutineType(types: !27) !27 = !{!28, !29} !28 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc38.c.bc b/test_cases_bc/mem_leak/malloc38.c.bc index 71f19ecf3..d9e8cd5ab 100644 --- a/test_cases_bc/mem_leak/malloc38.c.bc +++ b/test_cases_bc/mem_leak/malloc38.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc38.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc38.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc38.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc38.c" +target datalayout = "e-m:e-p270:32:32-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.Buf = type { ptr } @@ -13,28 +13,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !24 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -43,10 +40,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -55,10 +52,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -67,10 +64,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -79,10 +76,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -91,10 +88,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !66 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %n.addr, !67, !DIExpression(), !68) %0 = load i32, ptr %n.addr, align 4, !dbg !69 %conv = sext i32 %0 to i64, !dbg !69 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !70 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !70 ret ptr %call, !dbg !71 } @@ -102,12 +99,12 @@ entry: define dso_local ptr @readBuf() #0 !dbg !72 { entry: %buf = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf, metadata !76, metadata !DIExpression()), !dbg !77 + #dbg_declare(ptr %buf, !76, !DIExpression(), !77) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !78 store ptr %call, ptr %buf, align 8, !dbg !77 %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !79 %0 = load ptr, ptr %buf, align 8, !dbg !80 - %name = getelementptr inbounds %struct.Buf, ptr %0, i32 0, i32 0, !dbg !81 + %name = getelementptr inbounds nuw %struct.Buf, ptr %0, i32 0, i32 0, !dbg !81 store ptr %call1, ptr %name, align 8, !dbg !82 %1 = load ptr, ptr %buf, align 8, !dbg !83 ret ptr %1, !dbg !84 @@ -118,25 +115,25 @@ define dso_local void @freeBuf(ptr noundef %buf) #0 !dbg !85 { entry: %buf.addr = alloca ptr, align 8 store ptr %buf, ptr %buf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf.addr, metadata !88, metadata !DIExpression()), !dbg !89 + #dbg_declare(ptr %buf.addr, !88, !DIExpression(), !89) %0 = load ptr, ptr %buf.addr, align 8, !dbg !90 - %name = getelementptr inbounds %struct.Buf, ptr %0, i32 0, i32 0, !dbg !91 + %name = getelementptr inbounds nuw %struct.Buf, ptr %0, i32 0, i32 0, !dbg !91 %1 = load ptr, ptr %name, align 8, !dbg !91 - call void @free(ptr noundef %1) #6, !dbg !92 + call void @free(ptr noundef %1) #5, !dbg !92 %2 = load ptr, ptr %buf.addr, align 8, !dbg !93 - call void @free(ptr noundef %2) #6, !dbg !94 + call void @free(ptr noundef %2) #5, !dbg !94 ret void, !dbg !95 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @SerialReadBuf() #0 !dbg !96 { entry: %n = alloca i32, align 4 %buf = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %n, metadata !99, metadata !DIExpression()), !dbg !100 + #dbg_declare(ptr %n, !99, !DIExpression(), !100) br label %while.cond, !dbg !101 while.cond: ; preds = %if.end, %entry @@ -145,7 +142,7 @@ while.cond: ; preds = %if.end, %entry br i1 %tobool, label %while.body, label %while.end, !dbg !101 while.body: ; preds = %while.cond - call void @llvm.dbg.declare(metadata ptr %buf, metadata !103, metadata !DIExpression()), !dbg !105 + #dbg_declare(ptr %buf, !103, !DIExpression(), !105) %call = call ptr @readBuf(), !dbg !106 store ptr %call, ptr %buf, align 8, !dbg !105 %1 = load i32, ptr %n, align 4, !dbg !107 @@ -153,36 +150,35 @@ while.body: ; preds = %while.cond %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %1, ptr noundef %2), !dbg !109 %3 = load i32, ptr %n, align 4, !dbg !110 %tobool2 = icmp ne i32 %3, 0, !dbg !110 - br i1 %tobool2, label %if.then, label %if.end, !dbg !112 + br i1 %tobool2, label %if.then, label %if.end, !dbg !110 if.then: ; preds = %while.body - br label %if.end, !dbg !113 + br label %if.end, !dbg !112 if.end: ; preds = %if.then, %while.body - %4 = load ptr, ptr %buf, align 8, !dbg !115 - call void @freeBuf(ptr noundef %4), !dbg !116 - br label %while.cond, !dbg !101, !llvm.loop !117 + %4 = load ptr, ptr %buf, align 8, !dbg !114 + call void @freeBuf(ptr noundef %4), !dbg !115 + br label %while.cond, !dbg !101, !llvm.loop !116 while.end: ; preds = %while.cond - ret void, !dbg !120 + ret void, !dbg !119 } -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !121 { +define dso_local i32 @main() #0 !dbg !120 { entry: - call void @SerialReadBuf(), !dbg !124 - ret i32 0, !dbg !125 + call void @SerialReadBuf(), !dbg !123 + ret i32 0, !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 = { 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!9} !llvm.module.flags = !{!16, !17, !18, !19, !20, !21, !22} @@ -190,15 +186,15 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 36, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc38.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e9b74e0948e09ea162ce71094ef2c6d4") +!2 = !DIFile(filename: "src/mem_leak/malloc38.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "e9b74e0948e09ea162ce71094ef2c6d4") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 5) !7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) !8 = distinct !DIGlobalVariable(name: "Buf", scope: !9, file: !2, line: 14, type: !12, isLocal: false, 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/mem_leak/malloc38.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e9b74e0948e09ea162ce71094ef2c6d4") +!9 = distinct !DICompileUnit(language: DW_LANG_C11, file: !10, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !11, splitDebugInlining: false, nameTableKind: None) +!10 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc38.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "e9b74e0948e09ea162ce71094ef2c6d4") !11 = !{!0, !7} !12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Buf", file: !2, line: 10, size: 64, elements: !13) !13 = !{!14} @@ -211,9 +207,9 @@ attributes #6 = { nounwind } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !24 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !25, file: !25, line: 5, type: !26, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !9, retainedNodes: !30) -!25 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!25 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !26 = !DISubroutineType(types: !27) !27 = !{!28, !29} !28 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -300,17 +296,16 @@ attributes #6 = { nounwind } !109 = !DILocation(line: 36, column: 4, scope: !104) !110 = !DILocation(line: 38, column: 6, scope: !111) !111 = distinct !DILexicalBlock(scope: !104, file: !2, line: 38, column: 6) -!112 = !DILocation(line: 38, column: 6, scope: !104) -!113 = !DILocation(line: 40, column: 3, scope: !114) -!114 = distinct !DILexicalBlock(scope: !111, file: !2, line: 38, column: 8) -!115 = !DILocation(line: 41, column: 11, scope: !104) -!116 = !DILocation(line: 41, column: 3, scope: !104) -!117 = distinct !{!117, !101, !118, !119} -!118 = !DILocation(line: 44, column: 2, scope: !96) -!119 = !{!"llvm.loop.mustprogress"} -!120 = !DILocation(line: 47, column: 1, scope: !96) -!121 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 50, type: !122, scopeLine: 50, spFlags: DISPFlagDefinition, unit: !9, retainedNodes: !30) -!122 = !DISubroutineType(types: !123) -!123 = !{!29} -!124 = !DILocation(line: 51, column: 1, scope: !121) -!125 = !DILocation(line: 53, column: 1, scope: !121) +!112 = !DILocation(line: 40, column: 3, scope: !113) +!113 = distinct !DILexicalBlock(scope: !111, file: !2, line: 38, column: 8) +!114 = !DILocation(line: 41, column: 11, scope: !104) +!115 = !DILocation(line: 41, column: 3, scope: !104) +!116 = distinct !{!116, !101, !117, !118} +!117 = !DILocation(line: 44, column: 2, scope: !96) +!118 = !{!"llvm.loop.mustprogress"} +!119 = !DILocation(line: 47, column: 1, scope: !96) +!120 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 50, type: !121, scopeLine: 50, spFlags: DISPFlagDefinition, unit: !9) +!121 = !DISubroutineType(types: !122) +!122 = !{!29} +!123 = !DILocation(line: 51, column: 1, scope: !120) +!124 = !DILocation(line: 53, column: 1, scope: !120) diff --git a/test_cases_bc/mem_leak/malloc39.c.bc b/test_cases_bc/mem_leak/malloc39.c.bc index 04f73c5b0..71ee67eaa 100644 --- a/test_cases_bc/mem_leak/malloc39.c.bc +++ b/test_cases_bc/mem_leak/malloc39.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc39.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc39.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc39.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc39.c" +target datalayout = "e-m:e-p270:32:32-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"%s\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -99,7 +96,7 @@ entry: define dso_local ptr @readBuf() #0 !dbg !66 { entry: %mBuf = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %mBuf, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %mBuf, !71, !DIExpression(), !72) %call = call ptr @PLKMALLOC(i32 noundef 10), !dbg !73 store ptr %call, ptr %mBuf, align 8, !dbg !72 %call1 = call ptr @PLKMALLOC(i32 noundef 10), !dbg !74 @@ -114,24 +111,24 @@ define dso_local void @freeBuf(ptr noundef %fBuf) #0 !dbg !79 { entry: %fBuf.addr = alloca ptr, align 8 store ptr %fBuf, ptr %fBuf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %fBuf.addr, metadata !82, metadata !DIExpression()), !dbg !83 + #dbg_declare(ptr %fBuf.addr, !82, !DIExpression(), !83) %0 = load ptr, ptr %fBuf.addr, align 8, !dbg !84 %1 = load ptr, ptr %0, align 8, !dbg !85 - call void @free(ptr noundef %1) #6, !dbg !86 + call void @free(ptr noundef %1) #5, !dbg !86 %2 = load ptr, ptr %fBuf.addr, align 8, !dbg !87 - call void @free(ptr noundef %2) #6, !dbg !88 + call void @free(ptr noundef %2) #5, !dbg !88 ret void, !dbg !89 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @SerialReadBuf() #0 !dbg !90 { entry: %n = alloca i32, align 4 %buf = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %n, metadata !93, metadata !DIExpression()), !dbg !94 + #dbg_declare(ptr %n, !93, !DIExpression(), !94) store i32 0, ptr %n, align 4, !dbg !95 br label %for.cond, !dbg !97 @@ -141,54 +138,53 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end, !dbg !101 for.body: ; preds = %for.cond - call void @llvm.dbg.declare(metadata ptr %buf, metadata !102, metadata !DIExpression()), !dbg !104 + #dbg_declare(ptr %buf, !102, !DIExpression(), !104) %call = call ptr @readBuf(), !dbg !105 store ptr %call, ptr %buf, align 8, !dbg !104 %1 = load ptr, ptr %buf, align 8, !dbg !106 %2 = load ptr, ptr %1, align 8, !dbg !108 %cmp1 = icmp ne ptr %2, inttoptr (i64 10 to ptr), !dbg !109 - br i1 %cmp1, label %if.then, label %if.else, !dbg !110 + br i1 %cmp1, label %if.then, label %if.else, !dbg !109 if.then: ; preds = %for.body - %3 = load ptr, ptr %buf, align 8, !dbg !111 - %4 = load ptr, ptr %3, align 8, !dbg !113 - %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %4), !dbg !114 - br label %if.end, !dbg !115 + %3 = load ptr, ptr %buf, align 8, !dbg !110 + %4 = load ptr, ptr %3, align 8, !dbg !112 + %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %4), !dbg !113 + br label %if.end, !dbg !114 if.else: ; preds = %for.body - br label %for.inc, !dbg !116 + br label %for.inc, !dbg !115 if.end: ; preds = %if.then - %5 = load ptr, ptr %buf, align 8, !dbg !118 - call void @freeBuf(ptr noundef %5), !dbg !119 - br label %for.inc, !dbg !120 + %5 = load ptr, ptr %buf, align 8, !dbg !117 + call void @freeBuf(ptr noundef %5), !dbg !118 + br label %for.inc, !dbg !119 for.inc: ; preds = %if.end, %if.else - %6 = load i32, ptr %n, align 4, !dbg !121 - %inc = add nsw i32 %6, 1, !dbg !121 - store i32 %inc, ptr %n, align 4, !dbg !121 - br label %for.cond, !dbg !122, !llvm.loop !123 + %6 = load i32, ptr %n, align 4, !dbg !120 + %inc = add nsw i32 %6, 1, !dbg !120 + store i32 %inc, ptr %n, align 4, !dbg !120 + br label %for.cond, !dbg !121, !llvm.loop !122 for.end: ; preds = %for.cond - ret void, !dbg !126 + ret void, !dbg !125 } -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !127 { +define dso_local i32 @main() #0 !dbg !126 { entry: - call void @SerialReadBuf(), !dbg !130 - ret i32 0, !dbg !131 + call void @SerialReadBuf(), !dbg !129 + ret i32 0, !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 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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -196,13 +192,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 30, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc39.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8014c3460fc852e7b59a4d9aa7a46ffc") +!2 = !DIFile(filename: "src/mem_leak/malloc39.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "8014c3460fc852e7b59a4d9aa7a46ffc") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc39.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8014c3460fc852e7b59a4d9aa7a46ffc") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc39.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "8014c3460fc852e7b59a4d9aa7a46ffc") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -211,9 +207,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -304,25 +300,24 @@ attributes #6 = { nounwind } !107 = distinct !DILexicalBlock(scope: !103, file: !2, line: 29, column: 6) !108 = !DILocation(line: 29, column: 6, scope: !107) !109 = !DILocation(line: 29, column: 10, scope: !107) -!110 = !DILocation(line: 29, column: 6, scope: !103) -!111 = !DILocation(line: 30, column: 17, scope: !112) -!112 = distinct !DILexicalBlock(scope: !107, file: !2, line: 29, column: 17) -!113 = !DILocation(line: 30, column: 16, scope: !112) -!114 = !DILocation(line: 30, column: 4, scope: !112) -!115 = !DILocation(line: 31, column: 3, scope: !112) -!116 = !DILocation(line: 33, column: 4, scope: !117) -!117 = distinct !DILexicalBlock(scope: !107, file: !2, line: 32, column: 7) -!118 = !DILocation(line: 37, column: 11, scope: !103) -!119 = !DILocation(line: 37, column: 3, scope: !103) -!120 = !DILocation(line: 38, column: 2, scope: !103) -!121 = !DILocation(line: 26, column: 23, scope: !99) -!122 = !DILocation(line: 26, column: 2, scope: !99) -!123 = distinct !{!123, !101, !124, !125} -!124 = !DILocation(line: 38, column: 2, scope: !96) -!125 = !{!"llvm.loop.mustprogress"} -!126 = !DILocation(line: 39, column: 1, scope: !90) -!127 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 41, type: !128, scopeLine: 41, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!128 = !DISubroutineType(types: !129) -!129 = !{!23} -!130 = !DILocation(line: 43, column: 2, scope: !127) -!131 = !DILocation(line: 44, column: 1, scope: !127) +!110 = !DILocation(line: 30, column: 17, scope: !111) +!111 = distinct !DILexicalBlock(scope: !107, file: !2, line: 29, column: 17) +!112 = !DILocation(line: 30, column: 16, scope: !111) +!113 = !DILocation(line: 30, column: 4, scope: !111) +!114 = !DILocation(line: 31, column: 3, scope: !111) +!115 = !DILocation(line: 33, column: 4, scope: !116) +!116 = distinct !DILexicalBlock(scope: !107, file: !2, line: 32, column: 7) +!117 = !DILocation(line: 37, column: 11, scope: !103) +!118 = !DILocation(line: 37, column: 3, scope: !103) +!119 = !DILocation(line: 38, column: 2, scope: !103) +!120 = !DILocation(line: 26, column: 23, scope: !99) +!121 = !DILocation(line: 26, column: 2, scope: !99) +!122 = distinct !{!122, !101, !123, !124} +!123 = !DILocation(line: 38, column: 2, scope: !96) +!124 = !{!"llvm.loop.mustprogress"} +!125 = !DILocation(line: 39, column: 1, scope: !90) +!126 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 41, type: !127, scopeLine: 41, spFlags: DISPFlagDefinition, unit: !7) +!127 = !DISubroutineType(types: !128) +!128 = !{!23} +!129 = !DILocation(line: 43, column: 2, scope: !126) +!130 = !DILocation(line: 44, column: 1, scope: !126) diff --git a/test_cases_bc/mem_leak/malloc4.c.bc b/test_cases_bc/mem_leak/malloc4.c.bc index 27ea2aeed..5d0d5c9fc 100644 --- a/test_cases_bc/mem_leak/malloc4.c.bc +++ b/test_cases_bc/mem_leak/malloc4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc4.c" +target datalayout = "e-m:e-p270:32:32-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 { i64, i64, i64, double, ptr, ptr, ptr } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -101,15 +98,15 @@ entry: %retval = alloca i32, align 4 %s.addr = alloca ptr, align 8 store ptr %s, ptr %s.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %s.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %s.addr, !63, !DIExpression(), !64) %0 = load ptr, ptr %s.addr, align 8, !dbg !65 - call void @free(ptr noundef %0) #5, !dbg !66 + call void @free(ptr noundef %0) #4, !dbg !66 %1 = load i32, ptr %retval, align 4, !dbg !67 ret i32 %1, !dbg !67 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @foo(ptr noundef %net) #0 !dbg !68 { @@ -119,23 +116,23 @@ entry: %p = alloca ptr, align 8 %q = alloca ptr, align 8 store ptr %net, ptr %net.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %net.addr, metadata !84, metadata !DIExpression()), !dbg !85 - call void @llvm.dbg.declare(metadata ptr %p, metadata !86, metadata !DIExpression()), !dbg !87 + #dbg_declare(ptr %net.addr, !84, !DIExpression(), !85) + #dbg_declare(ptr %p, !86, !DIExpression(), !87) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !88 store ptr %call, ptr %p, align 8, !dbg !87 - call void @llvm.dbg.declare(metadata ptr %q, metadata !89, metadata !DIExpression()), !dbg !90 + #dbg_declare(ptr %q, !89, !DIExpression(), !90) %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !91 store ptr %call1, ptr %q, align 8, !dbg !90 %0 = load ptr, ptr %p, align 8, !dbg !92 %1 = load ptr, ptr %net.addr, align 8, !dbg !93 - %arcs = getelementptr inbounds %struct.network, ptr %1, i32 0, i32 4, !dbg !94 + %arcs = getelementptr inbounds nuw %struct.network, ptr %1, i32 0, i32 4, !dbg !94 store ptr %0, ptr %arcs, align 8, !dbg !95 %2 = load ptr, ptr %q, align 8, !dbg !96 %3 = load ptr, ptr %net.addr, align 8, !dbg !97 - %stop = getelementptr inbounds %struct.network, ptr %3, i32 0, i32 5, !dbg !98 + %stop = getelementptr inbounds nuw %struct.network, ptr %3, i32 0, i32 5, !dbg !98 store ptr %2, ptr %stop, align 8, !dbg !99 %4 = load ptr, ptr %net.addr, align 8, !dbg !100 - %arcs2 = getelementptr inbounds %struct.network, ptr %4, i32 0, i32 4, !dbg !101 + %arcs2 = getelementptr inbounds nuw %struct.network, ptr %4, i32 0, i32 4, !dbg !101 %5 = load ptr, ptr %arcs2, align 8, !dbg !101 %call3 = call i32 @bar(ptr noundef %5), !dbg !102 %6 = load i32, ptr %retval, align 4, !dbg !103 @@ -146,24 +143,23 @@ entry: define dso_local i32 @main() #0 !dbg !104 { entry: %net = alloca %struct.network, align 8 - call void @llvm.dbg.declare(metadata ptr %net, metadata !107, metadata !DIExpression()), !dbg !108 + #dbg_declare(ptr %net, !107, !DIExpression(), !108) %call = call i32 @foo(ptr noundef %net), !dbg !109 ret i32 0, !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 = { 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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc4.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "72c8e9d3a200688d8bf45b02ccc901cd") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc4.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "72c8e9d3a200688d8bf45b02ccc901cd") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -171,9 +167,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -221,7 +217,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "bar", scope: !59, file: !59, line: 22, type: !60, scopeLine: 22, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc4.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "72c8e9d3a200688d8bf45b02ccc901cd") +!59 = !DIFile(filename: "src/mem_leak/malloc4.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "72c8e9d3a200688d8bf45b02ccc901cd") !60 = !DISubroutineType(types: !61) !61 = !{!15, !62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) diff --git a/test_cases_bc/mem_leak/malloc40.c.bc b/test_cases_bc/mem_leak/malloc40.c.bc index c3802e22a..d2457a7e4 100644 --- a/test_cases_bc/mem_leak/malloc40.c.bc +++ b/test_cases_bc/mem_leak/malloc40.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc40.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc40.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc40.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc40.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !64 ret ptr %call, !dbg !65 } @@ -101,20 +98,21 @@ entry: %p = alloca ptr, align 8 %q = alloca ptr, align 8 %r = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !69, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %p, !69, !DIExpression(), !71) %call = call ptr @NFRMALLOC(i32 noundef 1), !dbg !72 store ptr %call, ptr %p, align 8, !dbg !71 - call void @llvm.dbg.declare(metadata ptr %q, metadata !73, metadata !DIExpression()), !dbg !74 + #dbg_declare(ptr %q, !73, !DIExpression(), !74) store ptr %p, ptr %q, align 8, !dbg !74 - call void @llvm.dbg.declare(metadata ptr %r, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %r, !75, !DIExpression(), !76) %0 = load ptr, ptr %p, align 8, !dbg !77 store ptr %0, ptr %r, align 8, !dbg !76 %1 = load ptr, ptr %r, align 8, !dbg !78 - %call1 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef @.str, ptr noundef %1), !dbg !79 + %call1 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef @.str, ptr noundef %1) #4, !dbg !79 ret void, !dbg !80 } -declare i32 @fprintf(ptr noundef, ptr noundef, ...) #3 +; Function Attrs: nounwind +declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !81 { @@ -123,11 +121,11 @@ entry: ret i32 0, !dbg !85 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -135,13 +133,13 @@ attributes #4 = { nounwind allocsize(0) } !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/mem_leak/malloc40.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4140b1dd084e2f3c61ab08f1202d7efa") +!2 = !DIFile(filename: "src/mem_leak/malloc40.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "4140b1dd084e2f3c61ab08f1202d7efa") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc40.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4140b1dd084e2f3c61ab08f1202d7efa") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc40.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "4140b1dd084e2f3c61ab08f1202d7efa") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -150,9 +148,9 @@ attributes #4 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -214,7 +212,7 @@ attributes #4 = { nounwind allocsize(0) } !78 = !DILocation(line: 18, column: 16, scope: !66) !79 = !DILocation(line: 18, column: 3, scope: !66) !80 = !DILocation(line: 19, column: 1, scope: !66) -!81 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 21, type: !82, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) +!81 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 21, type: !82, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !7) !82 = !DISubroutineType(types: !83) !83 = !{!23} !84 = !DILocation(line: 23, column: 6, scope: !81) diff --git a/test_cases_bc/mem_leak/malloc41.c.bc b/test_cases_bc/mem_leak/malloc41.c.bc index b355ddf6a..4126db9db 100644 --- a/test_cases_bc/mem_leak/malloc41.c.bc +++ b/test_cases_bc/mem_leak/malloc41.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc41.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc41.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc41.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc41.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -100,7 +97,7 @@ define dso_local ptr @bar1(ptr noundef %b) #0 !dbg !66 { entry: %b.addr = alloca ptr, align 8 store ptr %b, ptr %b.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %b.addr, !70, !DIExpression(), !71) %0 = load ptr, ptr %b.addr, align 8, !dbg !72 ret ptr %0, !dbg !73 } @@ -114,16 +111,16 @@ entry: %k = alloca ptr, align 8 %t = alloca ptr, align 8 store ptr %x, ptr %x.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !77, metadata !DIExpression()), !dbg !78 + #dbg_declare(ptr %x.addr, !77, !DIExpression(), !78) store ptr %y, ptr %y.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %y.addr, metadata !79, metadata !DIExpression()), !dbg !80 - call void @llvm.dbg.declare(metadata ptr %k, metadata !81, metadata !DIExpression()), !dbg !82 + #dbg_declare(ptr %y.addr, !79, !DIExpression(), !80) + #dbg_declare(ptr %k, !81, !DIExpression(), !82) %0 = load ptr, ptr %x.addr, align 8, !dbg !83 %call = call ptr @bar1(ptr noundef %0), !dbg !84 store ptr %call, ptr %k, align 8, !dbg !82 %1 = load ptr, ptr %k, align 8, !dbg !85 - call void @free(ptr noundef %1) #6, !dbg !86 - call void @llvm.dbg.declare(metadata ptr %t, metadata !87, metadata !DIExpression()), !dbg !88 + call void @free(ptr noundef %1) #5, !dbg !86 + #dbg_declare(ptr %t, !87, !DIExpression(), !88) %2 = load ptr, ptr %y.addr, align 8, !dbg !89 %call1 = call ptr @bar1(ptr noundef %2), !dbg !90 store ptr %call1, ptr %t, align 8, !dbg !88 @@ -134,9 +131,9 @@ entry: } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @tmp() #0 !dbg !94 { @@ -144,10 +141,10 @@ entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 %q = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !97, metadata !DIExpression()), !dbg !98 + #dbg_declare(ptr %p, !97, !DIExpression(), !98) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !99 store ptr %call, ptr %p, align 8, !dbg !98 - call void @llvm.dbg.declare(metadata ptr %q, metadata !100, metadata !DIExpression()), !dbg !101 + #dbg_declare(ptr %q, !100, !DIExpression(), !101) %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !102 store ptr %call1, ptr %q, align 8, !dbg !101 %0 = load ptr, ptr %p, align 8, !dbg !103 @@ -164,13 +161,12 @@ entry: ret i32 0, !dbg !109 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -178,13 +174,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 21, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc41.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "386085b0d3eb6ed4be789b8378559582") +!2 = !DIFile(filename: "src/mem_leak/malloc41.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "386085b0d3eb6ed4be789b8378559582") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc41.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "386085b0d3eb6ed4be789b8378559582") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc41.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "386085b0d3eb6ed4be789b8378559582") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -193,9 +189,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -283,6 +279,6 @@ attributes #6 = { nounwind } !104 = !DILocation(line: 30, column: 11, scope: !94) !105 = !DILocation(line: 30, column: 5, scope: !94) !106 = !DILocation(line: 32, column: 1, scope: !94) -!107 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 34, type: !95, scopeLine: 34, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) +!107 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 34, type: !95, scopeLine: 34, spFlags: DISPFlagDefinition, unit: !7) !108 = !DILocation(line: 36, column: 4, scope: !107) !109 = !DILocation(line: 37, column: 1, scope: !107) diff --git a/test_cases_bc/mem_leak/malloc42.c.bc b/test_cases_bc/mem_leak/malloc42.c.bc index ac00e1893..71c6d4067 100644 --- a/test_cases_bc/mem_leak/malloc42.c.bc +++ b/test_cases_bc/mem_leak/malloc42.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc42.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc42.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc42.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc42.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -101,9 +98,9 @@ entry: %q = alloca ptr, align 8 %i = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !62, metadata !DIExpression()), !dbg !64 - call void @llvm.dbg.declare(metadata ptr %q, metadata !65, metadata !DIExpression()), !dbg !66 - call void @llvm.dbg.declare(metadata ptr %i, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %p, !62, !DIExpression(), !64) + #dbg_declare(ptr %q, !65, !DIExpression(), !66) + #dbg_declare(ptr %i, !67, !DIExpression(), !68) br label %while.body, !dbg !69 while.body: ; preds = %if.end, %entry @@ -111,41 +108,40 @@ while.body: ; preds = %if.end, %entry store ptr %call, ptr %p, align 8, !dbg !72 %0 = load i32, ptr %i, align 4, !dbg !73 %tobool = icmp ne i32 %0, 0, !dbg !73 - br i1 %tobool, label %if.then, label %if.end, !dbg !75 + br i1 %tobool, label %if.then, label %if.end, !dbg !73 if.then: ; preds = %while.body - %1 = load ptr, ptr %p, align 8, !dbg !76 - store ptr %1, ptr %q, align 8, !dbg !78 - br label %while.end, !dbg !79 + %1 = load ptr, ptr %p, align 8, !dbg !75 + store ptr %1, ptr %q, align 8, !dbg !77 + br label %while.end, !dbg !78 if.end: ; preds = %while.body - %2 = load ptr, ptr %p, align 8, !dbg !80 - call void @free(ptr noundef %2) #5, !dbg !81 - br label %while.body, !dbg !69, !llvm.loop !82 + %2 = load ptr, ptr %p, align 8, !dbg !79 + call void @free(ptr noundef %2) #4, !dbg !80 + br label %while.body, !dbg !69, !llvm.loop !81 while.end: ; preds = %if.then - %3 = load ptr, ptr %q, align 8, !dbg !84 - call void @free(ptr noundef %3) #5, !dbg !85 - %4 = load i32, ptr %retval, align 4, !dbg !86 - ret i32 %4, !dbg !86 + %3 = load ptr, ptr %q, align 8, !dbg !83 + call void @free(ptr noundef %3) #4, !dbg !84 + %4 = load i32, ptr %retval, align 4, !dbg !85 + ret i32 %4, !dbg !85 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc42.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "04c8304492e570924838927cef07c9ad") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc42.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "04c8304492e570924838927cef07c9ad") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -153,9 +149,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -203,7 +199,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc42.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "04c8304492e570924838927cef07c9ad") +!59 = !DIFile(filename: "src/mem_leak/malloc42.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "04c8304492e570924838927cef07c9ad") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "p", scope: !58, file: !59, line: 11, type: !63) @@ -219,15 +215,14 @@ attributes #5 = { nounwind } !72 = !DILocation(line: 14, column: 7, scope: !71) !73 = !DILocation(line: 15, column: 8, scope: !74) !74 = distinct !DILexicalBlock(scope: !71, file: !59, line: 15, column: 8) -!75 = !DILocation(line: 15, column: 8, scope: !71) -!76 = !DILocation(line: 16, column: 11, scope: !77) -!77 = distinct !DILexicalBlock(scope: !74, file: !59, line: 15, column: 10) -!78 = !DILocation(line: 16, column: 9, scope: !77) -!79 = !DILocation(line: 17, column: 4, scope: !77) -!80 = !DILocation(line: 20, column: 7, scope: !71) -!81 = !DILocation(line: 20, column: 2, scope: !71) -!82 = distinct !{!82, !69, !83} -!83 = !DILocation(line: 21, column: 4, scope: !58) -!84 = !DILocation(line: 23, column: 9, scope: !58) -!85 = !DILocation(line: 23, column: 4, scope: !58) -!86 = !DILocation(line: 25, column: 1, scope: !58) +!75 = !DILocation(line: 16, column: 11, scope: !76) +!76 = distinct !DILexicalBlock(scope: !74, file: !59, line: 15, column: 10) +!77 = !DILocation(line: 16, column: 9, scope: !76) +!78 = !DILocation(line: 17, column: 4, scope: !76) +!79 = !DILocation(line: 20, column: 7, scope: !71) +!80 = !DILocation(line: 20, column: 2, scope: !71) +!81 = distinct !{!81, !69, !82} +!82 = !DILocation(line: 21, column: 4, scope: !58) +!83 = !DILocation(line: 23, column: 9, scope: !58) +!84 = !DILocation(line: 23, column: 4, scope: !58) +!85 = !DILocation(line: 25, column: 1, scope: !58) diff --git a/test_cases_bc/mem_leak/malloc43.c.bc b/test_cases_bc/mem_leak/malloc43.c.bc index 9c3ce4210..7bf4306ca 100644 --- a/test_cases_bc/mem_leak/malloc43.c.bc +++ b/test_cases_bc/mem_leak/malloc43.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc43.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc43.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc43.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc43.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -100,9 +97,9 @@ entry: %i = alloca i32, align 4 %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !62, metadata !DIExpression()), !dbg !63 + #dbg_declare(ptr %i, !62, !DIExpression(), !63) store i32 3, ptr %i, align 4, !dbg !63 - call void @llvm.dbg.declare(metadata ptr %p, metadata !64, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %p, !64, !DIExpression(), !66) store ptr null, ptr %p, align 8, !dbg !66 br label %while.cond, !dbg !67 @@ -121,27 +118,26 @@ while.body: ; preds = %while.cond while.end: ; preds = %while.cond %2 = load ptr, ptr %p, align 8, !dbg !77 - call void @free(ptr noundef %2) #5, !dbg !78 + call void @free(ptr noundef %2) #4, !dbg !78 %3 = load i32, ptr %retval, align 4, !dbg !79 ret i32 %3, !dbg !79 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc43.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "491fa5ae976fcaf7469823af92bc5111") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc43.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "491fa5ae976fcaf7469823af92bc5111") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -149,9 +145,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -199,7 +195,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc43.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "491fa5ae976fcaf7469823af92bc5111") +!59 = !DIFile(filename: "src/mem_leak/malloc43.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "491fa5ae976fcaf7469823af92bc5111") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "i", scope: !58, file: !59, line: 12, type: !15) diff --git a/test_cases_bc/mem_leak/malloc44.c.bc b/test_cases_bc/mem_leak/malloc44.c.bc index 2568de1f6..87c4b0396 100644 --- a/test_cases_bc/mem_leak/malloc44.c.bc +++ b/test_cases_bc/mem_leak/malloc44.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc44.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc44.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc44.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc44.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,9 +96,9 @@ entry: %p.addr = alloca ptr, align 8 %q.addr = alloca ptr, align 8 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !64, metadata !DIExpression()), !dbg !65 + #dbg_declare(ptr %p.addr, !64, !DIExpression(), !65) store ptr %q, ptr %q.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %q.addr, metadata !66, metadata !DIExpression()), !dbg !67 + #dbg_declare(ptr %q.addr, !66, !DIExpression(), !67) %0 = load ptr, ptr %q.addr, align 8, !dbg !68 %1 = load ptr, ptr %p.addr, align 8, !dbg !69 store ptr %0, ptr %1, align 8, !dbg !70 @@ -115,10 +112,10 @@ entry: %p2 = alloca ptr, align 8 %q1 = alloca ptr, align 8 %q2 = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p1, metadata !75, metadata !DIExpression()), !dbg !76 - call void @llvm.dbg.declare(metadata ptr %p2, metadata !77, metadata !DIExpression()), !dbg !78 - call void @llvm.dbg.declare(metadata ptr %q1, metadata !79, metadata !DIExpression()), !dbg !80 - call void @llvm.dbg.declare(metadata ptr %q2, metadata !81, metadata !DIExpression()), !dbg !82 + #dbg_declare(ptr %p1, !75, !DIExpression(), !76) + #dbg_declare(ptr %p2, !77, !DIExpression(), !78) + #dbg_declare(ptr %q1, !79, !DIExpression(), !80) + #dbg_declare(ptr %q2, !81, !DIExpression(), !82) %call = call ptr @NFRMALLOC(i32 noundef 1), !dbg !83 store ptr %call, ptr %q1, align 8, !dbg !84 %call1 = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !85 @@ -128,26 +125,25 @@ entry: %1 = load ptr, ptr %q2, align 8, !dbg !89 call void @foo(ptr noundef %p2, ptr noundef %1), !dbg !90 %2 = load ptr, ptr %p2, align 8, !dbg !91 - call void @free(ptr noundef %2) #5, !dbg !92 + call void @free(ptr noundef %2) #4, !dbg !92 ret i32 0, !dbg !93 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc44.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2cac75f3b4e61aff61be2efcdc3fd1c8") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc44.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "2cac75f3b4e61aff61be2efcdc3fd1c8") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -155,9 +151,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -205,7 +201,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "foo", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc44.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2cac75f3b4e61aff61be2efcdc3fd1c8") +!59 = !DIFile(filename: "src/mem_leak/malloc44.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "2cac75f3b4e61aff61be2efcdc3fd1c8") !60 = !DISubroutineType(types: !61) !61 = !{null, !62, !63} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !63, size: 64) diff --git a/test_cases_bc/mem_leak/malloc45.c.bc b/test_cases_bc/mem_leak/malloc45.c.bc index 32e514628..0c2be7ba2 100644 --- a/test_cases_bc/mem_leak/malloc45.c.bc +++ b/test_cases_bc/mem_leak/malloc45.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc45.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc45.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc45.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc45.c" +target datalayout = "e-m:e-p270:32:32-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"%s\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -99,7 +96,7 @@ entry: define dso_local ptr @readBuf() #0 !dbg !66 { entry: %mBuf = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %mBuf, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %mBuf, !71, !DIExpression(), !72) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !73 store ptr %call, ptr %mBuf, align 8, !dbg !72 %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !74 @@ -114,21 +111,21 @@ define dso_local void @freeBuf(ptr noundef %fBuf) #0 !dbg !79 { entry: %fBuf.addr = alloca ptr, align 8 store ptr %fBuf, ptr %fBuf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %fBuf.addr, metadata !82, metadata !DIExpression()), !dbg !83 + #dbg_declare(ptr %fBuf.addr, !82, !DIExpression(), !83) %0 = load ptr, ptr %fBuf.addr, align 8, !dbg !84 - call void @free(ptr noundef %0) #6, !dbg !85 + call void @free(ptr noundef %0) #5, !dbg !85 ret void, !dbg !86 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @SerialReadBuf() #0 !dbg !87 { entry: %n = alloca i32, align 4 %buf = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %n, metadata !90, metadata !DIExpression()), !dbg !91 + #dbg_declare(ptr %n, !90, !DIExpression(), !91) store i32 0, ptr %n, align 4, !dbg !92 br label %for.cond, !dbg !94 @@ -138,54 +135,53 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end, !dbg !98 for.body: ; preds = %for.cond - call void @llvm.dbg.declare(metadata ptr %buf, metadata !99, metadata !DIExpression()), !dbg !101 + #dbg_declare(ptr %buf, !99, !DIExpression(), !101) %call = call ptr @readBuf(), !dbg !102 store ptr %call, ptr %buf, align 8, !dbg !101 %1 = load ptr, ptr %buf, align 8, !dbg !103 %2 = load ptr, ptr %1, align 8, !dbg !105 %cmp1 = icmp ne ptr %2, inttoptr (i64 10 to ptr), !dbg !106 - br i1 %cmp1, label %if.then, label %if.else, !dbg !107 + br i1 %cmp1, label %if.then, label %if.else, !dbg !106 if.then: ; preds = %for.body - %3 = load ptr, ptr %buf, align 8, !dbg !108 - %4 = load ptr, ptr %3, align 8, !dbg !110 - %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %4), !dbg !111 - br label %if.end, !dbg !112 + %3 = load ptr, ptr %buf, align 8, !dbg !107 + %4 = load ptr, ptr %3, align 8, !dbg !109 + %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %4), !dbg !110 + br label %if.end, !dbg !111 if.else: ; preds = %for.body br label %if.end if.end: ; preds = %if.else, %if.then - %5 = load ptr, ptr %buf, align 8, !dbg !113 - call void @freeBuf(ptr noundef %5), !dbg !114 - br label %for.inc, !dbg !115 + %5 = load ptr, ptr %buf, align 8, !dbg !112 + call void @freeBuf(ptr noundef %5), !dbg !113 + br label %for.inc, !dbg !114 for.inc: ; preds = %if.end - %6 = load i32, ptr %n, align 4, !dbg !116 - %inc = add nsw i32 %6, 1, !dbg !116 - store i32 %inc, ptr %n, align 4, !dbg !116 - br label %for.cond, !dbg !117, !llvm.loop !118 + %6 = load i32, ptr %n, align 4, !dbg !115 + %inc = add nsw i32 %6, 1, !dbg !115 + store i32 %inc, ptr %n, align 4, !dbg !115 + br label %for.cond, !dbg !116, !llvm.loop !117 for.end: ; preds = %for.cond - ret void, !dbg !121 + ret void, !dbg !120 } -declare i32 @printf(ptr noundef, ...) #4 +declare i32 @printf(ptr noundef, ...) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !122 { +define dso_local i32 @main() #0 !dbg !121 { entry: - call void @SerialReadBuf(), !dbg !125 - ret i32 0, !dbg !126 + call void @SerialReadBuf(), !dbg !124 + ret i32 0, !dbg !125 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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 allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -193,13 +189,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 30, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc45.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "965d0230705cabdc0e1b683275a2fd87") +!2 = !DIFile(filename: "src/mem_leak/malloc45.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "965d0230705cabdc0e1b683275a2fd87") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc45.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "965d0230705cabdc0e1b683275a2fd87") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc45.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "965d0230705cabdc0e1b683275a2fd87") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -208,9 +204,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -298,23 +294,22 @@ attributes #6 = { nounwind } !104 = distinct !DILexicalBlock(scope: !100, file: !2, line: 29, column: 6) !105 = !DILocation(line: 29, column: 6, scope: !104) !106 = !DILocation(line: 29, column: 10, scope: !104) -!107 = !DILocation(line: 29, column: 6, scope: !100) -!108 = !DILocation(line: 30, column: 17, scope: !109) -!109 = distinct !DILexicalBlock(scope: !104, file: !2, line: 29, column: 17) -!110 = !DILocation(line: 30, column: 16, scope: !109) -!111 = !DILocation(line: 30, column: 4, scope: !109) -!112 = !DILocation(line: 31, column: 3, scope: !109) -!113 = !DILocation(line: 37, column: 11, scope: !100) -!114 = !DILocation(line: 37, column: 3, scope: !100) -!115 = !DILocation(line: 38, column: 2, scope: !100) -!116 = !DILocation(line: 26, column: 23, scope: !96) -!117 = !DILocation(line: 26, column: 2, scope: !96) -!118 = distinct !{!118, !98, !119, !120} -!119 = !DILocation(line: 38, column: 2, scope: !93) -!120 = !{!"llvm.loop.mustprogress"} -!121 = !DILocation(line: 39, column: 1, scope: !87) -!122 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 41, type: !123, scopeLine: 41, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!123 = !DISubroutineType(types: !124) -!124 = !{!23} -!125 = !DILocation(line: 43, column: 2, scope: !122) -!126 = !DILocation(line: 44, column: 1, scope: !122) +!107 = !DILocation(line: 30, column: 17, scope: !108) +!108 = distinct !DILexicalBlock(scope: !104, file: !2, line: 29, column: 17) +!109 = !DILocation(line: 30, column: 16, scope: !108) +!110 = !DILocation(line: 30, column: 4, scope: !108) +!111 = !DILocation(line: 31, column: 3, scope: !108) +!112 = !DILocation(line: 37, column: 11, scope: !100) +!113 = !DILocation(line: 37, column: 3, scope: !100) +!114 = !DILocation(line: 38, column: 2, scope: !100) +!115 = !DILocation(line: 26, column: 23, scope: !96) +!116 = !DILocation(line: 26, column: 2, scope: !96) +!117 = distinct !{!117, !98, !118, !119} +!118 = !DILocation(line: 38, column: 2, scope: !93) +!119 = !{!"llvm.loop.mustprogress"} +!120 = !DILocation(line: 39, column: 1, scope: !87) +!121 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 41, type: !122, scopeLine: 41, spFlags: DISPFlagDefinition, unit: !7) +!122 = !DISubroutineType(types: !123) +!123 = !{!23} +!124 = !DILocation(line: 43, column: 2, scope: !121) +!125 = !DILocation(line: 44, column: 1, scope: !121) diff --git a/test_cases_bc/mem_leak/malloc46.c.bc b/test_cases_bc/mem_leak/malloc46.c.bc index 1b01b180e..745d41d18 100644 --- a/test_cases_bc/mem_leak/malloc46.c.bc +++ b/test_cases_bc/mem_leak/malloc46.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc46.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc46.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc46.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc46.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,21 +96,21 @@ entry: %p = alloca ptr, align 8 %q = alloca ptr, align 8 %r = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !62, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %p, !62, !DIExpression(), !64) %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !65 store ptr %call, ptr %p, align 8, !dbg !64 - call void @llvm.dbg.declare(metadata ptr %q, metadata !66, metadata !DIExpression()), !dbg !67 + #dbg_declare(ptr %q, !66, !DIExpression(), !67) store ptr %p, ptr %q, align 8, !dbg !67 - call void @llvm.dbg.declare(metadata ptr %r, metadata !68, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %r, !68, !DIExpression(), !69) %0 = load ptr, ptr %p, align 8, !dbg !70 store ptr %0, ptr %r, align 8, !dbg !69 %1 = load ptr, ptr %r, align 8, !dbg !71 - call void @free(ptr noundef %1) #5, !dbg !72 + call void @free(ptr noundef %1) #4, !dbg !72 ret void, !dbg !73 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !74 { @@ -122,19 +119,18 @@ entry: ret i32 0, !dbg !78 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc46.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d71e768c642446addea51ec8e4ba961c") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc46.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "d71e768c642446addea51ec8e4ba961c") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -142,9 +138,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -192,7 +188,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "fun", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc46.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d71e768c642446addea51ec8e4ba961c") +!59 = !DIFile(filename: "src/mem_leak/malloc46.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "d71e768c642446addea51ec8e4ba961c") !60 = !DISubroutineType(types: !61) !61 = !{null} !62 = !DILocalVariable(name: "p", scope: !58, file: !59, line: 12, type: !63) @@ -207,7 +203,7 @@ attributes #5 = { nounwind } !71 = !DILocation(line: 17, column: 7, scope: !58) !72 = !DILocation(line: 17, column: 2, scope: !58) !73 = !DILocation(line: 18, column: 1, scope: !58) -!74 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 20, type: !75, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!74 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 20, type: !75, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !0) !75 = !DISubroutineType(types: !76) !76 = !{!15} !77 = !DILocation(line: 22, column: 2, scope: !74) diff --git a/test_cases_bc/mem_leak/malloc47.c.bc b/test_cases_bc/mem_leak/malloc47.c.bc index fbcf7ae54..676dc29d4 100644 --- a/test_cases_bc/mem_leak/malloc47.c.bc +++ b/test_cases_bc/mem_leak/malloc47.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc47.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc47.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc47.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc47.c" +target datalayout = "e-m:e-p270:32:32-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 [5 x i8] c"%d%d\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !25, metadata !DIExpression()), !dbg !26 + #dbg_declare(ptr %n.addr, !25, !DIExpression(), !26) %0 = load i32, ptr %n.addr, align 4, !dbg !27 %conv = sext i32 %0 to i64, !dbg !27 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !28 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !28 ret ptr %call, !dbg !29 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !30 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !31, metadata !DIExpression()), !dbg !32 + #dbg_declare(ptr %n.addr, !31, !DIExpression(), !32) %0 = load i32, ptr %n.addr, align 4, !dbg !33 %conv = sext i32 %0 to i64, !dbg !33 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !34 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !34 ret ptr %call, !dbg !35 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !36 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !37, metadata !DIExpression()), !dbg !38 + #dbg_declare(ptr %n.addr, !37, !DIExpression(), !38) %0 = load i32, ptr %n.addr, align 4, !dbg !39 %conv = sext i32 %0 to i64, !dbg !39 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !40 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !40 ret ptr %call, !dbg !41 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !42 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !43, metadata !DIExpression()), !dbg !44 + #dbg_declare(ptr %n.addr, !43, !DIExpression(), !44) %0 = load i32, ptr %n.addr, align 4, !dbg !45 %conv = sext i32 %0 to i64, !dbg !45 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !46 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !46 ret ptr %call, !dbg !47 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !48 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !49, metadata !DIExpression()), !dbg !50 + #dbg_declare(ptr %n.addr, !49, !DIExpression(), !50) %0 = load i32, ptr %n.addr, align 4, !dbg !51 %conv = sext i32 %0 to i64, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !52 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !52 ret ptr %call, !dbg !53 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !54 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !55, metadata !DIExpression()), !dbg !56 + #dbg_declare(ptr %n.addr, !55, !DIExpression(), !56) %0 = load i32, ptr %n.addr, align 4, !dbg !57 %conv = sext i32 %0 to i64, !dbg !57 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !58 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !58 ret ptr %call, !dbg !59 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !60 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !61, metadata !DIExpression()), !dbg !62 + #dbg_declare(ptr %n.addr, !61, !DIExpression(), !62) %0 = load i32, ptr %n.addr, align 4, !dbg !63 %conv = sext i32 %0 to i64, !dbg !63 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !64 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !64 ret ptr %call, !dbg !65 } @@ -102,54 +99,53 @@ entry: %a = alloca i32, align 4 %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !69, metadata !DIExpression()), !dbg !70 - call void @llvm.dbg.declare(metadata ptr %p, metadata !71, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %a, !69, !DIExpression(), !70) + #dbg_declare(ptr %p, !71, !DIExpression(), !73) %call = call ptr @PLKMALLOC(i32 noundef 10), !dbg !74 store ptr %call, ptr %p, align 8, !dbg !73 %0 = load ptr, ptr %p, align 8, !dbg !75 store i32 10, ptr %0, align 4, !dbg !76 %1 = load ptr, ptr %p, align 8, !dbg !77 %cmp = icmp eq ptr inttoptr (i64 1 to ptr), %1, !dbg !79 - br i1 %cmp, label %if.then, label %if.end, !dbg !80 + br i1 %cmp, label %if.then, label %if.end, !dbg !79 if.then: ; preds = %entry - store i32 0, ptr %retval, align 4, !dbg !81 - br label %return, !dbg !81 + store i32 0, ptr %retval, align 4, !dbg !80 + br label %return, !dbg !80 if.end: ; preds = %entry - %2 = load ptr, ptr %p, align 8, !dbg !82 - %tobool = icmp ne ptr %2, null, !dbg !82 - br i1 %tobool, label %if.then1, label %if.end3, !dbg !84 + %2 = load ptr, ptr %p, align 8, !dbg !81 + %tobool = icmp ne ptr %2, null, !dbg !81 + br i1 %tobool, label %if.then1, label %if.end3, !dbg !81 if.then1: ; preds = %if.end - %3 = load ptr, ptr %p, align 8, !dbg !85 - %4 = load ptr, ptr %p, align 8, !dbg !87 - %5 = load i32, ptr %4, align 4, !dbg !88 - %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %3, i32 noundef %5), !dbg !89 - br label %if.end3, !dbg !90 + %3 = load ptr, ptr %p, align 8, !dbg !83 + %4 = load ptr, ptr %p, align 8, !dbg !85 + %5 = load i32, ptr %4, align 4, !dbg !86 + %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %3, i32 noundef %5), !dbg !87 + br label %if.end3, !dbg !88 if.end3: ; preds = %if.then1, %if.end - %6 = load ptr, ptr %p, align 8, !dbg !91 - call void @free(ptr noundef %6) #6, !dbg !92 - br label %return, !dbg !93 + %6 = load ptr, ptr %p, align 8, !dbg !89 + call void @free(ptr noundef %6) #5, !dbg !90 + br label %return, !dbg !91 return: ; preds = %if.end3, %if.then - %7 = load i32, ptr %retval, align 4, !dbg !93 - ret i32 %7, !dbg !93 + %7 = load i32, ptr %retval, align 4, !dbg !91 + ret i32 %7, !dbg !91 } -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +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 allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0) } -attributes #6 = { nounwind } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} @@ -157,13 +153,13 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 17, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc47.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "efdbf375123b2bc63fac12b239205164") +!2 = !DIFile(filename: "src/mem_leak/malloc47.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "efdbf375123b2bc63fac12b239205164") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 5) -!7 = 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/mem_leak/malloc47.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "efdbf375123b2bc63fac12b239205164") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc47.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "efdbf375123b2bc63fac12b239205164") !9 = !{!0} !10 = !{i32 7, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -172,9 +168,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !23} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -235,17 +231,15 @@ attributes #6 = { nounwind } !77 = !DILocation(line: 15, column: 8, scope: !78) !78 = distinct !DILexicalBlock(scope: !66, file: !2, line: 15, column: 5) !79 = !DILocation(line: 15, column: 6, scope: !78) -!80 = !DILocation(line: 15, column: 5, scope: !66) -!81 = !DILocation(line: 15, column: 11, scope: !78) -!82 = !DILocation(line: 16, column: 5, scope: !83) -!83 = distinct !DILexicalBlock(scope: !66, file: !2, line: 16, column: 5) -!84 = !DILocation(line: 16, column: 5, scope: !66) -!85 = !DILocation(line: 17, column: 16, scope: !86) -!86 = distinct !DILexicalBlock(scope: !83, file: !2, line: 16, column: 7) -!87 = !DILocation(line: 17, column: 19, scope: !86) -!88 = !DILocation(line: 17, column: 18, scope: !86) -!89 = !DILocation(line: 17, column: 2, scope: !86) -!90 = !DILocation(line: 18, column: 2, scope: !86) -!91 = !DILocation(line: 19, column: 7, scope: !66) -!92 = !DILocation(line: 19, column: 2, scope: !66) -!93 = !DILocation(line: 20, column: 1, scope: !66) +!80 = !DILocation(line: 15, column: 11, scope: !78) +!81 = !DILocation(line: 16, column: 5, scope: !82) +!82 = distinct !DILexicalBlock(scope: !66, file: !2, line: 16, column: 5) +!83 = !DILocation(line: 17, column: 16, scope: !84) +!84 = distinct !DILexicalBlock(scope: !82, file: !2, line: 16, column: 7) +!85 = !DILocation(line: 17, column: 19, scope: !84) +!86 = !DILocation(line: 17, column: 18, scope: !84) +!87 = !DILocation(line: 17, column: 2, scope: !84) +!88 = !DILocation(line: 18, column: 2, scope: !84) +!89 = !DILocation(line: 19, column: 7, scope: !66) +!90 = !DILocation(line: 19, column: 2, scope: !66) +!91 = !DILocation(line: 20, column: 1, scope: !66) diff --git a/test_cases_bc/mem_leak/malloc48.c.bc b/test_cases_bc/mem_leak/malloc48.c.bc index d803cd870..204098ef1 100644 --- a/test_cases_bc/mem_leak/malloc48.c.bc +++ b/test_cases_bc/mem_leak/malloc48.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc48.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc48.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc48.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc48.c" +target datalayout = "e-m:e-p270:32:32-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"111\00", align 1, !dbg !0 @.str.1 = private unnamed_addr constant [4 x i8] c"112\00", align 1, !dbg !7 @@ -11,28 +11,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !20 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 ret ptr %call, !dbg !37 } @@ -41,10 +38,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 ret ptr %call, !dbg !43 } @@ -53,10 +50,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 ret ptr %call, !dbg !49 } @@ -65,10 +62,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 ret ptr %call, !dbg !55 } @@ -77,10 +74,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 ret ptr %call, !dbg !61 } @@ -89,10 +86,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !66 ret ptr %call, !dbg !67 } @@ -103,11 +100,11 @@ entry: %p = alloca ptr, align 8 %a = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !71, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %p, !71, !DIExpression(), !73) %call = call ptr @PLKMALLOC(i32 noundef 1), !dbg !74 store ptr %call, ptr %p, align 8, !dbg !73 %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str), !dbg !75 - call void @llvm.dbg.declare(metadata ptr %a, metadata !76, metadata !DIExpression()), !dbg !77 + #dbg_declare(ptr %a, !76, !DIExpression(), !77) %0 = load i32, ptr %a, align 4, !dbg !78 switch i32 %0, label %sw.epilog [ i32 1, label %sw.bb @@ -125,7 +122,7 @@ sw.bb3: ; preds = %entry sw.epilog: ; preds = %sw.bb, %entry %1 = load ptr, ptr %p, align 8, !dbg !85 - call void @free(ptr noundef %1) #6, !dbg !86 + call void @free(ptr noundef %1) #5, !dbg !86 store i32 0, ptr %retval, align 4, !dbg !87 br label %return, !dbg !87 @@ -134,18 +131,17 @@ return: ; preds = %sw.epilog, %sw.bb3 ret i32 %2, !dbg !88 } -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +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 allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0) } -attributes #6 = { nounwind } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!9} !llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} @@ -153,15 +149,15 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 12, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc48.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "697d01f5e7b63619699c990bf3cda5b3") +!2 = !DIFile(filename: "src/mem_leak/malloc48.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "697d01f5e7b63619699c990bf3cda5b3") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 32, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 4) !7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) !8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 20, 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/mem_leak/malloc48.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "697d01f5e7b63619699c990bf3cda5b3") +!9 = distinct !DICompileUnit(language: DW_LANG_C11, file: !10, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !11, splitDebugInlining: false, nameTableKind: None) +!10 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc48.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "697d01f5e7b63619699c990bf3cda5b3") !11 = !{!0, !7} !12 = !{i32 7, !"Dwarf Version", i32 5} !13 = !{i32 2, !"Debug Info Version", i32 3} @@ -170,9 +166,9 @@ attributes #6 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !20 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !21, file: !21, line: 5, type: !22, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !9, retainedNodes: !26) -!21 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!21 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !22 = !DISubroutineType(types: !23) !23 = !{!24, !25} !24 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc49.c.bc b/test_cases_bc/mem_leak/malloc49.c.bc index 2dcdc4036..dbddd76dd 100644 --- a/test_cases_bc/mem_leak/malloc49.c.bc +++ b/test_cases_bc/mem_leak/malloc49.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc49.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc49.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc49.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc49.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,58 +96,57 @@ entry: %a = alloca i32, align 4 %b = alloca i32, align 4 %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %a, metadata !62, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %b, metadata !64, metadata !DIExpression()), !dbg !65 - call void @llvm.dbg.declare(metadata ptr %p, metadata !66, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %a, !62, !DIExpression(), !63) + #dbg_declare(ptr %b, !64, !DIExpression(), !65) + #dbg_declare(ptr %p, !66, !DIExpression(), !68) %call = call ptr @PLKMALLOC(i32 noundef 1), !dbg !69 store ptr %call, ptr %p, align 8, !dbg !68 %0 = load i32, ptr %a, align 4, !dbg !70 %cmp = icmp sgt i32 %0, 1, !dbg !72 - br i1 %cmp, label %if.then, label %if.end3, !dbg !73 + br i1 %cmp, label %if.then, label %if.end3, !dbg !72 if.then: ; preds = %entry - %1 = load i32, ptr %b, align 4, !dbg !74 - %cmp1 = icmp slt i32 %1, 2, !dbg !77 - br i1 %cmp1, label %if.then2, label %if.else, !dbg !78 + %1 = load i32, ptr %b, align 4, !dbg !73 + %cmp1 = icmp slt i32 %1, 2, !dbg !76 + br i1 %cmp1, label %if.then2, label %if.else, !dbg !76 if.then2: ; preds = %if.then - br label %if.end, !dbg !79 + br label %if.end, !dbg !77 if.else: ; preds = %if.then - %2 = load ptr, ptr %p, align 8, !dbg !81 - call void @free(ptr noundef %2) #5, !dbg !82 + %2 = load ptr, ptr %p, align 8, !dbg !79 + call void @free(ptr noundef %2) #4, !dbg !80 br label %if.end if.end: ; preds = %if.else, %if.then2 - br label %if.end3, !dbg !83 + br label %if.end3, !dbg !81 if.end3: ; preds = %if.end, %entry - ret void, !dbg !84 + ret void, !dbg !82 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !85 { +define dso_local i32 @main() #0 !dbg !83 { entry: - call void @tmp(), !dbg !88 - ret i32 0, !dbg !89 + call void @tmp(), !dbg !86 + ret i32 0, !dbg !87 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc49.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "eefcfadba3270f93112a838dee81b992") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc49.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "eefcfadba3270f93112a838dee81b992") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -158,9 +154,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -208,7 +204,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "tmp", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc49.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "eefcfadba3270f93112a838dee81b992") +!59 = !DIFile(filename: "src/mem_leak/malloc49.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "eefcfadba3270f93112a838dee81b992") !60 = !DISubroutineType(types: !61) !61 = !{null} !62 = !DILocalVariable(name: "a", scope: !58, file: !59, line: 11, type: !15) @@ -222,20 +218,18 @@ attributes #5 = { nounwind } !70 = !DILocation(line: 14, column: 6, scope: !71) !71 = distinct !DILexicalBlock(scope: !58, file: !59, line: 14, column: 6) !72 = !DILocation(line: 14, column: 8, scope: !71) -!73 = !DILocation(line: 14, column: 6, scope: !58) -!74 = !DILocation(line: 16, column: 8, scope: !75) -!75 = distinct !DILexicalBlock(scope: !76, file: !59, line: 16, column: 8) -!76 = distinct !DILexicalBlock(scope: !71, file: !59, line: 14, column: 12) -!77 = !DILocation(line: 16, column: 10, scope: !75) -!78 = !DILocation(line: 16, column: 8, scope: !76) -!79 = !DILocation(line: 17, column: 5, scope: !80) -!80 = distinct !DILexicalBlock(scope: !75, file: !59, line: 16, column: 14) -!81 = !DILocation(line: 19, column: 12, scope: !75) -!82 = !DILocation(line: 19, column: 7, scope: !75) -!83 = !DILocation(line: 21, column: 3, scope: !76) -!84 = !DILocation(line: 22, column: 1, scope: !58) -!85 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 24, type: !86, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!86 = !DISubroutineType(types: !87) -!87 = !{!15} -!88 = !DILocation(line: 26, column: 1, scope: !85) -!89 = !DILocation(line: 28, column: 1, scope: !85) +!73 = !DILocation(line: 16, column: 8, scope: !74) +!74 = distinct !DILexicalBlock(scope: !75, file: !59, line: 16, column: 8) +!75 = distinct !DILexicalBlock(scope: !71, file: !59, line: 14, column: 12) +!76 = !DILocation(line: 16, column: 10, scope: !74) +!77 = !DILocation(line: 17, column: 5, scope: !78) +!78 = distinct !DILexicalBlock(scope: !74, file: !59, line: 16, column: 14) +!79 = !DILocation(line: 19, column: 12, scope: !74) +!80 = !DILocation(line: 19, column: 7, scope: !74) +!81 = !DILocation(line: 21, column: 3, scope: !75) +!82 = !DILocation(line: 22, column: 1, scope: !58) +!83 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 24, type: !84, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !0) +!84 = !DISubroutineType(types: !85) +!85 = !{!15} +!86 = !DILocation(line: 26, column: 1, scope: !83) +!87 = !DILocation(line: 28, column: 1, scope: !83) diff --git a/test_cases_bc/mem_leak/malloc5.c.bc b/test_cases_bc/mem_leak/malloc5.c.bc index 4c4e82b13..ed398f4fe 100644 --- a/test_cases_bc/mem_leak/malloc5.c.bc +++ b/test_cases_bc/mem_leak/malloc5.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc5.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -98,14 +95,14 @@ define dso_local void @foo(ptr noundef %p) #0 !dbg !58 { 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 !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %p.addr, !63, !DIExpression(), !64) %0 = load ptr, ptr %p.addr, align 8, !dbg !65 - call void @free(ptr noundef %0) #5, !dbg !66 + call void @free(ptr noundef %0) #4, !dbg !66 ret void, !dbg !67 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !68 { @@ -113,9 +110,9 @@ entry: %a = alloca ptr, align 8 %b = alloca ptr, align 8 %c = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %a, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %b, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %c, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %a, !71, !DIExpression(), !72) + #dbg_declare(ptr %b, !73, !DIExpression(), !74) + #dbg_declare(ptr %c, !75, !DIExpression(), !76) %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !77 store ptr %call, ptr %a, align 8, !dbg !78 %0 = load ptr, ptr %a, align 8, !dbg !79 @@ -129,19 +126,18 @@ entry: ret i32 0, !dbg !87 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc5.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7288a63949863b0e9a1a0539ce2c32f2") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc5.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7288a63949863b0e9a1a0539ce2c32f2") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -149,9 +145,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -199,7 +195,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "foo", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc5.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7288a63949863b0e9a1a0539ce2c32f2") +!59 = !DIFile(filename: "src/mem_leak/malloc5.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7288a63949863b0e9a1a0539ce2c32f2") !60 = !DISubroutineType(types: !61) !61 = !{null, !62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) diff --git a/test_cases_bc/mem_leak/malloc50.c.bc b/test_cases_bc/mem_leak/malloc50.c.bc index b0bb3dba2..2e57a39f4 100644 --- a/test_cases_bc/mem_leak/malloc50.c.bc +++ b/test_cases_bc/mem_leak/malloc50.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc50.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc50.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc50.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc50.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -98,10 +95,10 @@ define dso_local void @tmp() #0 !dbg !58 { entry: %p = alloca ptr, align 8 %j = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !62, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %p, !62, !DIExpression(), !64) %call = call ptr @PLKMALLOC(i32 noundef 1), !dbg !65 store ptr %call, ptr %p, align 8, !dbg !64 - call void @llvm.dbg.declare(metadata ptr %j, metadata !66, metadata !DIExpression()), !dbg !67 + #dbg_declare(ptr %j, !66, !DIExpression(), !67) store i32 0, ptr %j, align 4, !dbg !68 br label %for.cond, !dbg !70 @@ -113,55 +110,54 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %1 = load i32, ptr %j, align 4, !dbg !75 %cmp1 = icmp sgt i32 %1, 2, !dbg !78 - br i1 %cmp1, label %if.then, label %if.else, !dbg !79 + br i1 %cmp1, label %if.then, label %if.else, !dbg !78 if.then: ; preds = %for.body - br label %if.end, !dbg !80 + br label %if.end, !dbg !79 if.else: ; preds = %for.body - br label %return, !dbg !82 + br label %return, !dbg !81 if.end: ; preds = %if.then - br label %for.inc, !dbg !83 + br label %for.inc, !dbg !82 for.inc: ; preds = %if.end - %2 = load i32, ptr %j, align 4, !dbg !84 - %inc = add nsw i32 %2, 1, !dbg !84 - store i32 %inc, ptr %j, align 4, !dbg !84 - br label %for.cond, !dbg !85, !llvm.loop !86 + %2 = load i32, ptr %j, align 4, !dbg !83 + %inc = add nsw i32 %2, 1, !dbg !83 + store i32 %inc, ptr %j, align 4, !dbg !83 + br label %for.cond, !dbg !84, !llvm.loop !85 for.end: ; preds = %for.cond - %3 = load ptr, ptr %p, align 8, !dbg !89 - call void @free(ptr noundef %3) #5, !dbg !90 - br label %return, !dbg !91 + %3 = load ptr, ptr %p, align 8, !dbg !88 + call void @free(ptr noundef %3) #4, !dbg !89 + br label %return, !dbg !90 return: ; preds = %for.end, %if.else - ret void, !dbg !91 + ret void, !dbg !90 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !92 { +define dso_local i32 @main() #0 !dbg !91 { entry: - call void @tmp(), !dbg !95 - ret i32 0, !dbg !96 + call void @tmp(), !dbg !94 + ret i32 0, !dbg !95 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc50.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "166426f79105095cb13e749d74e99d02") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc50.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "166426f79105095cb13e749d74e99d02") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -169,9 +165,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -219,7 +215,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "tmp", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc50.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "166426f79105095cb13e749d74e99d02") +!59 = !DIFile(filename: "src/mem_leak/malloc50.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "166426f79105095cb13e749d74e99d02") !60 = !DISubroutineType(types: !61) !61 = !{null} !62 = !DILocalVariable(name: "p", scope: !58, file: !59, line: 12, type: !63) @@ -239,21 +235,20 @@ attributes #5 = { nounwind } !76 = distinct !DILexicalBlock(scope: !77, file: !59, line: 15, column: 8) !77 = distinct !DILexicalBlock(scope: !72, file: !59, line: 14, column: 26) !78 = !DILocation(line: 15, column: 10, scope: !76) -!79 = !DILocation(line: 15, column: 8, scope: !77) -!80 = !DILocation(line: 15, column: 15, scope: !81) -!81 = distinct !DILexicalBlock(scope: !76, file: !59, line: 15, column: 14) -!82 = !DILocation(line: 16, column: 10, scope: !76) -!83 = !DILocation(line: 18, column: 3, scope: !77) -!84 = !DILocation(line: 14, column: 23, scope: !72) -!85 = !DILocation(line: 14, column: 3, scope: !72) -!86 = distinct !{!86, !74, !87, !88} -!87 = !DILocation(line: 18, column: 3, scope: !69) -!88 = !{!"llvm.loop.mustprogress"} -!89 = !DILocation(line: 20, column: 8, scope: !58) -!90 = !DILocation(line: 20, column: 3, scope: !58) -!91 = !DILocation(line: 22, column: 1, scope: !58) -!92 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 25, type: !93, scopeLine: 25, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!93 = !DISubroutineType(types: !94) -!94 = !{!15} -!95 = !DILocation(line: 27, column: 3, scope: !92) -!96 = !DILocation(line: 29, column: 1, scope: !92) +!79 = !DILocation(line: 15, column: 15, scope: !80) +!80 = distinct !DILexicalBlock(scope: !76, file: !59, line: 15, column: 14) +!81 = !DILocation(line: 16, column: 10, scope: !76) +!82 = !DILocation(line: 18, column: 3, scope: !77) +!83 = !DILocation(line: 14, column: 23, scope: !72) +!84 = !DILocation(line: 14, column: 3, scope: !72) +!85 = distinct !{!85, !74, !86, !87} +!86 = !DILocation(line: 18, column: 3, scope: !69) +!87 = !{!"llvm.loop.mustprogress"} +!88 = !DILocation(line: 20, column: 8, scope: !58) +!89 = !DILocation(line: 20, column: 3, scope: !58) +!90 = !DILocation(line: 22, column: 1, scope: !58) +!91 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 25, type: !92, scopeLine: 25, spFlags: DISPFlagDefinition, unit: !0) +!92 = !DISubroutineType(types: !93) +!93 = !{!15} +!94 = !DILocation(line: 27, column: 3, scope: !91) +!95 = !DILocation(line: 29, column: 1, scope: !91) diff --git a/test_cases_bc/mem_leak/malloc51.c.bc b/test_cases_bc/mem_leak/malloc51.c.bc index b1bccc16c..6aef16d5c 100644 --- a/test_cases_bc/mem_leak/malloc51.c.bc +++ b/test_cases_bc/mem_leak/malloc51.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc51.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc51.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc51.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc51.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -98,7 +95,7 @@ define dso_local ptr @bar1(ptr noundef %b) #0 !dbg !58 { entry: %b.addr = alloca ptr, align 8 store ptr %b, ptr %b.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %b.addr, !63, !DIExpression(), !64) %0 = load ptr, ptr %b.addr, align 8, !dbg !65 ret ptr %0, !dbg !66 } @@ -109,8 +106,8 @@ entry: %x.addr = alloca ptr, align 8 %k = alloca ptr, align 8 store ptr %x, ptr %x.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !68, metadata !DIExpression()), !dbg !69 - call void @llvm.dbg.declare(metadata ptr %k, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %x.addr, !68, !DIExpression(), !69) + #dbg_declare(ptr %k, !70, !DIExpression(), !71) %0 = load ptr, ptr %x.addr, align 8, !dbg !72 %call = call ptr @bar1(ptr noundef %0), !dbg !73 store ptr %call, ptr %k, align 8, !dbg !71 @@ -126,28 +123,28 @@ entry: %q = alloca ptr, align 8 %t = alloca ptr, align 8 %s = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !79, metadata !DIExpression()), !dbg !80 + #dbg_declare(ptr %p, !79, !DIExpression(), !80) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !81 store ptr %call, ptr %p, align 8, !dbg !80 - call void @llvm.dbg.declare(metadata ptr %q, metadata !82, metadata !DIExpression()), !dbg !83 + #dbg_declare(ptr %q, !82, !DIExpression(), !83) %call1 = call ptr @CLKMALLOC(i32 noundef 10), !dbg !84 store ptr %call1, ptr %q, align 8, !dbg !83 - call void @llvm.dbg.declare(metadata ptr %t, metadata !85, metadata !DIExpression()), !dbg !86 + #dbg_declare(ptr %t, !85, !DIExpression(), !86) %0 = load ptr, ptr %p, align 8, !dbg !87 %call2 = call ptr @foo(ptr noundef %0), !dbg !88 store ptr %call2, ptr %t, align 8, !dbg !86 - call void @llvm.dbg.declare(metadata ptr %s, metadata !89, metadata !DIExpression()), !dbg !90 + #dbg_declare(ptr %s, !89, !DIExpression(), !90) %1 = load ptr, ptr %q, align 8, !dbg !91 %call3 = call ptr @foo(ptr noundef %1), !dbg !92 store ptr %call3, ptr %s, align 8, !dbg !90 %2 = load ptr, ptr %t, align 8, !dbg !93 - call void @free(ptr noundef %2) #5, !dbg !94 + call void @free(ptr noundef %2) #4, !dbg !94 %3 = load i32, ptr %retval, align 4, !dbg !95 ret i32 %3, !dbg !95 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !96 { @@ -156,19 +153,18 @@ entry: ret i32 0, !dbg !98 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc51.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f5d312120d4915dfc1579bd4dea42b28") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc51.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f5d312120d4915dfc1579bd4dea42b28") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -176,9 +172,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -226,7 +222,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "bar1", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc51.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f5d312120d4915dfc1579bd4dea42b28") +!59 = !DIFile(filename: "src/mem_leak/malloc51.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f5d312120d4915dfc1579bd4dea42b28") !60 = !DISubroutineType(types: !61) !61 = !{!62, !62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -263,6 +259,6 @@ attributes #5 = { nounwind } !93 = !DILocation(line: 29, column: 8, scope: !76) !94 = !DILocation(line: 29, column: 3, scope: !76) !95 = !DILocation(line: 30, column: 1, scope: !76) -!96 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 32, type: !77, scopeLine: 32, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!96 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 32, type: !77, scopeLine: 32, spFlags: DISPFlagDefinition, unit: !0) !97 = !DILocation(line: 34, column: 3, scope: !96) !98 = !DILocation(line: 35, column: 1, scope: !96) diff --git a/test_cases_bc/mem_leak/malloc52.c.bc b/test_cases_bc/mem_leak/malloc52.c.bc index 921051d2a..74e10ddc0 100644 --- a/test_cases_bc/mem_leak/malloc52.c.bc +++ b/test_cases_bc/mem_leak/malloc52.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc52.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc52.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc52.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc52.c" +target datalayout = "e-m:e-p270:32:32-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.huft = type { i8, i8, %union.anon } %union.anon = type { ptr } @@ -13,28 +13,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 ret ptr %call, !dbg !43 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 ret ptr %call, !dbg !49 } @@ -43,10 +40,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 ret ptr %call, !dbg !55 } @@ -55,10 +52,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 ret ptr %call, !dbg !61 } @@ -67,10 +64,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !66 ret ptr %call, !dbg !67 } @@ -79,10 +76,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !68 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !69, metadata !DIExpression()), !dbg !70 + #dbg_declare(ptr %n.addr, !69, !DIExpression(), !70) %0 = load i32, ptr %n.addr, align 4, !dbg !71 %conv = sext i32 %0 to i64, !dbg !71 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !72 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !72 ret ptr %call, !dbg !73 } @@ -91,10 +88,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !74 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %n.addr, !75, !DIExpression(), !76) %0 = load i32, ptr %n.addr, align 4, !dbg !77 %conv = sext i32 %0 to i64, !dbg !77 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !78 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !78 ret ptr %call, !dbg !79 } @@ -105,9 +102,9 @@ entry: %p = alloca ptr, align 8 %q = alloca ptr, align 8 store ptr %t, ptr %t.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %t.addr, metadata !83, metadata !DIExpression()), !dbg !84 - call void @llvm.dbg.declare(metadata ptr %p, metadata !85, metadata !DIExpression()), !dbg !86 - call void @llvm.dbg.declare(metadata ptr %q, metadata !87, metadata !DIExpression()), !dbg !88 + #dbg_declare(ptr %t.addr, !83, !DIExpression(), !84) + #dbg_declare(ptr %p, !85, !DIExpression(), !86) + #dbg_declare(ptr %q, !87, !DIExpression(), !88) %0 = load ptr, ptr %t.addr, align 8, !dbg !89 store ptr %0, ptr %p, align 8, !dbg !90 br label %while.cond, !dbg !91 @@ -121,11 +118,11 @@ while.body: ; preds = %while.cond %2 = load ptr, ptr %p, align 8, !dbg !94 %incdec.ptr = getelementptr inbounds %struct.huft, ptr %2, i32 -1, !dbg !94 store ptr %incdec.ptr, ptr %p, align 8, !dbg !94 - %v = getelementptr inbounds %struct.huft, ptr %incdec.ptr, i32 0, i32 2, !dbg !96 + %v = getelementptr inbounds nuw %struct.huft, ptr %incdec.ptr, i32 0, i32 2, !dbg !96 %3 = load ptr, ptr %v, align 8, !dbg !97 store ptr %3, ptr %q, align 8, !dbg !98 %4 = load ptr, ptr %p, align 8, !dbg !99 - call void @free(ptr noundef %4) #6, !dbg !100 + call void @free(ptr noundef %4) #5, !dbg !100 %5 = load ptr, ptr %q, align 8, !dbg !101 store ptr %5, ptr %p, align 8, !dbg !102 br label %while.cond, !dbg !91, !llvm.loop !103 @@ -135,7 +132,7 @@ while.end: ; preds = %while.cond } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @huft_build(ptr noundef %b, i32 noundef %n, i32 noundef %s, ptr noundef %d, ptr noundef %e, ptr noundef %t, ptr noundef %m) #0 !dbg !107 { @@ -168,38 +165,38 @@ entry: %y = alloca i32, align 4 %z = alloca i32, align 4 store ptr %b, ptr %b.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %b.addr, metadata !114, metadata !DIExpression()), !dbg !115 + #dbg_declare(ptr %b.addr, !114, !DIExpression(), !115) store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !116, metadata !DIExpression()), !dbg !117 + #dbg_declare(ptr %n.addr, !116, !DIExpression(), !117) store i32 %s, ptr %s.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %s.addr, metadata !118, metadata !DIExpression()), !dbg !119 + #dbg_declare(ptr %s.addr, !118, !DIExpression(), !119) store ptr %d, ptr %d.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %d.addr, metadata !120, metadata !DIExpression()), !dbg !121 + #dbg_declare(ptr %d.addr, !120, !DIExpression(), !121) store ptr %e, ptr %e.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %e.addr, metadata !122, metadata !DIExpression()), !dbg !123 + #dbg_declare(ptr %e.addr, !122, !DIExpression(), !123) store ptr %t, ptr %t.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %t.addr, metadata !124, metadata !DIExpression()), !dbg !125 + #dbg_declare(ptr %t.addr, !124, !DIExpression(), !125) store ptr %m, ptr %m.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %m.addr, metadata !126, metadata !DIExpression()), !dbg !127 - call void @llvm.dbg.declare(metadata ptr %a, metadata !128, metadata !DIExpression()), !dbg !129 - call void @llvm.dbg.declare(metadata ptr %c, metadata !130, metadata !DIExpression()), !dbg !134 - call void @llvm.dbg.declare(metadata ptr %f, metadata !135, metadata !DIExpression()), !dbg !136 - call void @llvm.dbg.declare(metadata ptr %g, metadata !137, metadata !DIExpression()), !dbg !138 - call void @llvm.dbg.declare(metadata ptr %h, metadata !139, metadata !DIExpression()), !dbg !140 - call void @llvm.dbg.declare(metadata ptr %i, metadata !141, metadata !DIExpression()), !dbg !142 - call void @llvm.dbg.declare(metadata ptr %j, metadata !143, metadata !DIExpression()), !dbg !144 - call void @llvm.dbg.declare(metadata ptr %k, metadata !145, metadata !DIExpression()), !dbg !146 - call void @llvm.dbg.declare(metadata ptr %l, metadata !147, metadata !DIExpression()), !dbg !148 - call void @llvm.dbg.declare(metadata ptr %p, metadata !149, metadata !DIExpression()), !dbg !150 - call void @llvm.dbg.declare(metadata ptr %q, metadata !151, metadata !DIExpression()), !dbg !152 - call void @llvm.dbg.declare(metadata ptr %r, metadata !153, metadata !DIExpression()), !dbg !154 - call void @llvm.dbg.declare(metadata ptr %u, metadata !155, metadata !DIExpression()), !dbg !159 - call void @llvm.dbg.declare(metadata ptr %v, metadata !160, metadata !DIExpression()), !dbg !164 - call void @llvm.dbg.declare(metadata ptr %w, metadata !165, metadata !DIExpression()), !dbg !166 - call void @llvm.dbg.declare(metadata ptr %x, metadata !167, metadata !DIExpression()), !dbg !168 - call void @llvm.dbg.declare(metadata ptr %xp, metadata !169, metadata !DIExpression()), !dbg !170 - call void @llvm.dbg.declare(metadata ptr %y, metadata !171, metadata !DIExpression()), !dbg !172 - call void @llvm.dbg.declare(metadata ptr %z, metadata !173, metadata !DIExpression()), !dbg !174 + #dbg_declare(ptr %m.addr, !126, !DIExpression(), !127) + #dbg_declare(ptr %a, !128, !DIExpression(), !129) + #dbg_declare(ptr %c, !130, !DIExpression(), !134) + #dbg_declare(ptr %f, !135, !DIExpression(), !136) + #dbg_declare(ptr %g, !137, !DIExpression(), !138) + #dbg_declare(ptr %h, !139, !DIExpression(), !140) + #dbg_declare(ptr %i, !141, !DIExpression(), !142) + #dbg_declare(ptr %j, !143, !DIExpression(), !144) + #dbg_declare(ptr %k, !145, !DIExpression(), !146) + #dbg_declare(ptr %l, !147, !DIExpression(), !148) + #dbg_declare(ptr %p, !149, !DIExpression(), !150) + #dbg_declare(ptr %q, !151, !DIExpression(), !152) + #dbg_declare(ptr %r, !153, !DIExpression(), !154) + #dbg_declare(ptr %u, !155, !DIExpression(), !159) + #dbg_declare(ptr %v, !160, !DIExpression(), !164) + #dbg_declare(ptr %w, !165, !DIExpression(), !166) + #dbg_declare(ptr %x, !167, !DIExpression(), !168) + #dbg_declare(ptr %xp, !169, !DIExpression(), !170) + #dbg_declare(ptr %y, !171, !DIExpression(), !172) + #dbg_declare(ptr %z, !173, !DIExpression(), !174) br label %while.cond, !dbg !175 while.cond: ; preds = %while.end82, %entry @@ -256,284 +253,283 @@ cond.end: ; preds = %cond.false, %cond.t %14 = load i32, ptr %a, align 4, !dbg !205 %add6 = add i32 %14, 1, !dbg !206 %cmp7 = icmp ugt i32 %shl, %add6, !dbg !207 - br i1 %cmp7, label %if.then, label %if.end18, !dbg !208 + br i1 %cmp7, label %if.then, label %if.end18, !dbg !207 if.then: ; preds = %cond.end - %15 = load i32, ptr %a, align 4, !dbg !209 - %add8 = add i32 %15, 1, !dbg !211 - %16 = load i32, ptr %f, align 4, !dbg !212 - %sub9 = sub i32 %16, %add8, !dbg !212 - store i32 %sub9, ptr %f, align 4, !dbg !212 - %arraydecay = getelementptr inbounds [17 x i32], ptr %c, i64 0, i64 0, !dbg !213 - %17 = load i32, ptr %k, align 4, !dbg !214 - %idx.ext = sext i32 %17 to i64, !dbg !215 - %add.ptr = getelementptr inbounds i32, ptr %arraydecay, i64 %idx.ext, !dbg !215 - store ptr %add.ptr, ptr %xp, align 8, !dbg !216 - br label %while.cond10, !dbg !217 + %15 = load i32, ptr %a, align 4, !dbg !208 + %add8 = add i32 %15, 1, !dbg !210 + %16 = load i32, ptr %f, align 4, !dbg !211 + %sub9 = sub i32 %16, %add8, !dbg !211 + store i32 %sub9, ptr %f, align 4, !dbg !211 + %arraydecay = getelementptr inbounds [17 x i32], ptr %c, i64 0, i64 0, !dbg !212 + %17 = load i32, ptr %k, align 4, !dbg !213 + %idx.ext = sext i32 %17 to i64, !dbg !214 + %add.ptr = getelementptr inbounds i32, ptr %arraydecay, i64 %idx.ext, !dbg !214 + store ptr %add.ptr, ptr %xp, align 8, !dbg !215 + br label %while.cond10, !dbg !216 while.cond10: ; preds = %if.end, %if.then - %18 = load i32, ptr %j, align 4, !dbg !218 - %inc11 = add i32 %18, 1, !dbg !218 - store i32 %inc11, ptr %j, align 4, !dbg !218 - %19 = load i32, ptr %z, align 4, !dbg !219 - %cmp12 = icmp ult i32 %inc11, %19, !dbg !220 - br i1 %cmp12, label %while.body13, label %while.end, !dbg !217 + %18 = load i32, ptr %j, align 4, !dbg !217 + %inc11 = add i32 %18, 1, !dbg !217 + store i32 %inc11, ptr %j, align 4, !dbg !217 + %19 = load i32, ptr %z, align 4, !dbg !218 + %cmp12 = icmp ult i32 %inc11, %19, !dbg !219 + br i1 %cmp12, label %while.body13, label %while.end, !dbg !216 while.body13: ; preds = %while.cond10 - %20 = load i32, ptr %f, align 4, !dbg !221 - %shl14 = shl i32 %20, 1, !dbg !221 - store i32 %shl14, ptr %f, align 4, !dbg !221 - %21 = load ptr, ptr %xp, align 8, !dbg !224 - %incdec.ptr = getelementptr inbounds i32, ptr %21, i32 1, !dbg !224 - store ptr %incdec.ptr, ptr %xp, align 8, !dbg !224 - %22 = load i32, ptr %incdec.ptr, align 4, !dbg !225 - %cmp15 = icmp ule i32 %shl14, %22, !dbg !226 - br i1 %cmp15, label %if.then16, label %if.end, !dbg !227 + %20 = load i32, ptr %f, align 4, !dbg !220 + %shl14 = shl i32 %20, 1, !dbg !220 + store i32 %shl14, ptr %f, align 4, !dbg !220 + %21 = load ptr, ptr %xp, align 8, !dbg !223 + %incdec.ptr = getelementptr inbounds nuw i32, ptr %21, i32 1, !dbg !223 + store ptr %incdec.ptr, ptr %xp, align 8, !dbg !223 + %22 = load i32, ptr %incdec.ptr, align 4, !dbg !224 + %cmp15 = icmp ule i32 %shl14, %22, !dbg !225 + br i1 %cmp15, label %if.then16, label %if.end, !dbg !225 if.then16: ; preds = %while.body13 - br label %while.end, !dbg !228 + br label %while.end, !dbg !226 if.end: ; preds = %while.body13 - %23 = load ptr, ptr %xp, align 8, !dbg !229 - %24 = load i32, ptr %23, align 4, !dbg !230 - %25 = load i32, ptr %f, align 4, !dbg !231 - %sub17 = sub i32 %25, %24, !dbg !231 - store i32 %sub17, ptr %f, align 4, !dbg !231 - br label %while.cond10, !dbg !217, !llvm.loop !232 + %23 = load ptr, ptr %xp, align 8, !dbg !227 + %24 = load i32, ptr %23, align 4, !dbg !228 + %25 = load i32, ptr %f, align 4, !dbg !229 + %sub17 = sub i32 %25, %24, !dbg !229 + store i32 %sub17, ptr %f, align 4, !dbg !229 + br label %while.cond10, !dbg !216, !llvm.loop !230 while.end: ; preds = %if.then16, %while.cond10 - br label %if.end18, !dbg !234 + br label %if.end18, !dbg !232 if.end18: ; preds = %while.end, %cond.end - %26 = load i32, ptr %j, align 4, !dbg !235 - %shl19 = shl i32 1, %26, !dbg !236 - store i32 %shl19, ptr %z, align 4, !dbg !237 - %27 = load i32, ptr %z, align 4, !dbg !238 - %add20 = add i32 %27, 1, !dbg !240 - %conv = zext i32 %add20 to i64, !dbg !241 - %mul = mul i64 %conv, 16, !dbg !242 - %conv21 = trunc i64 %mul to i32, !dbg !241 - %call = call ptr @PLKMALLOC(i32 noundef %conv21), !dbg !243 - store ptr %call, ptr %q, align 8, !dbg !244 - %cmp22 = icmp eq ptr %call, null, !dbg !245 - br i1 %cmp22, label %if.then24, label %if.end29, !dbg !246 + %26 = load i32, ptr %j, align 4, !dbg !233 + %shl19 = shl i32 1, %26, !dbg !234 + store i32 %shl19, ptr %z, align 4, !dbg !235 + %27 = load i32, ptr %z, align 4, !dbg !236 + %add20 = add i32 %27, 1, !dbg !238 + %conv = zext i32 %add20 to i64, !dbg !239 + %mul = mul i64 %conv, 16, !dbg !240 + %conv21 = trunc i64 %mul to i32, !dbg !239 + %call = call ptr @PLKMALLOC(i32 noundef %conv21), !dbg !241 + store ptr %call, ptr %q, align 8, !dbg !242 + %cmp22 = icmp eq ptr %call, null, !dbg !243 + br i1 %cmp22, label %if.then24, label %if.end29, !dbg !243 if.then24: ; preds = %if.end18 - %28 = load i32, ptr %h, align 4, !dbg !247 - %tobool25 = icmp ne i32 %28, 0, !dbg !247 - br i1 %tobool25, label %if.then26, label %if.end28, !dbg !250 + %28 = load i32, ptr %h, align 4, !dbg !244 + %tobool25 = icmp ne i32 %28, 0, !dbg !244 + br i1 %tobool25, label %if.then26, label %if.end28, !dbg !244 if.then26: ; preds = %if.then24 - %arrayidx = getelementptr inbounds [16 x ptr], ptr %u, i64 0, i64 0, !dbg !251 - %29 = load ptr, ptr %arrayidx, align 16, !dbg !251 - %call27 = call i32 @huft_free(ptr noundef %29), !dbg !252 - br label %if.end28, !dbg !252 + %arrayidx = getelementptr inbounds [16 x ptr], ptr %u, i64 0, i64 0, !dbg !247 + %29 = load ptr, ptr %arrayidx, align 16, !dbg !247 + %call27 = call i32 @huft_free(ptr noundef %29), !dbg !248 + br label %if.end28, !dbg !248 if.end28: ; preds = %if.then26, %if.then24 - store i32 3, ptr %retval, align 4, !dbg !253 - br label %return, !dbg !253 + store i32 3, ptr %retval, align 4, !dbg !249 + br label %return, !dbg !249 if.end29: ; preds = %if.end18 - %30 = load i32, ptr %z, align 4, !dbg !254 - %add30 = add i32 %30, 1, !dbg !255 - %31 = load i32, ptr @hufts, align 4, !dbg !256 - %add31 = add i32 %31, %add30, !dbg !256 - store i32 %add31, ptr @hufts, align 4, !dbg !256 - %32 = load ptr, ptr %q, align 8, !dbg !257 - %add.ptr32 = getelementptr inbounds %struct.huft, ptr %32, i64 1, !dbg !258 - %33 = load ptr, ptr %t.addr, align 8, !dbg !259 - store ptr %add.ptr32, ptr %33, align 8, !dbg !260 - %34 = load ptr, ptr %q, align 8, !dbg !261 - %v33 = getelementptr inbounds %struct.huft, ptr %34, i32 0, i32 2, !dbg !262 - store ptr %v33, ptr %t.addr, align 8, !dbg !263 - store ptr null, ptr %v33, align 8, !dbg !264 - %35 = load ptr, ptr %q, align 8, !dbg !265 - %incdec.ptr34 = getelementptr inbounds %struct.huft, ptr %35, i32 1, !dbg !265 - store ptr %incdec.ptr34, ptr %q, align 8, !dbg !265 - %36 = load i32, ptr %h, align 4, !dbg !266 - %idxprom = sext i32 %36 to i64, !dbg !267 - %arrayidx35 = getelementptr inbounds [16 x ptr], ptr %u, i64 0, i64 %idxprom, !dbg !267 - store ptr %incdec.ptr34, ptr %arrayidx35, align 8, !dbg !268 - %37 = load i32, ptr %h, align 4, !dbg !269 - %tobool36 = icmp ne i32 %37, 0, !dbg !269 - br i1 %tobool36, label %if.then37, label %if.end52, !dbg !271 + %30 = load i32, ptr %z, align 4, !dbg !250 + %add30 = add i32 %30, 1, !dbg !251 + %31 = load i32, ptr @hufts, align 4, !dbg !252 + %add31 = add i32 %31, %add30, !dbg !252 + store i32 %add31, ptr @hufts, align 4, !dbg !252 + %32 = load ptr, ptr %q, align 8, !dbg !253 + %add.ptr32 = getelementptr inbounds %struct.huft, ptr %32, i64 1, !dbg !254 + %33 = load ptr, ptr %t.addr, align 8, !dbg !255 + store ptr %add.ptr32, ptr %33, align 8, !dbg !256 + %34 = load ptr, ptr %q, align 8, !dbg !257 + %v33 = getelementptr inbounds nuw %struct.huft, ptr %34, i32 0, i32 2, !dbg !258 + store ptr %v33, ptr %t.addr, align 8, !dbg !259 + store ptr null, ptr %v33, align 8, !dbg !260 + %35 = load ptr, ptr %q, align 8, !dbg !261 + %incdec.ptr34 = getelementptr inbounds nuw %struct.huft, ptr %35, i32 1, !dbg !261 + store ptr %incdec.ptr34, ptr %q, align 8, !dbg !261 + %36 = load i32, ptr %h, align 4, !dbg !262 + %idxprom = sext i32 %36 to i64, !dbg !263 + %arrayidx35 = getelementptr inbounds [16 x ptr], ptr %u, i64 0, i64 %idxprom, !dbg !263 + store ptr %incdec.ptr34, ptr %arrayidx35, align 8, !dbg !264 + %37 = load i32, ptr %h, align 4, !dbg !265 + %tobool36 = icmp ne i32 %37, 0, !dbg !265 + br i1 %tobool36, label %if.then37, label %if.end52, !dbg !265 if.then37: ; preds = %if.end29 - %38 = load i32, ptr %i, align 4, !dbg !272 - %39 = load i32, ptr %h, align 4, !dbg !274 - %idxprom38 = sext i32 %39 to i64, !dbg !275 - %arrayidx39 = getelementptr inbounds [17 x i32], ptr %x, i64 0, i64 %idxprom38, !dbg !275 - store i32 %38, ptr %arrayidx39, align 4, !dbg !276 - %40 = load i32, ptr %l, align 4, !dbg !277 - %conv40 = trunc i32 %40 to i8, !dbg !278 - %b41 = getelementptr inbounds %struct.huft, ptr %r, i32 0, i32 1, !dbg !279 - store i8 %conv40, ptr %b41, align 1, !dbg !280 - %41 = load i32, ptr %j, align 4, !dbg !281 - %add42 = add i32 16, %41, !dbg !282 - %conv43 = trunc i32 %add42 to i8, !dbg !283 - %e44 = getelementptr inbounds %struct.huft, ptr %r, i32 0, i32 0, !dbg !284 - store i8 %conv43, ptr %e44, align 8, !dbg !285 - %42 = load ptr, ptr %q, align 8, !dbg !286 - %v45 = getelementptr inbounds %struct.huft, ptr %r, i32 0, i32 2, !dbg !287 - store ptr %42, ptr %v45, align 8, !dbg !288 - %43 = load i32, ptr %i, align 4, !dbg !289 - %44 = load i32, ptr %w, align 4, !dbg !290 - %45 = load i32, ptr %l, align 4, !dbg !291 - %sub46 = sub nsw i32 %44, %45, !dbg !292 - %shr = lshr i32 %43, %sub46, !dbg !293 - store i32 %shr, ptr %j, align 4, !dbg !294 - %46 = load i32, ptr %h, align 4, !dbg !295 - %sub47 = sub nsw i32 %46, 1, !dbg !296 - %idxprom48 = sext i32 %sub47 to i64, !dbg !297 - %arrayidx49 = getelementptr inbounds [16 x ptr], ptr %u, i64 0, i64 %idxprom48, !dbg !297 - %47 = load ptr, ptr %arrayidx49, align 8, !dbg !297 - %48 = load i32, ptr %j, align 4, !dbg !298 - %idxprom50 = zext i32 %48 to i64, !dbg !297 - %arrayidx51 = getelementptr inbounds %struct.huft, ptr %47, i64 %idxprom50, !dbg !297 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %arrayidx51, ptr align 8 %r, i64 16, i1 false), !dbg !299 - br label %if.end52, !dbg !300 + %38 = load i32, ptr %i, align 4, !dbg !267 + %39 = load i32, ptr %h, align 4, !dbg !269 + %idxprom38 = sext i32 %39 to i64, !dbg !270 + %arrayidx39 = getelementptr inbounds [17 x i32], ptr %x, i64 0, i64 %idxprom38, !dbg !270 + store i32 %38, ptr %arrayidx39, align 4, !dbg !271 + %40 = load i32, ptr %l, align 4, !dbg !272 + %conv40 = trunc i32 %40 to i8, !dbg !273 + %b41 = getelementptr inbounds nuw %struct.huft, ptr %r, i32 0, i32 1, !dbg !274 + store i8 %conv40, ptr %b41, align 1, !dbg !275 + %41 = load i32, ptr %j, align 4, !dbg !276 + %add42 = add i32 16, %41, !dbg !277 + %conv43 = trunc i32 %add42 to i8, !dbg !278 + %e44 = getelementptr inbounds nuw %struct.huft, ptr %r, i32 0, i32 0, !dbg !279 + store i8 %conv43, ptr %e44, align 8, !dbg !280 + %42 = load ptr, ptr %q, align 8, !dbg !281 + %v45 = getelementptr inbounds nuw %struct.huft, ptr %r, i32 0, i32 2, !dbg !282 + store ptr %42, ptr %v45, align 8, !dbg !283 + %43 = load i32, ptr %i, align 4, !dbg !284 + %44 = load i32, ptr %w, align 4, !dbg !285 + %45 = load i32, ptr %l, align 4, !dbg !286 + %sub46 = sub nsw i32 %44, %45, !dbg !287 + %shr = lshr i32 %43, %sub46, !dbg !288 + store i32 %shr, ptr %j, align 4, !dbg !289 + %46 = load i32, ptr %h, align 4, !dbg !290 + %sub47 = sub nsw i32 %46, 1, !dbg !291 + %idxprom48 = sext i32 %sub47 to i64, !dbg !292 + %arrayidx49 = getelementptr inbounds [16 x ptr], ptr %u, i64 0, i64 %idxprom48, !dbg !292 + %47 = load ptr, ptr %arrayidx49, align 8, !dbg !292 + %48 = load i32, ptr %j, align 4, !dbg !293 + %idxprom50 = zext i32 %48 to i64, !dbg !292 + %arrayidx51 = getelementptr inbounds nuw %struct.huft, ptr %47, i64 %idxprom50, !dbg !292 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %arrayidx51, ptr align 8 %r, i64 16, i1 false), !dbg !294 + br label %if.end52, !dbg !295 if.end52: ; preds = %if.then37, %if.end29 - br label %while.cond1, !dbg !177, !llvm.loop !301 + br label %while.cond1, !dbg !177, !llvm.loop !296 while.end53: ; preds = %while.cond1 - %49 = load i32, ptr %k, align 4, !dbg !303 - %50 = load i32, ptr %w, align 4, !dbg !304 - %sub54 = sub nsw i32 %49, %50, !dbg !305 - %shl55 = shl i32 1, %sub54, !dbg !306 - store i32 %shl55, ptr %f, align 4, !dbg !307 - %51 = load i32, ptr %i, align 4, !dbg !308 - %52 = load i32, ptr %w, align 4, !dbg !310 - %shr56 = lshr i32 %51, %52, !dbg !311 - store i32 %shr56, ptr %j, align 4, !dbg !312 - br label %for.cond, !dbg !313 + %49 = load i32, ptr %k, align 4, !dbg !298 + %50 = load i32, ptr %w, align 4, !dbg !299 + %sub54 = sub nsw i32 %49, %50, !dbg !300 + %shl55 = shl i32 1, %sub54, !dbg !301 + store i32 %shl55, ptr %f, align 4, !dbg !302 + %51 = load i32, ptr %i, align 4, !dbg !303 + %52 = load i32, ptr %w, align 4, !dbg !305 + %shr56 = lshr i32 %51, %52, !dbg !306 + store i32 %shr56, ptr %j, align 4, !dbg !307 + br label %for.cond, !dbg !308 for.cond: ; preds = %for.inc, %while.end53 - %53 = load i32, ptr %j, align 4, !dbg !314 - %54 = load i32, ptr %z, align 4, !dbg !316 - %cmp57 = icmp ult i32 %53, %54, !dbg !317 - br i1 %cmp57, label %for.body, label %for.end, !dbg !318 + %53 = load i32, ptr %j, align 4, !dbg !309 + %54 = load i32, ptr %z, align 4, !dbg !311 + %cmp57 = icmp ult i32 %53, %54, !dbg !312 + br i1 %cmp57, label %for.body, label %for.end, !dbg !313 for.body: ; preds = %for.cond - %55 = load ptr, ptr %q, align 8, !dbg !319 - %56 = load i32, ptr %j, align 4, !dbg !320 - %idxprom59 = zext i32 %56 to i64, !dbg !319 - %arrayidx60 = getelementptr inbounds %struct.huft, ptr %55, i64 %idxprom59, !dbg !319 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %arrayidx60, ptr align 8 %r, i64 16, i1 false), !dbg !321 - br label %for.inc, !dbg !319 + %55 = load ptr, ptr %q, align 8, !dbg !314 + %56 = load i32, ptr %j, align 4, !dbg !315 + %idxprom59 = zext i32 %56 to i64, !dbg !314 + %arrayidx60 = getelementptr inbounds nuw %struct.huft, ptr %55, i64 %idxprom59, !dbg !314 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %arrayidx60, ptr align 8 %r, i64 16, i1 false), !dbg !316 + br label %for.inc, !dbg !314 for.inc: ; preds = %for.body - %57 = load i32, ptr %f, align 4, !dbg !322 - %58 = load i32, ptr %j, align 4, !dbg !323 - %add61 = add i32 %58, %57, !dbg !323 - store i32 %add61, ptr %j, align 4, !dbg !323 - br label %for.cond, !dbg !324, !llvm.loop !325 + %57 = load i32, ptr %f, align 4, !dbg !317 + %58 = load i32, ptr %j, align 4, !dbg !318 + %add61 = add i32 %58, %57, !dbg !318 + store i32 %add61, ptr %j, align 4, !dbg !318 + br label %for.cond, !dbg !319, !llvm.loop !320 for.end: ; preds = %for.cond - %59 = load i32, ptr %k, align 4, !dbg !327 - %sub62 = sub nsw i32 %59, 1, !dbg !329 - %shl63 = shl i32 1, %sub62, !dbg !330 - store i32 %shl63, ptr %j, align 4, !dbg !331 - br label %for.cond64, !dbg !332 + %59 = load i32, ptr %k, align 4, !dbg !322 + %sub62 = sub nsw i32 %59, 1, !dbg !324 + %shl63 = shl i32 1, %sub62, !dbg !325 + store i32 %shl63, ptr %j, align 4, !dbg !326 + br label %for.cond64, !dbg !327 for.cond64: ; preds = %for.inc67, %for.end - %60 = load i32, ptr %i, align 4, !dbg !333 - %61 = load i32, ptr %j, align 4, !dbg !335 - %and = and i32 %60, %61, !dbg !336 - %tobool65 = icmp ne i32 %and, 0, !dbg !337 - br i1 %tobool65, label %for.body66, label %for.end69, !dbg !337 + %60 = load i32, ptr %i, align 4, !dbg !328 + %61 = load i32, ptr %j, align 4, !dbg !330 + %and = and i32 %60, %61, !dbg !331 + %tobool65 = icmp ne i32 %and, 0, !dbg !332 + br i1 %tobool65, label %for.body66, label %for.end69, !dbg !332 for.body66: ; preds = %for.cond64 - %62 = load i32, ptr %j, align 4, !dbg !338 - %63 = load i32, ptr %i, align 4, !dbg !339 - %xor = xor i32 %63, %62, !dbg !339 - store i32 %xor, ptr %i, align 4, !dbg !339 - br label %for.inc67, !dbg !340 + %62 = load i32, ptr %j, align 4, !dbg !333 + %63 = load i32, ptr %i, align 4, !dbg !334 + %xor = xor i32 %63, %62, !dbg !334 + store i32 %xor, ptr %i, align 4, !dbg !334 + br label %for.inc67, !dbg !335 for.inc67: ; preds = %for.body66 - %64 = load i32, ptr %j, align 4, !dbg !341 - %shr68 = lshr i32 %64, 1, !dbg !341 - store i32 %shr68, ptr %j, align 4, !dbg !341 - br label %for.cond64, !dbg !342, !llvm.loop !343 + %64 = load i32, ptr %j, align 4, !dbg !336 + %shr68 = lshr i32 %64, 1, !dbg !336 + store i32 %shr68, ptr %j, align 4, !dbg !336 + br label %for.cond64, !dbg !337, !llvm.loop !338 for.end69: ; preds = %for.cond64 - %65 = load i32, ptr %j, align 4, !dbg !345 - %66 = load i32, ptr %i, align 4, !dbg !346 - %xor70 = xor i32 %66, %65, !dbg !346 - store i32 %xor70, ptr %i, align 4, !dbg !346 - br label %while.cond71, !dbg !347 + %65 = load i32, ptr %j, align 4, !dbg !340 + %66 = load i32, ptr %i, align 4, !dbg !341 + %xor70 = xor i32 %66, %65, !dbg !341 + store i32 %xor70, ptr %i, align 4, !dbg !341 + br label %while.cond71, !dbg !342 while.cond71: ; preds = %while.body79, %for.end69 - %67 = load i32, ptr %i, align 4, !dbg !348 - %68 = load i32, ptr %w, align 4, !dbg !349 - %shl72 = shl i32 1, %68, !dbg !350 - %sub73 = sub nsw i32 %shl72, 1, !dbg !351 - %and74 = and i32 %67, %sub73, !dbg !352 - %69 = load i32, ptr %h, align 4, !dbg !353 - %idxprom75 = sext i32 %69 to i64, !dbg !354 - %arrayidx76 = getelementptr inbounds [17 x i32], ptr %x, i64 0, i64 %idxprom75, !dbg !354 - %70 = load i32, ptr %arrayidx76, align 4, !dbg !354 - %cmp77 = icmp ne i32 %and74, %70, !dbg !355 - br i1 %cmp77, label %while.body79, label %while.end82, !dbg !347 + %67 = load i32, ptr %i, align 4, !dbg !343 + %68 = load i32, ptr %w, align 4, !dbg !344 + %shl72 = shl i32 1, %68, !dbg !345 + %sub73 = sub nsw i32 %shl72, 1, !dbg !346 + %and74 = and i32 %67, %sub73, !dbg !347 + %69 = load i32, ptr %h, align 4, !dbg !348 + %idxprom75 = sext i32 %69 to i64, !dbg !349 + %arrayidx76 = getelementptr inbounds [17 x i32], ptr %x, i64 0, i64 %idxprom75, !dbg !349 + %70 = load i32, ptr %arrayidx76, align 4, !dbg !349 + %cmp77 = icmp ne i32 %and74, %70, !dbg !350 + br i1 %cmp77, label %while.body79, label %while.end82, !dbg !342 while.body79: ; preds = %while.cond71 - %71 = load i32, ptr %h, align 4, !dbg !356 - %dec80 = add nsw i32 %71, -1, !dbg !356 - store i32 %dec80, ptr %h, align 4, !dbg !356 - %72 = load i32, ptr %l, align 4, !dbg !358 - %73 = load i32, ptr %w, align 4, !dbg !359 - %sub81 = sub nsw i32 %73, %72, !dbg !359 - store i32 %sub81, ptr %w, align 4, !dbg !359 - br label %while.cond71, !dbg !347, !llvm.loop !360 + %71 = load i32, ptr %h, align 4, !dbg !351 + %dec80 = add nsw i32 %71, -1, !dbg !351 + store i32 %dec80, ptr %h, align 4, !dbg !351 + %72 = load i32, ptr %l, align 4, !dbg !353 + %73 = load i32, ptr %w, align 4, !dbg !354 + %sub81 = sub nsw i32 %73, %72, !dbg !354 + store i32 %sub81, ptr %w, align 4, !dbg !354 + br label %while.cond71, !dbg !342, !llvm.loop !355 while.end82: ; preds = %while.cond71 - br label %while.cond, !dbg !175, !llvm.loop !362 + br label %while.cond, !dbg !175, !llvm.loop !357 while.end83: ; preds = %while.cond - %74 = load i32, ptr %y, align 4, !dbg !364 - %cmp84 = icmp ne i32 %74, 0, !dbg !365 - br i1 %cmp84, label %land.rhs, label %land.end, !dbg !366 + %74 = load i32, ptr %y, align 4, !dbg !359 + %cmp84 = icmp ne i32 %74, 0, !dbg !360 + br i1 %cmp84, label %land.rhs, label %land.end, !dbg !361 land.rhs: ; preds = %while.end83 - %75 = load i32, ptr %g, align 4, !dbg !367 - %cmp86 = icmp ne i32 %75, 1, !dbg !368 + %75 = load i32, ptr %g, align 4, !dbg !362 + %cmp86 = icmp ne i32 %75, 1, !dbg !363 br label %land.end land.end: ; preds = %land.rhs, %while.end83 - %76 = phi i1 [ false, %while.end83 ], [ %cmp86, %land.rhs ], !dbg !369 - %land.ext = zext i1 %76 to i32, !dbg !366 - store i32 %land.ext, ptr %retval, align 4, !dbg !370 - br label %return, !dbg !370 + %76 = phi i1 [ false, %while.end83 ], [ %cmp86, %land.rhs ], !dbg !364 + %land.ext = zext i1 %76 to i32, !dbg !361 + store i32 %land.ext, ptr %retval, align 4, !dbg !365 + br label %return, !dbg !365 return: ; preds = %land.end, %if.end28 - %77 = load i32, ptr %retval, align 4, !dbg !371 - ret i32 %77, !dbg !371 + %77 = load i32, ptr %retval, align 4, !dbg !366 + ret i32 %77, !dbg !366 } ; 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: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !372 { +define dso_local i32 @main() #0 !dbg !367 { entry: %ll = alloca [316 x i32], align 16 %tl = alloca ptr, align 8 %bl = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %ll, metadata !375, metadata !DIExpression()), !dbg !379 - call void @llvm.dbg.declare(metadata ptr %tl, metadata !380, metadata !DIExpression()), !dbg !381 - call void @llvm.dbg.declare(metadata ptr %bl, metadata !382, metadata !DIExpression()), !dbg !383 - %arraydecay = getelementptr inbounds [316 x i32], ptr %ll, i64 0, i64 0, !dbg !384 - %call = call i32 @huft_build(ptr noundef %arraydecay, i32 noundef 19, i32 noundef 19, ptr noundef null, ptr noundef null, ptr noundef %tl, ptr noundef %bl), !dbg !385 - ret i32 0, !dbg !386 + #dbg_declare(ptr %ll, !370, !DIExpression(), !374) + #dbg_declare(ptr %tl, !375, !DIExpression(), !376) + #dbg_declare(ptr %bl, !377, !DIExpression(), !378) + %arraydecay = getelementptr inbounds [316 x i32], ptr %ll, i64 0, i64 0, !dbg !379 + %call = call i32 @huft_build(ptr noundef %arraydecay, i32 noundef 19, i32 noundef 19, ptr noundef null, ptr noundef null, ptr noundef %tl, ptr noundef %bl), !dbg !380 + ret i32 0, !dbg !381 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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 = { nounwind allocsize(0) } -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 = { 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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!24, !25, !26, !27, !28, !29, !30} @@ -541,12 +537,12 @@ attributes #6 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "hufts", scope: !2, file: !7, line: 18, type: !22, 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, retainedTypes: !4, globals: !23, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc52.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "6caf9504fce28cbfa1b46d21778814c5") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !23, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc52.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "6caf9504fce28cbfa1b46d21778814c5") !4 = !{!5, !20, !22, !10} !5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64) !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "huft", file: !7, line: 20, size: 128, elements: !8) -!7 = !DIFile(filename: "src/mem_leak/malloc52.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "6caf9504fce28cbfa1b46d21778814c5") +!7 = !DIFile(filename: "src/mem_leak/malloc52.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "6caf9504fce28cbfa1b46d21778814c5") !8 = !{!9, !12, !13} !9 = !DIDerivedType(tag: DW_TAG_member, name: "e", scope: !6, file: !7, line: 21, baseType: !10, size: 8) !10 = !DIDerivedType(tag: DW_TAG_typedef, name: "uch", file: !7, line: 10, baseType: !11) @@ -570,9 +566,9 @@ attributes #6 = { nounwind } !28 = !{i32 7, !"PIE Level", i32 2} !29 = !{i32 7, !"uwtable", i32 2} !30 = !{i32 7, !"frame-pointer", i32 2} -!31 = !{!"clang version 16.0.0"} +!31 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !32 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !33, file: !33, line: 5, type: !34, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !38) -!33 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!33 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !34 = !DISubroutineType(types: !35) !35 = !{!36, !37} !36 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -747,182 +743,177 @@ attributes #6 = { nounwind } !205 = !DILocation(line: 162, column: 38, scope: !199) !206 = !DILocation(line: 162, column: 40, scope: !199) !207 = !DILocation(line: 162, column: 36, scope: !199) -!208 = !DILocation(line: 162, column: 13, scope: !185) -!209 = !DILocation(line: 164, column: 16, scope: !210) -!210 = distinct !DILexicalBlock(scope: !199, file: !7, line: 163, column: 9) -!211 = !DILocation(line: 164, column: 18, scope: !210) -!212 = !DILocation(line: 164, column: 13, scope: !210) -!213 = !DILocation(line: 165, column: 16, scope: !210) -!214 = !DILocation(line: 165, column: 20, scope: !210) -!215 = !DILocation(line: 165, column: 18, scope: !210) -!216 = !DILocation(line: 165, column: 14, scope: !210) -!217 = !DILocation(line: 166, column: 11, scope: !210) -!218 = !DILocation(line: 166, column: 18, scope: !210) -!219 = !DILocation(line: 166, column: 24, scope: !210) -!220 = !DILocation(line: 166, column: 22, scope: !210) -!221 = !DILocation(line: 168, column: 20, scope: !222) -!222 = distinct !DILexicalBlock(scope: !223, file: !7, line: 168, column: 17) -!223 = distinct !DILexicalBlock(scope: !210, file: !7, line: 167, column: 11) -!224 = !DILocation(line: 168, column: 31, scope: !222) -!225 = !DILocation(line: 168, column: 30, scope: !222) -!226 = !DILocation(line: 168, column: 27, scope: !222) -!227 = !DILocation(line: 168, column: 17, scope: !223) -!228 = !DILocation(line: 169, column: 15, scope: !222) -!229 = !DILocation(line: 170, column: 19, scope: !223) -!230 = !DILocation(line: 170, column: 18, scope: !223) -!231 = !DILocation(line: 170, column: 15, scope: !223) -!232 = distinct !{!232, !217, !233, !105} -!233 = !DILocation(line: 171, column: 11, scope: !210) -!234 = !DILocation(line: 172, column: 9, scope: !210) -!235 = !DILocation(line: 173, column: 18, scope: !185) -!236 = !DILocation(line: 173, column: 15, scope: !185) -!237 = !DILocation(line: 173, column: 11, scope: !185) -!238 = !DILocation(line: 176, column: 44, scope: !239) -!239 = distinct !DILexicalBlock(scope: !185, file: !7, line: 176, column: 13) -!240 = !DILocation(line: 176, column: 46, scope: !239) -!241 = !DILocation(line: 176, column: 43, scope: !239) -!242 = !DILocation(line: 176, column: 50, scope: !239) -!243 = !DILocation(line: 176, column: 33, scope: !239) -!244 = !DILocation(line: 176, column: 16, scope: !239) -!245 = !DILocation(line: 176, column: 73, scope: !239) -!246 = !DILocation(line: 176, column: 13, scope: !185) -!247 = !DILocation(line: 179, column: 15, scope: !248) -!248 = distinct !DILexicalBlock(scope: !249, file: !7, line: 179, column: 15) -!249 = distinct !DILexicalBlock(scope: !239, file: !7, line: 178, column: 9) -!250 = !DILocation(line: 179, column: 15, scope: !249) -!251 = !DILocation(line: 180, column: 23, scope: !248) -!252 = !DILocation(line: 180, column: 13, scope: !248) -!253 = !DILocation(line: 181, column: 11, scope: !249) -!254 = !DILocation(line: 183, column: 18, scope: !185) -!255 = !DILocation(line: 183, column: 20, scope: !185) -!256 = !DILocation(line: 183, column: 15, scope: !185) -!257 = !DILocation(line: 184, column: 14, scope: !185) -!258 = !DILocation(line: 184, column: 16, scope: !185) -!259 = !DILocation(line: 184, column: 10, scope: !185) -!260 = !DILocation(line: 184, column: 12, scope: !185) -!261 = !DILocation(line: 185, column: 17, scope: !185) -!262 = !DILocation(line: 185, column: 20, scope: !185) -!263 = !DILocation(line: 185, column: 13, scope: !185) -!264 = !DILocation(line: 185, column: 26, scope: !185) -!265 = !DILocation(line: 186, column: 16, scope: !185) -!266 = !DILocation(line: 186, column: 11, scope: !185) -!267 = !DILocation(line: 186, column: 9, scope: !185) -!268 = !DILocation(line: 186, column: 14, scope: !185) -!269 = !DILocation(line: 189, column: 13, scope: !270) -!270 = distinct !DILexicalBlock(scope: !185, file: !7, line: 189, column: 13) -!271 = !DILocation(line: 189, column: 13, scope: !185) -!272 = !DILocation(line: 191, column: 18, scope: !273) -!273 = distinct !DILexicalBlock(scope: !270, file: !7, line: 190, column: 9) -!274 = !DILocation(line: 191, column: 13, scope: !273) -!275 = !DILocation(line: 191, column: 11, scope: !273) -!276 = !DILocation(line: 191, column: 16, scope: !273) -!277 = !DILocation(line: 192, column: 22, scope: !273) -!278 = !DILocation(line: 192, column: 17, scope: !273) -!279 = !DILocation(line: 192, column: 13, scope: !273) -!280 = !DILocation(line: 192, column: 15, scope: !273) -!281 = !DILocation(line: 193, column: 28, scope: !273) -!282 = !DILocation(line: 193, column: 26, scope: !273) -!283 = !DILocation(line: 193, column: 17, scope: !273) -!284 = !DILocation(line: 193, column: 13, scope: !273) -!285 = !DILocation(line: 193, column: 15, scope: !273) -!286 = !DILocation(line: 194, column: 19, scope: !273) -!287 = !DILocation(line: 194, column: 13, scope: !273) -!288 = !DILocation(line: 194, column: 17, scope: !273) -!289 = !DILocation(line: 195, column: 15, scope: !273) -!290 = !DILocation(line: 195, column: 21, scope: !273) -!291 = !DILocation(line: 195, column: 25, scope: !273) -!292 = !DILocation(line: 195, column: 23, scope: !273) -!293 = !DILocation(line: 195, column: 17, scope: !273) -!294 = !DILocation(line: 195, column: 13, scope: !273) -!295 = !DILocation(line: 196, column: 13, scope: !273) -!296 = !DILocation(line: 196, column: 14, scope: !273) -!297 = !DILocation(line: 196, column: 11, scope: !273) -!298 = !DILocation(line: 196, column: 18, scope: !273) -!299 = !DILocation(line: 196, column: 23, scope: !273) -!300 = !DILocation(line: 197, column: 9, scope: !273) -!301 = distinct !{!301, !177, !302, !105} -!302 = !DILocation(line: 198, column: 7, scope: !178) -!303 = !DILocation(line: 217, column: 17, scope: !178) -!304 = !DILocation(line: 217, column: 21, scope: !178) -!305 = !DILocation(line: 217, column: 19, scope: !178) -!306 = !DILocation(line: 217, column: 13, scope: !178) -!307 = !DILocation(line: 217, column: 9, scope: !178) -!308 = !DILocation(line: 218, column: 16, scope: !309) -!309 = distinct !DILexicalBlock(scope: !178, file: !7, line: 218, column: 7) -!310 = !DILocation(line: 218, column: 21, scope: !309) -!311 = !DILocation(line: 218, column: 18, scope: !309) -!312 = !DILocation(line: 218, column: 14, scope: !309) -!313 = !DILocation(line: 218, column: 12, scope: !309) -!314 = !DILocation(line: 218, column: 24, scope: !315) -!315 = distinct !DILexicalBlock(scope: !309, file: !7, line: 218, column: 7) -!316 = !DILocation(line: 218, column: 28, scope: !315) -!317 = !DILocation(line: 218, column: 26, scope: !315) -!318 = !DILocation(line: 218, column: 7, scope: !309) -!319 = !DILocation(line: 219, column: 9, scope: !315) -!320 = !DILocation(line: 219, column: 11, scope: !315) -!321 = !DILocation(line: 219, column: 16, scope: !315) -!322 = !DILocation(line: 218, column: 36, scope: !315) -!323 = !DILocation(line: 218, column: 33, scope: !315) -!324 = !DILocation(line: 218, column: 7, scope: !315) -!325 = distinct !{!325, !318, !326, !105} -!326 = !DILocation(line: 219, column: 16, scope: !309) -!327 = !DILocation(line: 222, column: 22, scope: !328) -!328 = distinct !DILexicalBlock(scope: !178, file: !7, line: 222, column: 7) -!329 = !DILocation(line: 222, column: 24, scope: !328) -!330 = !DILocation(line: 222, column: 18, scope: !328) -!331 = !DILocation(line: 222, column: 14, scope: !328) -!332 = !DILocation(line: 222, column: 12, scope: !328) -!333 = !DILocation(line: 222, column: 30, scope: !334) -!334 = distinct !DILexicalBlock(scope: !328, file: !7, line: 222, column: 7) -!335 = !DILocation(line: 222, column: 34, scope: !334) -!336 = !DILocation(line: 222, column: 32, scope: !334) -!337 = !DILocation(line: 222, column: 7, scope: !328) -!338 = !DILocation(line: 223, column: 14, scope: !334) -!339 = !DILocation(line: 223, column: 11, scope: !334) -!340 = !DILocation(line: 223, column: 9, scope: !334) -!341 = !DILocation(line: 222, column: 39, scope: !334) -!342 = !DILocation(line: 222, column: 7, scope: !334) -!343 = distinct !{!343, !337, !344, !105} -!344 = !DILocation(line: 223, column: 14, scope: !328) -!345 = !DILocation(line: 224, column: 12, scope: !178) -!346 = !DILocation(line: 224, column: 9, scope: !178) -!347 = !DILocation(line: 227, column: 7, scope: !178) -!348 = !DILocation(line: 227, column: 15, scope: !178) -!349 = !DILocation(line: 227, column: 26, scope: !178) -!350 = !DILocation(line: 227, column: 23, scope: !178) -!351 = !DILocation(line: 227, column: 29, scope: !178) -!352 = !DILocation(line: 227, column: 17, scope: !178) -!353 = !DILocation(line: 227, column: 40, scope: !178) -!354 = !DILocation(line: 227, column: 38, scope: !178) -!355 = !DILocation(line: 227, column: 35, scope: !178) -!356 = !DILocation(line: 229, column: 10, scope: !357) -!357 = distinct !DILexicalBlock(scope: !178, file: !7, line: 228, column: 7) -!358 = !DILocation(line: 230, column: 14, scope: !357) -!359 = !DILocation(line: 230, column: 11, scope: !357) -!360 = distinct !{!360, !347, !361, !105} -!361 = !DILocation(line: 231, column: 7, scope: !178) -!362 = distinct !{!362, !175, !363, !105} -!363 = !DILocation(line: 232, column: 5, scope: !107) -!364 = !DILocation(line: 237, column: 10, scope: !107) -!365 = !DILocation(line: 237, column: 12, scope: !107) -!366 = !DILocation(line: 237, column: 17, scope: !107) -!367 = !DILocation(line: 237, column: 20, scope: !107) -!368 = !DILocation(line: 237, column: 22, scope: !107) -!369 = !DILocation(line: 0, scope: !107) -!370 = !DILocation(line: 237, column: 3, scope: !107) -!371 = !DILocation(line: 238, column: 1, scope: !107) -!372 = distinct !DISubprogram(name: "main", scope: !7, file: !7, line: 240, type: !373, scopeLine: 240, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !38) -!373 = !DISubroutineType(types: !374) -!374 = !{!37} -!375 = !DILocalVariable(name: "ll", scope: !372, file: !7, line: 241, type: !376) -!376 = !DICompositeType(tag: DW_TAG_array_type, baseType: !22, size: 10112, elements: !377) -!377 = !{!378} -!378 = !DISubrange(count: 316) -!379 = !DILocation(line: 241, column: 13, scope: !372) -!380 = !DILocalVariable(name: "tl", scope: !372, file: !7, line: 242, type: !5) -!381 = !DILocation(line: 242, column: 17, scope: !372) -!382 = !DILocalVariable(name: "bl", scope: !372, file: !7, line: 243, type: !37) -!383 = !DILocation(line: 243, column: 8, scope: !372) -!384 = !DILocation(line: 245, column: 13, scope: !372) -!385 = !DILocation(line: 245, column: 2, scope: !372) -!386 = !DILocation(line: 247, column: 1, scope: !372) +!208 = !DILocation(line: 164, column: 16, scope: !209) +!209 = distinct !DILexicalBlock(scope: !199, file: !7, line: 163, column: 9) +!210 = !DILocation(line: 164, column: 18, scope: !209) +!211 = !DILocation(line: 164, column: 13, scope: !209) +!212 = !DILocation(line: 165, column: 16, scope: !209) +!213 = !DILocation(line: 165, column: 20, scope: !209) +!214 = !DILocation(line: 165, column: 18, scope: !209) +!215 = !DILocation(line: 165, column: 14, scope: !209) +!216 = !DILocation(line: 166, column: 11, scope: !209) +!217 = !DILocation(line: 166, column: 18, scope: !209) +!218 = !DILocation(line: 166, column: 24, scope: !209) +!219 = !DILocation(line: 166, column: 22, scope: !209) +!220 = !DILocation(line: 168, column: 20, scope: !221) +!221 = distinct !DILexicalBlock(scope: !222, file: !7, line: 168, column: 17) +!222 = distinct !DILexicalBlock(scope: !209, file: !7, line: 167, column: 11) +!223 = !DILocation(line: 168, column: 31, scope: !221) +!224 = !DILocation(line: 168, column: 30, scope: !221) +!225 = !DILocation(line: 168, column: 27, scope: !221) +!226 = !DILocation(line: 169, column: 15, scope: !221) +!227 = !DILocation(line: 170, column: 19, scope: !222) +!228 = !DILocation(line: 170, column: 18, scope: !222) +!229 = !DILocation(line: 170, column: 15, scope: !222) +!230 = distinct !{!230, !216, !231, !105} +!231 = !DILocation(line: 171, column: 11, scope: !209) +!232 = !DILocation(line: 172, column: 9, scope: !209) +!233 = !DILocation(line: 173, column: 18, scope: !185) +!234 = !DILocation(line: 173, column: 15, scope: !185) +!235 = !DILocation(line: 173, column: 11, scope: !185) +!236 = !DILocation(line: 176, column: 44, scope: !237) +!237 = distinct !DILexicalBlock(scope: !185, file: !7, line: 176, column: 13) +!238 = !DILocation(line: 176, column: 46, scope: !237) +!239 = !DILocation(line: 176, column: 43, scope: !237) +!240 = !DILocation(line: 176, column: 50, scope: !237) +!241 = !DILocation(line: 176, column: 33, scope: !237) +!242 = !DILocation(line: 176, column: 16, scope: !237) +!243 = !DILocation(line: 176, column: 73, scope: !237) +!244 = !DILocation(line: 179, column: 15, scope: !245) +!245 = distinct !DILexicalBlock(scope: !246, file: !7, line: 179, column: 15) +!246 = distinct !DILexicalBlock(scope: !237, file: !7, line: 178, column: 9) +!247 = !DILocation(line: 180, column: 23, scope: !245) +!248 = !DILocation(line: 180, column: 13, scope: !245) +!249 = !DILocation(line: 181, column: 11, scope: !246) +!250 = !DILocation(line: 183, column: 18, scope: !185) +!251 = !DILocation(line: 183, column: 20, scope: !185) +!252 = !DILocation(line: 183, column: 15, scope: !185) +!253 = !DILocation(line: 184, column: 14, scope: !185) +!254 = !DILocation(line: 184, column: 16, scope: !185) +!255 = !DILocation(line: 184, column: 10, scope: !185) +!256 = !DILocation(line: 184, column: 12, scope: !185) +!257 = !DILocation(line: 185, column: 17, scope: !185) +!258 = !DILocation(line: 185, column: 20, scope: !185) +!259 = !DILocation(line: 185, column: 13, scope: !185) +!260 = !DILocation(line: 185, column: 26, scope: !185) +!261 = !DILocation(line: 186, column: 16, scope: !185) +!262 = !DILocation(line: 186, column: 11, scope: !185) +!263 = !DILocation(line: 186, column: 9, scope: !185) +!264 = !DILocation(line: 186, column: 14, scope: !185) +!265 = !DILocation(line: 189, column: 13, scope: !266) +!266 = distinct !DILexicalBlock(scope: !185, file: !7, line: 189, column: 13) +!267 = !DILocation(line: 191, column: 18, scope: !268) +!268 = distinct !DILexicalBlock(scope: !266, file: !7, line: 190, column: 9) +!269 = !DILocation(line: 191, column: 13, scope: !268) +!270 = !DILocation(line: 191, column: 11, scope: !268) +!271 = !DILocation(line: 191, column: 16, scope: !268) +!272 = !DILocation(line: 192, column: 22, scope: !268) +!273 = !DILocation(line: 192, column: 17, scope: !268) +!274 = !DILocation(line: 192, column: 13, scope: !268) +!275 = !DILocation(line: 192, column: 15, scope: !268) +!276 = !DILocation(line: 193, column: 28, scope: !268) +!277 = !DILocation(line: 193, column: 26, scope: !268) +!278 = !DILocation(line: 193, column: 17, scope: !268) +!279 = !DILocation(line: 193, column: 13, scope: !268) +!280 = !DILocation(line: 193, column: 15, scope: !268) +!281 = !DILocation(line: 194, column: 19, scope: !268) +!282 = !DILocation(line: 194, column: 13, scope: !268) +!283 = !DILocation(line: 194, column: 17, scope: !268) +!284 = !DILocation(line: 195, column: 15, scope: !268) +!285 = !DILocation(line: 195, column: 21, scope: !268) +!286 = !DILocation(line: 195, column: 25, scope: !268) +!287 = !DILocation(line: 195, column: 23, scope: !268) +!288 = !DILocation(line: 195, column: 17, scope: !268) +!289 = !DILocation(line: 195, column: 13, scope: !268) +!290 = !DILocation(line: 196, column: 13, scope: !268) +!291 = !DILocation(line: 196, column: 14, scope: !268) +!292 = !DILocation(line: 196, column: 11, scope: !268) +!293 = !DILocation(line: 196, column: 18, scope: !268) +!294 = !DILocation(line: 196, column: 23, scope: !268) +!295 = !DILocation(line: 197, column: 9, scope: !268) +!296 = distinct !{!296, !177, !297, !105} +!297 = !DILocation(line: 198, column: 7, scope: !178) +!298 = !DILocation(line: 217, column: 17, scope: !178) +!299 = !DILocation(line: 217, column: 21, scope: !178) +!300 = !DILocation(line: 217, column: 19, scope: !178) +!301 = !DILocation(line: 217, column: 13, scope: !178) +!302 = !DILocation(line: 217, column: 9, scope: !178) +!303 = !DILocation(line: 218, column: 16, scope: !304) +!304 = distinct !DILexicalBlock(scope: !178, file: !7, line: 218, column: 7) +!305 = !DILocation(line: 218, column: 21, scope: !304) +!306 = !DILocation(line: 218, column: 18, scope: !304) +!307 = !DILocation(line: 218, column: 14, scope: !304) +!308 = !DILocation(line: 218, column: 12, scope: !304) +!309 = !DILocation(line: 218, column: 24, scope: !310) +!310 = distinct !DILexicalBlock(scope: !304, file: !7, line: 218, column: 7) +!311 = !DILocation(line: 218, column: 28, scope: !310) +!312 = !DILocation(line: 218, column: 26, scope: !310) +!313 = !DILocation(line: 218, column: 7, scope: !304) +!314 = !DILocation(line: 219, column: 9, scope: !310) +!315 = !DILocation(line: 219, column: 11, scope: !310) +!316 = !DILocation(line: 219, column: 16, scope: !310) +!317 = !DILocation(line: 218, column: 36, scope: !310) +!318 = !DILocation(line: 218, column: 33, scope: !310) +!319 = !DILocation(line: 218, column: 7, scope: !310) +!320 = distinct !{!320, !313, !321, !105} +!321 = !DILocation(line: 219, column: 16, scope: !304) +!322 = !DILocation(line: 222, column: 22, scope: !323) +!323 = distinct !DILexicalBlock(scope: !178, file: !7, line: 222, column: 7) +!324 = !DILocation(line: 222, column: 24, scope: !323) +!325 = !DILocation(line: 222, column: 18, scope: !323) +!326 = !DILocation(line: 222, column: 14, scope: !323) +!327 = !DILocation(line: 222, column: 12, scope: !323) +!328 = !DILocation(line: 222, column: 30, scope: !329) +!329 = distinct !DILexicalBlock(scope: !323, file: !7, line: 222, column: 7) +!330 = !DILocation(line: 222, column: 34, scope: !329) +!331 = !DILocation(line: 222, column: 32, scope: !329) +!332 = !DILocation(line: 222, column: 7, scope: !323) +!333 = !DILocation(line: 223, column: 14, scope: !329) +!334 = !DILocation(line: 223, column: 11, scope: !329) +!335 = !DILocation(line: 223, column: 9, scope: !329) +!336 = !DILocation(line: 222, column: 39, scope: !329) +!337 = !DILocation(line: 222, column: 7, scope: !329) +!338 = distinct !{!338, !332, !339, !105} +!339 = !DILocation(line: 223, column: 14, scope: !323) +!340 = !DILocation(line: 224, column: 12, scope: !178) +!341 = !DILocation(line: 224, column: 9, scope: !178) +!342 = !DILocation(line: 227, column: 7, scope: !178) +!343 = !DILocation(line: 227, column: 15, scope: !178) +!344 = !DILocation(line: 227, column: 26, scope: !178) +!345 = !DILocation(line: 227, column: 23, scope: !178) +!346 = !DILocation(line: 227, column: 29, scope: !178) +!347 = !DILocation(line: 227, column: 17, scope: !178) +!348 = !DILocation(line: 227, column: 40, scope: !178) +!349 = !DILocation(line: 227, column: 38, scope: !178) +!350 = !DILocation(line: 227, column: 35, scope: !178) +!351 = !DILocation(line: 229, column: 10, scope: !352) +!352 = distinct !DILexicalBlock(scope: !178, file: !7, line: 228, column: 7) +!353 = !DILocation(line: 230, column: 14, scope: !352) +!354 = !DILocation(line: 230, column: 11, scope: !352) +!355 = distinct !{!355, !342, !356, !105} +!356 = !DILocation(line: 231, column: 7, scope: !178) +!357 = distinct !{!357, !175, !358, !105} +!358 = !DILocation(line: 232, column: 5, scope: !107) +!359 = !DILocation(line: 237, column: 10, scope: !107) +!360 = !DILocation(line: 237, column: 12, scope: !107) +!361 = !DILocation(line: 237, column: 17, scope: !107) +!362 = !DILocation(line: 237, column: 20, scope: !107) +!363 = !DILocation(line: 237, column: 22, scope: !107) +!364 = !DILocation(line: 0, scope: !107) +!365 = !DILocation(line: 237, column: 3, scope: !107) +!366 = !DILocation(line: 238, column: 1, scope: !107) +!367 = distinct !DISubprogram(name: "main", scope: !7, file: !7, line: 240, type: !368, scopeLine: 240, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !38) +!368 = !DISubroutineType(types: !369) +!369 = !{!37} +!370 = !DILocalVariable(name: "ll", scope: !367, file: !7, line: 241, type: !371) +!371 = !DICompositeType(tag: DW_TAG_array_type, baseType: !22, size: 10112, elements: !372) +!372 = !{!373} +!373 = !DISubrange(count: 316) +!374 = !DILocation(line: 241, column: 13, scope: !367) +!375 = !DILocalVariable(name: "tl", scope: !367, file: !7, line: 242, type: !5) +!376 = !DILocation(line: 242, column: 17, scope: !367) +!377 = !DILocalVariable(name: "bl", scope: !367, file: !7, line: 243, type: !37) +!378 = !DILocation(line: 243, column: 8, scope: !367) +!379 = !DILocation(line: 245, column: 13, scope: !367) +!380 = !DILocation(line: 245, column: 2, scope: !367) +!381 = !DILocation(line: 247, column: 1, scope: !367) diff --git a/test_cases_bc/mem_leak/malloc53.c.bc b/test_cases_bc/mem_leak/malloc53.c.bc index 4a71f7543..ad7ebd4ad 100644 --- a/test_cases_bc/mem_leak/malloc53.c.bc +++ b/test_cases_bc/mem_leak/malloc53.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc53.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc53.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc53.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc53.c" +target datalayout = "e-m:e-p270:32:32-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_rr_node = type { i16, i16, i16, i16, i16, i16, i32, ptr, ptr, float, float } @@ -17,28 +17,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !62, metadata !DIExpression()), !dbg !63 + #dbg_declare(ptr %n.addr, !62, !DIExpression(), !63) %0 = load i32, ptr %n.addr, align 4, !dbg !64 %conv = sext i32 %0 to i64, !dbg !64 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !65 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !65 ret ptr %call, !dbg !66 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !67 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !68, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %n.addr, !68, !DIExpression(), !69) %0 = load i32, ptr %n.addr, align 4, !dbg !70 %conv = sext i32 %0 to i64, !dbg !70 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !71 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !71 ret ptr %call, !dbg !72 } @@ -47,10 +44,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !73 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !74, metadata !DIExpression()), !dbg !75 + #dbg_declare(ptr %n.addr, !74, !DIExpression(), !75) %0 = load i32, ptr %n.addr, align 4, !dbg !76 %conv = sext i32 %0 to i64, !dbg !76 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !77 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !77 ret ptr %call, !dbg !78 } @@ -59,10 +56,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !79 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !80, metadata !DIExpression()), !dbg !81 + #dbg_declare(ptr %n.addr, !80, !DIExpression(), !81) %0 = load i32, ptr %n.addr, align 4, !dbg !82 %conv = sext i32 %0 to i64, !dbg !82 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !83 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !83 ret ptr %call, !dbg !84 } @@ -71,10 +68,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !85 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !86, metadata !DIExpression()), !dbg !87 + #dbg_declare(ptr %n.addr, !86, !DIExpression(), !87) %0 = load i32, ptr %n.addr, align 4, !dbg !88 %conv = sext i32 %0 to i64, !dbg !88 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !89 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !89 ret ptr %call, !dbg !90 } @@ -83,10 +80,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !91 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !92, metadata !DIExpression()), !dbg !93 + #dbg_declare(ptr %n.addr, !92, !DIExpression(), !93) %0 = load i32, ptr %n.addr, align 4, !dbg !94 %conv = sext i32 %0 to i64, !dbg !94 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !95 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !95 ret ptr %call, !dbg !96 } @@ -95,10 +92,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !97 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !98, metadata !DIExpression()), !dbg !99 + #dbg_declare(ptr %n.addr, !98, !DIExpression(), !99) %0 = load i32, ptr %n.addr, align 4, !dbg !100 %conv = sext i32 %0 to i64, !dbg !100 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !101 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !101 ret ptr %call, !dbg !102 } @@ -133,36 +130,36 @@ entry: %trans_track_to_cblock_buf = alloca float, align 4 %trans_cblock_to_lblock_buf = alloca float, align 4 store i32 %num_switch, ptr %num_switch.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %num_switch.addr, metadata !106, metadata !DIExpression()), !dbg !107 + #dbg_declare(ptr %num_switch.addr, !106, !DIExpression(), !107) store float %R_minW_nmos, ptr %R_minW_nmos.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %R_minW_nmos.addr, metadata !108, metadata !DIExpression()), !dbg !109 + #dbg_declare(ptr %R_minW_nmos.addr, !108, !DIExpression(), !109) store float %R_minW_pmos, ptr %R_minW_pmos.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %R_minW_pmos.addr, metadata !110, metadata !DIExpression()), !dbg !111 - call void @llvm.dbg.declare(metadata ptr %num_inputs_to_cblock, metadata !112, metadata !DIExpression()), !dbg !113 - call void @llvm.dbg.declare(metadata ptr %cblock_counted, metadata !114, metadata !DIExpression()), !dbg !115 - call void @llvm.dbg.declare(metadata ptr %shared_buffer_trans, metadata !116, metadata !DIExpression()), !dbg !117 - call void @llvm.dbg.declare(metadata ptr %unsharable_switch_trans, metadata !118, metadata !DIExpression()), !dbg !119 - call void @llvm.dbg.declare(metadata ptr %sharable_switch_trans, metadata !120, metadata !DIExpression()), !dbg !121 - call void @llvm.dbg.declare(metadata ptr %from_rr_type, metadata !122, metadata !DIExpression()), !dbg !123 - call void @llvm.dbg.declare(metadata ptr %to_rr_type, metadata !124, metadata !DIExpression()), !dbg !125 - call void @llvm.dbg.declare(metadata ptr %from_node, metadata !126, metadata !DIExpression()), !dbg !127 - call void @llvm.dbg.declare(metadata ptr %to_node, metadata !128, metadata !DIExpression()), !dbg !129 - call void @llvm.dbg.declare(metadata ptr %iedge, metadata !130, metadata !DIExpression()), !dbg !131 - call void @llvm.dbg.declare(metadata ptr %num_edges, metadata !132, metadata !DIExpression()), !dbg !133 - call void @llvm.dbg.declare(metadata ptr %maxlen, metadata !134, metadata !DIExpression()), !dbg !135 - call void @llvm.dbg.declare(metadata ptr %iswitch, metadata !136, metadata !DIExpression()), !dbg !137 - call void @llvm.dbg.declare(metadata ptr %i, metadata !138, metadata !DIExpression()), !dbg !139 - call void @llvm.dbg.declare(metadata ptr %j, metadata !140, metadata !DIExpression()), !dbg !141 - call void @llvm.dbg.declare(metadata ptr %iseg, metadata !142, metadata !DIExpression()), !dbg !143 - call void @llvm.dbg.declare(metadata ptr %max_inputs_to_cblock, metadata !144, metadata !DIExpression()), !dbg !145 - call void @llvm.dbg.declare(metadata ptr %ntrans_sharing, metadata !146, metadata !DIExpression()), !dbg !147 - call void @llvm.dbg.declare(metadata ptr %ntrans_no_sharing, metadata !148, metadata !DIExpression()), !dbg !149 - call void @llvm.dbg.declare(metadata ptr %shared_opin_buffer_trans, metadata !150, metadata !DIExpression()), !dbg !151 - call void @llvm.dbg.declare(metadata ptr %input_cblock_trans, metadata !152, metadata !DIExpression()), !dbg !153 - call void @llvm.dbg.declare(metadata ptr %trans_sram_bit, metadata !154, metadata !DIExpression()), !dbg !156 + #dbg_declare(ptr %R_minW_pmos.addr, !110, !DIExpression(), !111) + #dbg_declare(ptr %num_inputs_to_cblock, !112, !DIExpression(), !113) + #dbg_declare(ptr %cblock_counted, !114, !DIExpression(), !115) + #dbg_declare(ptr %shared_buffer_trans, !116, !DIExpression(), !117) + #dbg_declare(ptr %unsharable_switch_trans, !118, !DIExpression(), !119) + #dbg_declare(ptr %sharable_switch_trans, !120, !DIExpression(), !121) + #dbg_declare(ptr %from_rr_type, !122, !DIExpression(), !123) + #dbg_declare(ptr %to_rr_type, !124, !DIExpression(), !125) + #dbg_declare(ptr %from_node, !126, !DIExpression(), !127) + #dbg_declare(ptr %to_node, !128, !DIExpression(), !129) + #dbg_declare(ptr %iedge, !130, !DIExpression(), !131) + #dbg_declare(ptr %num_edges, !132, !DIExpression(), !133) + #dbg_declare(ptr %maxlen, !134, !DIExpression(), !135) + #dbg_declare(ptr %iswitch, !136, !DIExpression(), !137) + #dbg_declare(ptr %i, !138, !DIExpression(), !139) + #dbg_declare(ptr %j, !140, !DIExpression(), !141) + #dbg_declare(ptr %iseg, !142, !DIExpression(), !143) + #dbg_declare(ptr %max_inputs_to_cblock, !144, !DIExpression(), !145) + #dbg_declare(ptr %ntrans_sharing, !146, !DIExpression(), !147) + #dbg_declare(ptr %ntrans_no_sharing, !148, !DIExpression(), !149) + #dbg_declare(ptr %shared_opin_buffer_trans, !150, !DIExpression(), !151) + #dbg_declare(ptr %input_cblock_trans, !152, !DIExpression(), !153) + #dbg_declare(ptr %trans_sram_bit, !154, !DIExpression(), !156) store float 6.000000e+00, ptr %trans_sram_bit, align 4, !dbg !156 - call void @llvm.dbg.declare(metadata ptr %trans_track_to_cblock_buf, metadata !157, metadata !DIExpression()), !dbg !158 - call void @llvm.dbg.declare(metadata ptr %trans_cblock_to_lblock_buf, metadata !159, metadata !DIExpression()), !dbg !160 + #dbg_declare(ptr %trans_track_to_cblock_buf, !157, !DIExpression(), !158) + #dbg_declare(ptr %trans_cblock_to_lblock_buf, !159, !DIExpression(), !160) store float 0.000000e+00, ptr %ntrans_sharing, align 4, !dbg !161 store float 0.000000e+00, ptr %ntrans_no_sharing, align 4, !dbg !162 store i32 0, ptr %max_inputs_to_cblock, align 4, !dbg !163 @@ -228,7 +225,7 @@ sw.bb7: ; preds = %for.body6, %for.bod %11 = load i32, ptr %from_node, align 4, !dbg !198 %idxprom = sext i32 %11 to i64, !dbg !196 %arrayidx = getelementptr inbounds %struct.s_rr_node, ptr %10, i64 %idxprom, !dbg !196 - %switches = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx, i32 0, i32 8, !dbg !199 + %switches = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx, i32 0, i32 8, !dbg !199 %12 = load ptr, ptr %switches, align 8, !dbg !199 %13 = load i32, ptr %iedge, align 4, !dbg !200 %idxprom8 = sext i32 %13 to i64, !dbg !196 @@ -238,237 +235,236 @@ sw.bb7: ; preds = %for.body6, %for.bod store i32 %conv, ptr %iswitch, align 4, !dbg !201 %15 = load i32, ptr %num_edges, align 4, !dbg !202 %tobool = icmp ne i32 %15, 0, !dbg !202 - br i1 %tobool, label %if.then, label %if.else, !dbg !204 + br i1 %tobool, label %if.then, label %if.else, !dbg !202 if.then: ; preds = %sw.bb7 - br label %if.end13, !dbg !205 + br label %if.end13, !dbg !204 if.else: ; preds = %sw.bb7 - %16 = load i32, ptr %from_node, align 4, !dbg !207 - %17 = load i32, ptr %to_node, align 4, !dbg !209 - %cmp10 = icmp slt i32 %16, %17, !dbg !210 - br i1 %cmp10, label %if.then12, label %if.end, !dbg !211 + %16 = load i32, ptr %from_node, align 4, !dbg !206 + %17 = load i32, ptr %to_node, align 4, !dbg !208 + %cmp10 = icmp slt i32 %16, %17, !dbg !209 + br i1 %cmp10, label %if.then12, label %if.end, !dbg !209 if.then12: ; preds = %if.else - br label %if.end, !dbg !212 + br label %if.end, !dbg !210 if.end: ; preds = %if.then12, %if.else br label %if.end13 if.end13: ; preds = %if.end, %if.then - br label %sw.epilog, !dbg !214 + br label %sw.epilog, !dbg !212 sw.bb14: ; preds = %for.body6 - br label %sw.epilog, !dbg !215 + br label %sw.epilog, !dbg !213 sw.default: ; preds = %for.body6 - br label %return, !dbg !216 + br label %return, !dbg !214 sw.epilog: ; preds = %sw.bb14, %if.end13 - br label %for.inc, !dbg !217 + br label %for.inc, !dbg !215 for.inc: ; preds = %sw.epilog - %18 = load i32, ptr %iedge, align 4, !dbg !218 - %inc = add nsw i32 %18, 1, !dbg !218 - store i32 %inc, ptr %iedge, align 4, !dbg !218 - br label %for.cond4, !dbg !219, !llvm.loop !220 + %18 = load i32, ptr %iedge, align 4, !dbg !216 + %inc = add nsw i32 %18, 1, !dbg !216 + store i32 %inc, ptr %iedge, align 4, !dbg !216 + br label %for.cond4, !dbg !217, !llvm.loop !218 for.end: ; preds = %for.cond4 - %19 = load i32, ptr %from_rr_type, align 4, !dbg !223 - %cmp15 = icmp eq i32 %19, 4, !dbg !225 - br i1 %cmp15, label %if.then17, label %if.else48, !dbg !226 + %19 = load i32, ptr %from_rr_type, align 4, !dbg !221 + %cmp15 = icmp eq i32 %19, 4, !dbg !223 + br i1 %cmp15, label %if.then17, label %if.else48, !dbg !223 if.then17: ; preds = %for.end - %20 = load ptr, ptr @rr_node, align 8, !dbg !227 - %21 = load i32, ptr %from_node, align 4, !dbg !230 - %idxprom18 = sext i32 %21 to i64, !dbg !227 - %arrayidx19 = getelementptr inbounds %struct.s_rr_node, ptr %20, i64 %idxprom18, !dbg !227 - %xlow = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx19, i32 0, i32 0, !dbg !231 - %22 = load i16, ptr %xlow, align 8, !dbg !231 - %conv20 = sext i16 %22 to i32, !dbg !227 - %sub = sub nsw i32 %conv20, 1, !dbg !232 - store i32 %sub, ptr %i, align 4, !dbg !233 - br label %for.cond21, !dbg !234 + %20 = load ptr, ptr @rr_node, align 8, !dbg !224 + %21 = load i32, ptr %from_node, align 4, !dbg !227 + %idxprom18 = sext i32 %21 to i64, !dbg !224 + %arrayidx19 = getelementptr inbounds %struct.s_rr_node, ptr %20, i64 %idxprom18, !dbg !224 + %xlow = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx19, i32 0, i32 0, !dbg !228 + %22 = load i16, ptr %xlow, align 8, !dbg !228 + %conv20 = sext i16 %22 to i32, !dbg !224 + %sub = sub nsw i32 %conv20, 1, !dbg !229 + store i32 %sub, ptr %i, align 4, !dbg !230 + br label %for.cond21, !dbg !231 for.cond21: ; preds = %for.inc28, %if.then17 - %23 = load i32, ptr %i, align 4, !dbg !235 - %24 = load ptr, ptr @rr_node, align 8, !dbg !237 - %25 = load i32, ptr %from_node, align 4, !dbg !238 - %idxprom22 = sext i32 %25 to i64, !dbg !237 - %arrayidx23 = getelementptr inbounds %struct.s_rr_node, ptr %24, i64 %idxprom22, !dbg !237 - %xhigh = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx23, i32 0, i32 1, !dbg !239 - %26 = load i16, ptr %xhigh, align 2, !dbg !239 - %conv24 = sext i16 %26 to i32, !dbg !237 - %cmp25 = icmp sle i32 %23, %conv24, !dbg !240 - br i1 %cmp25, label %for.body27, label %for.end30, !dbg !241 + %23 = load i32, ptr %i, align 4, !dbg !232 + %24 = load ptr, ptr @rr_node, align 8, !dbg !234 + %25 = load i32, ptr %from_node, align 4, !dbg !235 + %idxprom22 = sext i32 %25 to i64, !dbg !234 + %arrayidx23 = getelementptr inbounds %struct.s_rr_node, ptr %24, i64 %idxprom22, !dbg !234 + %xhigh = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx23, i32 0, i32 1, !dbg !236 + %26 = load i16, ptr %xhigh, align 2, !dbg !236 + %conv24 = sext i16 %26 to i32, !dbg !234 + %cmp25 = icmp sle i32 %23, %conv24, !dbg !237 + br i1 %cmp25, label %for.body27, label %for.end30, !dbg !238 for.body27: ; preds = %for.cond21 - br label %for.inc28, !dbg !242 + br label %for.inc28, !dbg !239 for.inc28: ; preds = %for.body27 - %27 = load i32, ptr %i, align 4, !dbg !244 - %inc29 = add nsw i32 %27, 1, !dbg !244 - store i32 %inc29, ptr %i, align 4, !dbg !244 - br label %for.cond21, !dbg !245, !llvm.loop !246 + %27 = load i32, ptr %i, align 4, !dbg !241 + %inc29 = add nsw i32 %27, 1, !dbg !241 + store i32 %inc29, ptr %i, align 4, !dbg !241 + br label %for.cond21, !dbg !242, !llvm.loop !243 for.end30: ; preds = %for.cond21 - %28 = load ptr, ptr @rr_node, align 8, !dbg !248 - %29 = load i32, ptr %from_node, align 4, !dbg !250 - %idxprom31 = sext i32 %29 to i64, !dbg !248 - %arrayidx32 = getelementptr inbounds %struct.s_rr_node, ptr %28, i64 %idxprom31, !dbg !248 - %xlow33 = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx32, i32 0, i32 0, !dbg !251 - %30 = load i16, ptr %xlow33, align 8, !dbg !251 - %conv34 = sext i16 %30 to i32, !dbg !248 - store i32 %conv34, ptr %i, align 4, !dbg !252 - br label %for.cond35, !dbg !253 + %28 = load ptr, ptr @rr_node, align 8, !dbg !245 + %29 = load i32, ptr %from_node, align 4, !dbg !247 + %idxprom31 = sext i32 %29 to i64, !dbg !245 + %arrayidx32 = getelementptr inbounds %struct.s_rr_node, ptr %28, i64 %idxprom31, !dbg !245 + %xlow33 = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx32, i32 0, i32 0, !dbg !248 + %30 = load i16, ptr %xlow33, align 8, !dbg !248 + %conv34 = sext i16 %30 to i32, !dbg !245 + store i32 %conv34, ptr %i, align 4, !dbg !249 + br label %for.cond35, !dbg !250 for.cond35: ; preds = %for.inc45, %for.end30 - %31 = load i32, ptr %i, align 4, !dbg !254 - %32 = load ptr, ptr @rr_node, align 8, !dbg !256 - %33 = load i32, ptr %from_node, align 4, !dbg !257 - %idxprom36 = sext i32 %33 to i64, !dbg !256 - %arrayidx37 = getelementptr inbounds %struct.s_rr_node, ptr %32, i64 %idxprom36, !dbg !256 - %xhigh38 = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx37, i32 0, i32 1, !dbg !258 - %34 = load i16, ptr %xhigh38, align 2, !dbg !258 - %conv39 = sext i16 %34 to i32, !dbg !256 - %cmp40 = icmp sle i32 %31, %conv39, !dbg !259 - br i1 %cmp40, label %for.body42, label %for.end47, !dbg !260 + %31 = load i32, ptr %i, align 4, !dbg !251 + %32 = load ptr, ptr @rr_node, align 8, !dbg !253 + %33 = load i32, ptr %from_node, align 4, !dbg !254 + %idxprom36 = sext i32 %33 to i64, !dbg !253 + %arrayidx37 = getelementptr inbounds %struct.s_rr_node, ptr %32, i64 %idxprom36, !dbg !253 + %xhigh38 = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx37, i32 0, i32 1, !dbg !255 + %34 = load i16, ptr %xhigh38, align 2, !dbg !255 + %conv39 = sext i16 %34 to i32, !dbg !253 + %cmp40 = icmp sle i32 %31, %conv39, !dbg !256 + br i1 %cmp40, label %for.body42, label %for.end47, !dbg !257 for.body42: ; preds = %for.cond35 - %35 = load ptr, ptr %cblock_counted, align 8, !dbg !261 - %36 = load i32, ptr %i, align 4, !dbg !262 - %idxprom43 = sext i32 %36 to i64, !dbg !261 - %arrayidx44 = getelementptr inbounds i32, ptr %35, i64 %idxprom43, !dbg !261 - store i32 0, ptr %arrayidx44, align 4, !dbg !263 - br label %for.inc45, !dbg !261 + %35 = load ptr, ptr %cblock_counted, align 8, !dbg !258 + %36 = load i32, ptr %i, align 4, !dbg !259 + %idxprom43 = sext i32 %36 to i64, !dbg !258 + %arrayidx44 = getelementptr inbounds i32, ptr %35, i64 %idxprom43, !dbg !258 + store i32 0, ptr %arrayidx44, align 4, !dbg !260 + br label %for.inc45, !dbg !258 for.inc45: ; preds = %for.body42 - %37 = load i32, ptr %i, align 4, !dbg !264 - %inc46 = add nsw i32 %37, 1, !dbg !264 - store i32 %inc46, ptr %i, align 4, !dbg !264 - br label %for.cond35, !dbg !265, !llvm.loop !266 + %37 = load i32, ptr %i, align 4, !dbg !261 + %inc46 = add nsw i32 %37, 1, !dbg !261 + store i32 %inc46, ptr %i, align 4, !dbg !261 + br label %for.cond35, !dbg !262, !llvm.loop !263 for.end47: ; preds = %for.cond35 - br label %if.end80, !dbg !268 + br label %if.end80, !dbg !265 if.else48: ; preds = %for.end - %38 = load ptr, ptr @rr_node, align 8, !dbg !269 - %39 = load i32, ptr %from_node, align 4, !dbg !272 - %idxprom49 = sext i32 %39 to i64, !dbg !269 - %arrayidx50 = getelementptr inbounds %struct.s_rr_node, ptr %38, i64 %idxprom49, !dbg !269 - %ylow = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx50, i32 0, i32 2, !dbg !273 - %40 = load i16, ptr %ylow, align 4, !dbg !273 - %conv51 = sext i16 %40 to i32, !dbg !269 - %sub52 = sub nsw i32 %conv51, 1, !dbg !274 - store i32 %sub52, ptr %j, align 4, !dbg !275 - br label %for.cond53, !dbg !276 + %38 = load ptr, ptr @rr_node, align 8, !dbg !266 + %39 = load i32, ptr %from_node, align 4, !dbg !269 + %idxprom49 = sext i32 %39 to i64, !dbg !266 + %arrayidx50 = getelementptr inbounds %struct.s_rr_node, ptr %38, i64 %idxprom49, !dbg !266 + %ylow = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx50, i32 0, i32 2, !dbg !270 + %40 = load i16, ptr %ylow, align 4, !dbg !270 + %conv51 = sext i16 %40 to i32, !dbg !266 + %sub52 = sub nsw i32 %conv51, 1, !dbg !271 + store i32 %sub52, ptr %j, align 4, !dbg !272 + br label %for.cond53, !dbg !273 for.cond53: ; preds = %for.inc60, %if.else48 - %41 = load i32, ptr %j, align 4, !dbg !277 - %42 = load ptr, ptr @rr_node, align 8, !dbg !279 - %43 = load i32, ptr %from_node, align 4, !dbg !280 - %idxprom54 = sext i32 %43 to i64, !dbg !279 - %arrayidx55 = getelementptr inbounds %struct.s_rr_node, ptr %42, i64 %idxprom54, !dbg !279 - %yhigh = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx55, i32 0, i32 3, !dbg !281 - %44 = load i16, ptr %yhigh, align 2, !dbg !281 - %conv56 = sext i16 %44 to i32, !dbg !279 - %cmp57 = icmp sle i32 %41, %conv56, !dbg !282 - br i1 %cmp57, label %for.body59, label %for.end62, !dbg !283 + %41 = load i32, ptr %j, align 4, !dbg !274 + %42 = load ptr, ptr @rr_node, align 8, !dbg !276 + %43 = load i32, ptr %from_node, align 4, !dbg !277 + %idxprom54 = sext i32 %43 to i64, !dbg !276 + %arrayidx55 = getelementptr inbounds %struct.s_rr_node, ptr %42, i64 %idxprom54, !dbg !276 + %yhigh = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx55, i32 0, i32 3, !dbg !278 + %44 = load i16, ptr %yhigh, align 2, !dbg !278 + %conv56 = sext i16 %44 to i32, !dbg !276 + %cmp57 = icmp sle i32 %41, %conv56, !dbg !279 + br i1 %cmp57, label %for.body59, label %for.end62, !dbg !280 for.body59: ; preds = %for.cond53 - br label %for.inc60, !dbg !284 + br label %for.inc60, !dbg !281 for.inc60: ; preds = %for.body59 - %45 = load i32, ptr %j, align 4, !dbg !286 - %inc61 = add nsw i32 %45, 1, !dbg !286 - store i32 %inc61, ptr %j, align 4, !dbg !286 - br label %for.cond53, !dbg !287, !llvm.loop !288 + %45 = load i32, ptr %j, align 4, !dbg !283 + %inc61 = add nsw i32 %45, 1, !dbg !283 + store i32 %inc61, ptr %j, align 4, !dbg !283 + br label %for.cond53, !dbg !284, !llvm.loop !285 for.end62: ; preds = %for.cond53 - %46 = load ptr, ptr @rr_node, align 8, !dbg !290 - %47 = load i32, ptr %from_node, align 4, !dbg !292 - %idxprom63 = sext i32 %47 to i64, !dbg !290 - %arrayidx64 = getelementptr inbounds %struct.s_rr_node, ptr %46, i64 %idxprom63, !dbg !290 - %ylow65 = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx64, i32 0, i32 2, !dbg !293 - %48 = load i16, ptr %ylow65, align 4, !dbg !293 - %conv66 = sext i16 %48 to i32, !dbg !290 - store i32 %conv66, ptr %j, align 4, !dbg !294 - br label %for.cond67, !dbg !295 + %46 = load ptr, ptr @rr_node, align 8, !dbg !287 + %47 = load i32, ptr %from_node, align 4, !dbg !289 + %idxprom63 = sext i32 %47 to i64, !dbg !287 + %arrayidx64 = getelementptr inbounds %struct.s_rr_node, ptr %46, i64 %idxprom63, !dbg !287 + %ylow65 = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx64, i32 0, i32 2, !dbg !290 + %48 = load i16, ptr %ylow65, align 4, !dbg !290 + %conv66 = sext i16 %48 to i32, !dbg !287 + store i32 %conv66, ptr %j, align 4, !dbg !291 + br label %for.cond67, !dbg !292 for.cond67: ; preds = %for.inc77, %for.end62 - %49 = load i32, ptr %j, align 4, !dbg !296 - %50 = load ptr, ptr @rr_node, align 8, !dbg !298 - %51 = load i32, ptr %from_node, align 4, !dbg !299 - %idxprom68 = sext i32 %51 to i64, !dbg !298 - %arrayidx69 = getelementptr inbounds %struct.s_rr_node, ptr %50, i64 %idxprom68, !dbg !298 - %yhigh70 = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx69, i32 0, i32 3, !dbg !300 - %52 = load i16, ptr %yhigh70, align 2, !dbg !300 - %conv71 = sext i16 %52 to i32, !dbg !298 - %cmp72 = icmp sle i32 %49, %conv71, !dbg !301 - br i1 %cmp72, label %for.body74, label %for.end79, !dbg !302 + %49 = load i32, ptr %j, align 4, !dbg !293 + %50 = load ptr, ptr @rr_node, align 8, !dbg !295 + %51 = load i32, ptr %from_node, align 4, !dbg !296 + %idxprom68 = sext i32 %51 to i64, !dbg !295 + %arrayidx69 = getelementptr inbounds %struct.s_rr_node, ptr %50, i64 %idxprom68, !dbg !295 + %yhigh70 = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx69, i32 0, i32 3, !dbg !297 + %52 = load i16, ptr %yhigh70, align 2, !dbg !297 + %conv71 = sext i16 %52 to i32, !dbg !295 + %cmp72 = icmp sle i32 %49, %conv71, !dbg !298 + br i1 %cmp72, label %for.body74, label %for.end79, !dbg !299 for.body74: ; preds = %for.cond67 - %53 = load ptr, ptr %cblock_counted, align 8, !dbg !303 - %54 = load i32, ptr %j, align 4, !dbg !304 - %idxprom75 = sext i32 %54 to i64, !dbg !303 - %arrayidx76 = getelementptr inbounds i32, ptr %53, i64 %idxprom75, !dbg !303 - store i32 0, ptr %arrayidx76, align 4, !dbg !305 - br label %for.inc77, !dbg !303 + %53 = load ptr, ptr %cblock_counted, align 8, !dbg !300 + %54 = load i32, ptr %j, align 4, !dbg !301 + %idxprom75 = sext i32 %54 to i64, !dbg !300 + %arrayidx76 = getelementptr inbounds i32, ptr %53, i64 %idxprom75, !dbg !300 + store i32 0, ptr %arrayidx76, align 4, !dbg !302 + br label %for.inc77, !dbg !300 for.inc77: ; preds = %for.body74 - %55 = load i32, ptr %j, align 4, !dbg !306 - %inc78 = add nsw i32 %55, 1, !dbg !306 - store i32 %inc78, ptr %j, align 4, !dbg !306 - br label %for.cond67, !dbg !307, !llvm.loop !308 + %55 = load i32, ptr %j, align 4, !dbg !303 + %inc78 = add nsw i32 %55, 1, !dbg !303 + store i32 %inc78, ptr %j, align 4, !dbg !303 + br label %for.cond67, !dbg !304, !llvm.loop !305 for.end79: ; preds = %for.cond67 br label %if.end80 if.end80: ; preds = %for.end79, %for.end47 - br label %sw.epilog81, !dbg !310 + br label %sw.epilog81, !dbg !307 sw.epilog81: ; preds = %if.end80, %for.body - br label %for.inc82, !dbg !311 + br label %for.inc82, !dbg !308 for.inc82: ; preds = %sw.epilog81 - %56 = load i32, ptr %from_node, align 4, !dbg !312 - %inc83 = add nsw i32 %56, 1, !dbg !312 - store i32 %inc83, ptr %from_node, align 4, !dbg !312 - br label %for.cond, !dbg !313, !llvm.loop !314 + %56 = load i32, ptr %from_node, align 4, !dbg !309 + %inc83 = add nsw i32 %56, 1, !dbg !309 + store i32 %inc83, ptr %from_node, align 4, !dbg !309 + br label %for.cond, !dbg !310, !llvm.loop !311 for.end84: ; preds = %for.cond - %57 = load ptr, ptr %cblock_counted, align 8, !dbg !316 - call void @free(ptr noundef %57) #5, !dbg !317 - %58 = load ptr, ptr %shared_buffer_trans, align 8, !dbg !318 - call void @free(ptr noundef %58) #5, !dbg !319 - %59 = load ptr, ptr %unsharable_switch_trans, align 8, !dbg !320 - call void @free(ptr noundef %59) #5, !dbg !321 - %60 = load ptr, ptr %sharable_switch_trans, align 8, !dbg !322 - call void @free(ptr noundef %60) #5, !dbg !323 - %61 = load ptr, ptr %num_inputs_to_cblock, align 8, !dbg !324 - call void @free(ptr noundef %61) #5, !dbg !325 - br label %return, !dbg !326 + %57 = load ptr, ptr %cblock_counted, align 8, !dbg !313 + call void @free(ptr noundef %57) #4, !dbg !314 + %58 = load ptr, ptr %shared_buffer_trans, align 8, !dbg !315 + call void @free(ptr noundef %58) #4, !dbg !316 + %59 = load ptr, ptr %unsharable_switch_trans, align 8, !dbg !317 + call void @free(ptr noundef %59) #4, !dbg !318 + %60 = load ptr, ptr %sharable_switch_trans, align 8, !dbg !319 + call void @free(ptr noundef %60) #4, !dbg !320 + %61 = load ptr, ptr %num_inputs_to_cblock, align 8, !dbg !321 + call void @free(ptr noundef %61) #4, !dbg !322 + br label %return, !dbg !323 return: ; preds = %for.end84, %sw.default - ret void, !dbg !326 + ret void, !dbg !323 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !327 { +define dso_local i32 @main() #0 !dbg !324 { entry: - call void @count_routing_transistors(i32 noundef 1, float noundef 1.000000e+00, float noundef 1.000000e+00), !dbg !330 - ret i32 0, !dbg !331 + call void @count_routing_transistors(i32 noundef 1, float noundef 1.000000e+00, float noundef 1.000000e+00), !dbg !327 + ret i32 0, !dbg !328 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!48, !49, !50, !51, !52, !53, !54} @@ -476,11 +472,11 @@ attributes #5 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "nx", scope: !2, file: !6, line: 11, type: !17, 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, enums: !4, retainedTypes: !15, globals: !20, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc53.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9e7b046431413a7316877d2befa8c4b6") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !15, globals: !20, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc53.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "9e7b046431413a7316877d2befa8c4b6") !4 = !{!5} !5 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !6, line: 10, baseType: !7, size: 32, elements: !8) -!6 = !DIFile(filename: "src/mem_leak/malloc53.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9e7b046431413a7316877d2befa8c4b6") +!6 = !DIFile(filename: "src/mem_leak/malloc53.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "9e7b046431413a7316877d2befa8c4b6") !7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) !8 = !{!9, !10, !11, !12, !13, !14} !9 = !DIEnumerator(name: "SOURCE", value: 0) @@ -529,9 +525,9 @@ attributes #5 = { nounwind } !52 = !{i32 7, !"PIE Level", i32 2} !53 = !{i32 7, !"uwtable", i32 2} !54 = !{i32 7, !"frame-pointer", i32 2} -!55 = !{!"clang version 16.0.0"} +!55 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !56 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !57, file: !57, line: 5, type: !58, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !61) -!57 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!57 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !58 = !DISubroutineType(types: !59) !59 = !{!60, !17} !60 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -678,131 +674,128 @@ attributes #5 = { nounwind } !201 = !DILocation(line: 73, column: 22, scope: !197) !202 = !DILocation(line: 75, column: 18, scope: !203) !203 = distinct !DILexicalBlock(scope: !197, file: !6, line: 75, column: 18) -!204 = !DILocation(line: 75, column: 18, scope: !197) -!205 = !DILocation(line: 77, column: 14, scope: !206) -!206 = distinct !DILexicalBlock(scope: !203, file: !6, line: 75, column: 29) -!207 = !DILocation(line: 78, column: 23, scope: !208) -!208 = distinct !DILexicalBlock(scope: !203, file: !6, line: 78, column: 23) -!209 = !DILocation(line: 78, column: 35, scope: !208) -!210 = !DILocation(line: 78, column: 33, scope: !208) -!211 = !DILocation(line: 78, column: 23, scope: !203) -!212 = !DILocation(line: 81, column: 14, scope: !213) -!213 = distinct !DILexicalBlock(scope: !208, file: !6, line: 78, column: 44) -!214 = !DILocation(line: 82, column: 14, scope: !197) -!215 = !DILocation(line: 86, column: 14, scope: !197) -!216 = !DILocation(line: 90, column: 14, scope: !197) -!217 = !DILocation(line: 95, column: 8, scope: !194) -!218 = !DILocation(line: 67, column: 42, scope: !189) -!219 = !DILocation(line: 67, column: 8, scope: !189) -!220 = distinct !{!220, !192, !221, !222} -!221 = !DILocation(line: 95, column: 8, scope: !185) -!222 = !{!"llvm.loop.mustprogress"} -!223 = !DILocation(line: 99, column: 12, scope: !224) -!224 = distinct !DILexicalBlock(scope: !186, file: !6, line: 99, column: 12) -!225 = !DILocation(line: 99, column: 25, scope: !224) -!226 = !DILocation(line: 99, column: 12, scope: !186) -!227 = !DILocation(line: 100, column: 18, scope: !228) -!228 = distinct !DILexicalBlock(scope: !229, file: !6, line: 100, column: 11) -!229 = distinct !DILexicalBlock(scope: !224, file: !6, line: 99, column: 35) -!230 = !DILocation(line: 100, column: 26, scope: !228) -!231 = !DILocation(line: 100, column: 37, scope: !228) -!232 = !DILocation(line: 100, column: 41, scope: !228) -!233 = !DILocation(line: 100, column: 17, scope: !228) -!234 = !DILocation(line: 100, column: 16, scope: !228) -!235 = !DILocation(line: 100, column: 44, scope: !236) -!236 = distinct !DILexicalBlock(scope: !228, file: !6, line: 100, column: 11) -!237 = !DILocation(line: 100, column: 47, scope: !236) -!238 = !DILocation(line: 100, column: 55, scope: !236) -!239 = !DILocation(line: 100, column: 66, scope: !236) -!240 = !DILocation(line: 100, column: 45, scope: !236) -!241 = !DILocation(line: 100, column: 11, scope: !228) -!242 = !DILocation(line: 102, column: 11, scope: !243) -!243 = distinct !DILexicalBlock(scope: !236, file: !6, line: 100, column: 77) -!244 = !DILocation(line: 100, column: 73, scope: !236) -!245 = !DILocation(line: 100, column: 11, scope: !236) -!246 = distinct !{!246, !241, !247, !222} -!247 = !DILocation(line: 102, column: 11, scope: !228) -!248 = !DILocation(line: 104, column: 18, scope: !249) -!249 = distinct !DILexicalBlock(scope: !229, file: !6, line: 104, column: 11) -!250 = !DILocation(line: 104, column: 26, scope: !249) -!251 = !DILocation(line: 104, column: 37, scope: !249) -!252 = !DILocation(line: 104, column: 17, scope: !249) -!253 = !DILocation(line: 104, column: 16, scope: !249) -!254 = !DILocation(line: 104, column: 42, scope: !255) -!255 = distinct !DILexicalBlock(scope: !249, file: !6, line: 104, column: 11) -!256 = !DILocation(line: 104, column: 45, scope: !255) -!257 = !DILocation(line: 104, column: 53, scope: !255) -!258 = !DILocation(line: 104, column: 64, scope: !255) -!259 = !DILocation(line: 104, column: 43, scope: !255) -!260 = !DILocation(line: 104, column: 11, scope: !249) -!261 = !DILocation(line: 105, column: 14, scope: !255) -!262 = !DILocation(line: 105, column: 29, scope: !255) -!263 = !DILocation(line: 105, column: 32, scope: !255) -!264 = !DILocation(line: 104, column: 71, scope: !255) -!265 = !DILocation(line: 104, column: 11, scope: !255) -!266 = distinct !{!266, !260, !267, !222} -!267 = !DILocation(line: 105, column: 34, scope: !249) -!268 = !DILocation(line: 107, column: 8, scope: !229) -!269 = !DILocation(line: 109, column: 18, scope: !270) -!270 = distinct !DILexicalBlock(scope: !271, file: !6, line: 109, column: 11) -!271 = distinct !DILexicalBlock(scope: !224, file: !6, line: 108, column: 13) -!272 = !DILocation(line: 109, column: 26, scope: !270) -!273 = !DILocation(line: 109, column: 37, scope: !270) -!274 = !DILocation(line: 109, column: 41, scope: !270) -!275 = !DILocation(line: 109, column: 17, scope: !270) -!276 = !DILocation(line: 109, column: 16, scope: !270) -!277 = !DILocation(line: 109, column: 44, scope: !278) -!278 = distinct !DILexicalBlock(scope: !270, file: !6, line: 109, column: 11) -!279 = !DILocation(line: 109, column: 47, scope: !278) -!280 = !DILocation(line: 109, column: 55, scope: !278) -!281 = !DILocation(line: 109, column: 66, scope: !278) -!282 = !DILocation(line: 109, column: 45, scope: !278) -!283 = !DILocation(line: 109, column: 11, scope: !270) -!284 = !DILocation(line: 111, column: 11, scope: !285) -!285 = distinct !DILexicalBlock(scope: !278, file: !6, line: 109, column: 77) -!286 = !DILocation(line: 109, column: 73, scope: !278) -!287 = !DILocation(line: 109, column: 11, scope: !278) -!288 = distinct !{!288, !283, !289, !222} -!289 = !DILocation(line: 111, column: 11, scope: !270) -!290 = !DILocation(line: 113, column: 18, scope: !291) -!291 = distinct !DILexicalBlock(scope: !271, file: !6, line: 113, column: 11) -!292 = !DILocation(line: 113, column: 26, scope: !291) -!293 = !DILocation(line: 113, column: 37, scope: !291) -!294 = !DILocation(line: 113, column: 17, scope: !291) -!295 = !DILocation(line: 113, column: 16, scope: !291) -!296 = !DILocation(line: 113, column: 42, scope: !297) -!297 = distinct !DILexicalBlock(scope: !291, file: !6, line: 113, column: 11) -!298 = !DILocation(line: 113, column: 45, scope: !297) -!299 = !DILocation(line: 113, column: 53, scope: !297) -!300 = !DILocation(line: 113, column: 64, scope: !297) -!301 = !DILocation(line: 113, column: 43, scope: !297) -!302 = !DILocation(line: 113, column: 11, scope: !291) -!303 = !DILocation(line: 114, column: 14, scope: !297) -!304 = !DILocation(line: 114, column: 29, scope: !297) -!305 = !DILocation(line: 114, column: 32, scope: !297) -!306 = !DILocation(line: 113, column: 71, scope: !297) -!307 = !DILocation(line: 113, column: 11, scope: !297) -!308 = distinct !{!308, !302, !309, !222} -!309 = !DILocation(line: 114, column: 34, scope: !291) -!310 = !DILocation(line: 117, column: 8, scope: !186) -!311 = !DILocation(line: 124, column: 2, scope: !182) -!312 = !DILocation(line: 60, column: 51, scope: !177) -!313 = !DILocation(line: 60, column: 2, scope: !177) -!314 = distinct !{!314, !180, !315, !222} -!315 = !DILocation(line: 124, column: 2, scope: !174) -!316 = !DILocation(line: 126, column: 8, scope: !103) -!317 = !DILocation(line: 126, column: 2, scope: !103) -!318 = !DILocation(line: 127, column: 8, scope: !103) -!319 = !DILocation(line: 127, column: 2, scope: !103) -!320 = !DILocation(line: 128, column: 8, scope: !103) -!321 = !DILocation(line: 128, column: 2, scope: !103) -!322 = !DILocation(line: 129, column: 8, scope: !103) -!323 = !DILocation(line: 129, column: 2, scope: !103) -!324 = !DILocation(line: 132, column: 8, scope: !103) -!325 = !DILocation(line: 132, column: 2, scope: !103) -!326 = !DILocation(line: 134, column: 1, scope: !103) -!327 = distinct !DISubprogram(name: "main", scope: !6, file: !6, line: 136, type: !328, scopeLine: 136, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !61) -!328 = !DISubroutineType(types: !329) -!329 = !{!17} -!330 = !DILocation(line: 138, column: 2, scope: !327) -!331 = !DILocation(line: 139, column: 1, scope: !327) +!204 = !DILocation(line: 77, column: 14, scope: !205) +!205 = distinct !DILexicalBlock(scope: !203, file: !6, line: 75, column: 29) +!206 = !DILocation(line: 78, column: 23, scope: !207) +!207 = distinct !DILexicalBlock(scope: !203, file: !6, line: 78, column: 23) +!208 = !DILocation(line: 78, column: 35, scope: !207) +!209 = !DILocation(line: 78, column: 33, scope: !207) +!210 = !DILocation(line: 81, column: 14, scope: !211) +!211 = distinct !DILexicalBlock(scope: !207, file: !6, line: 78, column: 44) +!212 = !DILocation(line: 82, column: 14, scope: !197) +!213 = !DILocation(line: 86, column: 14, scope: !197) +!214 = !DILocation(line: 90, column: 14, scope: !197) +!215 = !DILocation(line: 95, column: 8, scope: !194) +!216 = !DILocation(line: 67, column: 42, scope: !189) +!217 = !DILocation(line: 67, column: 8, scope: !189) +!218 = distinct !{!218, !192, !219, !220} +!219 = !DILocation(line: 95, column: 8, scope: !185) +!220 = !{!"llvm.loop.mustprogress"} +!221 = !DILocation(line: 99, column: 12, scope: !222) +!222 = distinct !DILexicalBlock(scope: !186, file: !6, line: 99, column: 12) +!223 = !DILocation(line: 99, column: 25, scope: !222) +!224 = !DILocation(line: 100, column: 18, scope: !225) +!225 = distinct !DILexicalBlock(scope: !226, file: !6, line: 100, column: 11) +!226 = distinct !DILexicalBlock(scope: !222, file: !6, line: 99, column: 35) +!227 = !DILocation(line: 100, column: 26, scope: !225) +!228 = !DILocation(line: 100, column: 37, scope: !225) +!229 = !DILocation(line: 100, column: 41, scope: !225) +!230 = !DILocation(line: 100, column: 17, scope: !225) +!231 = !DILocation(line: 100, column: 16, scope: !225) +!232 = !DILocation(line: 100, column: 44, scope: !233) +!233 = distinct !DILexicalBlock(scope: !225, file: !6, line: 100, column: 11) +!234 = !DILocation(line: 100, column: 47, scope: !233) +!235 = !DILocation(line: 100, column: 55, scope: !233) +!236 = !DILocation(line: 100, column: 66, scope: !233) +!237 = !DILocation(line: 100, column: 45, scope: !233) +!238 = !DILocation(line: 100, column: 11, scope: !225) +!239 = !DILocation(line: 102, column: 11, scope: !240) +!240 = distinct !DILexicalBlock(scope: !233, file: !6, line: 100, column: 77) +!241 = !DILocation(line: 100, column: 73, scope: !233) +!242 = !DILocation(line: 100, column: 11, scope: !233) +!243 = distinct !{!243, !238, !244, !220} +!244 = !DILocation(line: 102, column: 11, scope: !225) +!245 = !DILocation(line: 104, column: 18, scope: !246) +!246 = distinct !DILexicalBlock(scope: !226, file: !6, line: 104, column: 11) +!247 = !DILocation(line: 104, column: 26, scope: !246) +!248 = !DILocation(line: 104, column: 37, scope: !246) +!249 = !DILocation(line: 104, column: 17, scope: !246) +!250 = !DILocation(line: 104, column: 16, scope: !246) +!251 = !DILocation(line: 104, column: 42, scope: !252) +!252 = distinct !DILexicalBlock(scope: !246, file: !6, line: 104, column: 11) +!253 = !DILocation(line: 104, column: 45, scope: !252) +!254 = !DILocation(line: 104, column: 53, scope: !252) +!255 = !DILocation(line: 104, column: 64, scope: !252) +!256 = !DILocation(line: 104, column: 43, scope: !252) +!257 = !DILocation(line: 104, column: 11, scope: !246) +!258 = !DILocation(line: 105, column: 14, scope: !252) +!259 = !DILocation(line: 105, column: 29, scope: !252) +!260 = !DILocation(line: 105, column: 32, scope: !252) +!261 = !DILocation(line: 104, column: 71, scope: !252) +!262 = !DILocation(line: 104, column: 11, scope: !252) +!263 = distinct !{!263, !257, !264, !220} +!264 = !DILocation(line: 105, column: 34, scope: !246) +!265 = !DILocation(line: 107, column: 8, scope: !226) +!266 = !DILocation(line: 109, column: 18, scope: !267) +!267 = distinct !DILexicalBlock(scope: !268, file: !6, line: 109, column: 11) +!268 = distinct !DILexicalBlock(scope: !222, file: !6, line: 108, column: 13) +!269 = !DILocation(line: 109, column: 26, scope: !267) +!270 = !DILocation(line: 109, column: 37, scope: !267) +!271 = !DILocation(line: 109, column: 41, scope: !267) +!272 = !DILocation(line: 109, column: 17, scope: !267) +!273 = !DILocation(line: 109, column: 16, scope: !267) +!274 = !DILocation(line: 109, column: 44, scope: !275) +!275 = distinct !DILexicalBlock(scope: !267, file: !6, line: 109, column: 11) +!276 = !DILocation(line: 109, column: 47, scope: !275) +!277 = !DILocation(line: 109, column: 55, scope: !275) +!278 = !DILocation(line: 109, column: 66, scope: !275) +!279 = !DILocation(line: 109, column: 45, scope: !275) +!280 = !DILocation(line: 109, column: 11, scope: !267) +!281 = !DILocation(line: 111, column: 11, scope: !282) +!282 = distinct !DILexicalBlock(scope: !275, file: !6, line: 109, column: 77) +!283 = !DILocation(line: 109, column: 73, scope: !275) +!284 = !DILocation(line: 109, column: 11, scope: !275) +!285 = distinct !{!285, !280, !286, !220} +!286 = !DILocation(line: 111, column: 11, scope: !267) +!287 = !DILocation(line: 113, column: 18, scope: !288) +!288 = distinct !DILexicalBlock(scope: !268, file: !6, line: 113, column: 11) +!289 = !DILocation(line: 113, column: 26, scope: !288) +!290 = !DILocation(line: 113, column: 37, scope: !288) +!291 = !DILocation(line: 113, column: 17, scope: !288) +!292 = !DILocation(line: 113, column: 16, scope: !288) +!293 = !DILocation(line: 113, column: 42, scope: !294) +!294 = distinct !DILexicalBlock(scope: !288, file: !6, line: 113, column: 11) +!295 = !DILocation(line: 113, column: 45, scope: !294) +!296 = !DILocation(line: 113, column: 53, scope: !294) +!297 = !DILocation(line: 113, column: 64, scope: !294) +!298 = !DILocation(line: 113, column: 43, scope: !294) +!299 = !DILocation(line: 113, column: 11, scope: !288) +!300 = !DILocation(line: 114, column: 14, scope: !294) +!301 = !DILocation(line: 114, column: 29, scope: !294) +!302 = !DILocation(line: 114, column: 32, scope: !294) +!303 = !DILocation(line: 113, column: 71, scope: !294) +!304 = !DILocation(line: 113, column: 11, scope: !294) +!305 = distinct !{!305, !299, !306, !220} +!306 = !DILocation(line: 114, column: 34, scope: !288) +!307 = !DILocation(line: 117, column: 8, scope: !186) +!308 = !DILocation(line: 124, column: 2, scope: !182) +!309 = !DILocation(line: 60, column: 51, scope: !177) +!310 = !DILocation(line: 60, column: 2, scope: !177) +!311 = distinct !{!311, !180, !312, !220} +!312 = !DILocation(line: 124, column: 2, scope: !174) +!313 = !DILocation(line: 126, column: 8, scope: !103) +!314 = !DILocation(line: 126, column: 2, scope: !103) +!315 = !DILocation(line: 127, column: 8, scope: !103) +!316 = !DILocation(line: 127, column: 2, scope: !103) +!317 = !DILocation(line: 128, column: 8, scope: !103) +!318 = !DILocation(line: 128, column: 2, scope: !103) +!319 = !DILocation(line: 129, column: 8, scope: !103) +!320 = !DILocation(line: 129, column: 2, scope: !103) +!321 = !DILocation(line: 132, column: 8, scope: !103) +!322 = !DILocation(line: 132, column: 2, scope: !103) +!323 = !DILocation(line: 134, column: 1, scope: !103) +!324 = distinct !DISubprogram(name: "main", scope: !6, file: !6, line: 136, type: !325, scopeLine: 136, spFlags: DISPFlagDefinition, unit: !2) +!325 = !DISubroutineType(types: !326) +!326 = !{!17} +!327 = !DILocation(line: 138, column: 2, scope: !324) +!328 = !DILocation(line: 139, column: 1, scope: !324) diff --git a/test_cases_bc/mem_leak/malloc54.c.bc b/test_cases_bc/mem_leak/malloc54.c.bc index 635af749d..5abd1e884 100644 --- a/test_cases_bc/mem_leak/malloc54.c.bc +++ b/test_cases_bc/mem_leak/malloc54.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc54.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc54.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc54.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc54.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,10 +96,10 @@ entry: %matrix.addr = alloca ptr, align 8 %i = alloca i32, align 4 store ptr %matrix, ptr %matrix.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %matrix.addr, metadata !63, metadata !DIExpression()), !dbg !64 - %call = call noalias ptr @malloc(i64 noundef 10) #4, !dbg !65 + #dbg_declare(ptr %matrix.addr, !63, !DIExpression(), !64) + %call = call noalias ptr @malloc(i64 noundef 10) #3, !dbg !65 store ptr %call, ptr %matrix.addr, align 8, !dbg !66 - call void @llvm.dbg.declare(metadata ptr %i, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %i, !67, !DIExpression(), !68) store i32 0, ptr %i, align 4, !dbg !69 br label %for.cond, !dbg !71 @@ -122,36 +119,35 @@ for.inc: ; preds = %for.body for.end: ; preds = %for.cond %2 = load ptr, ptr %matrix.addr, align 8, !dbg !83 - call void @free(ptr noundef %2) #5, !dbg !84 + call void @free(ptr noundef %2) #4, !dbg !84 ret void, !dbg !85 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !86 { entry: %dir_list = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %dir_list, metadata !89, metadata !DIExpression()), !dbg !93 + #dbg_declare(ptr %dir_list, !89, !DIExpression(), !93) %0 = load ptr, ptr %dir_list, align 8, !dbg !94 call void @free_matrix(ptr noundef %0), !dbg !95 ret i32 0, !dbg !96 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc54.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7467b5c13550195668afff38221516ab") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc54.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7467b5c13550195668afff38221516ab") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -159,9 +155,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -209,7 +205,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "free_matrix", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc54.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7467b5c13550195668afff38221516ab") +!59 = !DIFile(filename: "src/mem_leak/malloc54.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7467b5c13550195668afff38221516ab") !60 = !DISubroutineType(types: !61) !61 = !{null, !62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) diff --git a/test_cases_bc/mem_leak/malloc55.c.bc b/test_cases_bc/mem_leak/malloc55.c.bc index dbc028907..1f0bef830 100644 --- a/test_cases_bc/mem_leak/malloc55.c.bc +++ b/test_cases_bc/mem_leak/malloc55.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc55.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc55.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc55.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc55.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -99,10 +96,10 @@ entry: %matrix.addr = alloca ptr, align 8 %i = alloca i32, align 4 store ptr %matrix, ptr %matrix.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %matrix.addr, metadata !63, metadata !DIExpression()), !dbg !64 - %call = call noalias ptr @malloc(i64 noundef 10) #4, !dbg !65 + #dbg_declare(ptr %matrix.addr, !63, !DIExpression(), !64) + %call = call noalias ptr @malloc(i64 noundef 10) #3, !dbg !65 store ptr %call, ptr %matrix.addr, align 8, !dbg !66 - call void @llvm.dbg.declare(metadata ptr %i, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %i, !67, !DIExpression(), !68) br label %do.body, !dbg !69 do.body: ; preds = %do.cond, %entry @@ -115,36 +112,35 @@ do.cond: ; preds = %do.body do.end: ; preds = %do.cond %1 = load ptr, ptr %matrix.addr, align 8, !dbg !77 - call void @free(ptr noundef %1) #5, !dbg !78 + call void @free(ptr noundef %1) #4, !dbg !78 ret void, !dbg !79 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !80 { entry: %dir_list = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %dir_list, metadata !83, metadata !DIExpression()), !dbg !87 + #dbg_declare(ptr %dir_list, !83, !DIExpression(), !87) %0 = load ptr, ptr %dir_list, align 8, !dbg !88 call void @free_matrix(ptr noundef %0), !dbg !89 ret i32 0, !dbg !90 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc55.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "130d558ce52f4dca5ae91039a8992eef") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc55.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "130d558ce52f4dca5ae91039a8992eef") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -152,9 +148,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -202,7 +198,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "free_matrix", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc55.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "130d558ce52f4dca5ae91039a8992eef") +!59 = !DIFile(filename: "src/mem_leak/malloc55.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "130d558ce52f4dca5ae91039a8992eef") !60 = !DISubroutineType(types: !61) !61 = !{null, !62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) diff --git a/test_cases_bc/mem_leak/malloc56.c.bc b/test_cases_bc/mem_leak/malloc56.c.bc index 39b9d06fc..6f49a8d8e 100644 --- a/test_cases_bc/mem_leak/malloc56.c.bc +++ b/test_cases_bc/mem_leak/malloc56.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc56.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc56.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc56.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc56.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -98,7 +95,7 @@ define dso_local i32 @func() #0 !dbg !58 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !62, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %p, !62, !DIExpression(), !64) %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !65 store ptr %call, ptr %p, align 8, !dbg !64 %0 = load ptr, ptr %p, align 8, !dbg !66 @@ -112,41 +109,40 @@ if.then: ; preds = %entry if.end: ; preds = %entry %1 = load ptr, ptr %p, align 8, !dbg !70 %tobool1 = icmp ne ptr %1, null, !dbg !70 - br i1 %tobool1, label %if.then2, label %if.end3, !dbg !72 + br i1 %tobool1, label %if.then2, label %if.end3, !dbg !70 if.then2: ; preds = %if.end - %2 = load ptr, ptr %p, align 8, !dbg !73 - call void @free(ptr noundef %2) #5, !dbg !74 - br label %if.end3, !dbg !74 + %2 = load ptr, ptr %p, align 8, !dbg !72 + call void @free(ptr noundef %2) #4, !dbg !73 + br label %if.end3, !dbg !73 if.end3: ; preds = %if.then2, %if.end, %if.then - %3 = load i32, ptr %retval, align 4, !dbg !75 - ret i32 %3, !dbg !75 + %3 = load i32, ptr %retval, align 4, !dbg !74 + ret i32 %3, !dbg !74 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !76 { +define dso_local i32 @main() #0 !dbg !75 { entry: - %call = call i32 @func(), !dbg !77 - ret i32 0, !dbg !78 + %call = call i32 @func(), !dbg !76 + ret i32 0, !dbg !77 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc56.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "08f758d5e861c27ff9947df184616bd5") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc56.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "08f758d5e861c27ff9947df184616bd5") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -154,9 +150,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -204,7 +200,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "func", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc56.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "08f758d5e861c27ff9947df184616bd5") +!59 = !DIFile(filename: "src/mem_leak/malloc56.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "08f758d5e861c27ff9947df184616bd5") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "p", scope: !58, file: !59, line: 13, type: !63) @@ -213,14 +209,13 @@ attributes #5 = { nounwind } !65 = !DILocation(line: 13, column: 11, scope: !58) !66 = !DILocation(line: 15, column: 6, scope: !67) !67 = distinct !DILexicalBlock(scope: !58, file: !59, line: 15, column: 5) -!68 = !DILocation(line: 15, column: 5, scope: !58) +!68 = !DILocation(line: 15, column: 5, scope: !67) !69 = !DILocation(line: 16, column: 3, scope: !67) !70 = !DILocation(line: 18, column: 8, scope: !71) !71 = distinct !DILexicalBlock(scope: !58, file: !59, line: 18, column: 8) -!72 = !DILocation(line: 18, column: 8, scope: !58) -!73 = !DILocation(line: 19, column: 7, scope: !71) -!74 = !DILocation(line: 19, column: 2, scope: !71) -!75 = !DILocation(line: 21, column: 1, scope: !58) -!76 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 24, type: !60, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!77 = !DILocation(line: 26, column: 2, scope: !76) -!78 = !DILocation(line: 27, column: 1, scope: !76) +!72 = !DILocation(line: 19, column: 7, scope: !71) +!73 = !DILocation(line: 19, column: 2, scope: !71) +!74 = !DILocation(line: 21, column: 1, scope: !58) +!75 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 24, type: !60, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !0) +!76 = !DILocation(line: 26, column: 2, scope: !75) +!77 = !DILocation(line: 27, column: 1, scope: !75) diff --git a/test_cases_bc/mem_leak/malloc57.c.bc b/test_cases_bc/mem_leak/malloc57.c.bc index d30906425..5204fc129 100644 --- a/test_cases_bc/mem_leak/malloc57.c.bc +++ b/test_cases_bc/mem_leak/malloc57.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc57.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc57.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc57.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc57.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !12 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !18, metadata !DIExpression()), !dbg !19 + #dbg_declare(ptr %n.addr, !18, !DIExpression(), !19) %0 = load i32, ptr %n.addr, align 4, !dbg !20 %conv = sext i32 %0 to i64, !dbg !20 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !21 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !21 ret ptr %call, !dbg !22 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !23 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !24, metadata !DIExpression()), !dbg !25 + #dbg_declare(ptr %n.addr, !24, !DIExpression(), !25) %0 = load i32, ptr %n.addr, align 4, !dbg !26 %conv = sext i32 %0 to i64, !dbg !26 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !27 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !27 ret ptr %call, !dbg !28 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !29 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !30, metadata !DIExpression()), !dbg !31 + #dbg_declare(ptr %n.addr, !30, !DIExpression(), !31) %0 = load i32, ptr %n.addr, align 4, !dbg !32 %conv = sext i32 %0 to i64, !dbg !32 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !33 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !33 ret ptr %call, !dbg !34 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !35 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !36, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %n.addr, !36, !DIExpression(), !37) %0 = load i32, ptr %n.addr, align 4, !dbg !38 %conv = sext i32 %0 to i64, !dbg !38 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !39 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !39 ret ptr %call, !dbg !40 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !41 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !42, metadata !DIExpression()), !dbg !43 + #dbg_declare(ptr %n.addr, !42, !DIExpression(), !43) %0 = load i32, ptr %n.addr, align 4, !dbg !44 %conv = sext i32 %0 to i64, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !45 ret ptr %call, !dbg !46 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !47 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !48, metadata !DIExpression()), !dbg !49 + #dbg_declare(ptr %n.addr, !48, !DIExpression(), !49) %0 = load i32, ptr %n.addr, align 4, !dbg !50 %conv = sext i32 %0 to i64, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !51 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !51 ret ptr %call, !dbg !52 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !53 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !54, metadata !DIExpression()), !dbg !55 + #dbg_declare(ptr %n.addr, !54, !DIExpression(), !55) %0 = load i32, ptr %n.addr, align 4, !dbg !56 %conv = sext i32 %0 to i64, !dbg !56 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !57 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !57 ret ptr %call, !dbg !58 } @@ -100,63 +97,62 @@ entry: %newfile = alloca ptr, align 8 %i = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %newfile, metadata !63, metadata !DIExpression()), !dbg !65 + #dbg_declare(ptr %newfile, !63, !DIExpression(), !65) %call = call ptr @SAFEMALLOC(i32 noundef 190), !dbg !66 store ptr %call, ptr %newfile, align 8, !dbg !65 - call void @llvm.dbg.declare(metadata ptr %i, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %i, !67, !DIExpression(), !68) store i32 0, ptr %i, align 4, !dbg !68 %0 = load ptr, ptr %newfile, align 8, !dbg !69 %cmp = icmp eq ptr %0, null, !dbg !71 - br i1 %cmp, label %if.then, label %if.end, !dbg !72 + br i1 %cmp, label %if.then, label %if.end, !dbg !71 if.then: ; preds = %entry - store i32 0, ptr %retval, align 4, !dbg !73 - br label %return, !dbg !73 + store i32 0, ptr %retval, align 4, !dbg !72 + br label %return, !dbg !72 if.end: ; preds = %entry - br label %for.cond, !dbg !75 + br label %for.cond, !dbg !74 for.cond: ; preds = %for.inc, %if.end - %1 = load i32, ptr %i, align 4, !dbg !76 - %cmp1 = icmp slt i32 %1, 10, !dbg !79 - br i1 %cmp1, label %for.body, label %for.end, !dbg !80 + %1 = load i32, ptr %i, align 4, !dbg !75 + %cmp1 = icmp slt i32 %1, 10, !dbg !78 + br i1 %cmp1, label %for.body, label %for.end, !dbg !79 for.body: ; preds = %for.cond - br label %for.inc, !dbg !81 + br label %for.inc, !dbg !80 for.inc: ; preds = %for.body - %2 = load i32, ptr %i, align 4, !dbg !83 - %inc = add nsw i32 %2, 1, !dbg !83 - store i32 %inc, ptr %i, align 4, !dbg !83 - br label %for.cond, !dbg !84, !llvm.loop !85 + %2 = load i32, ptr %i, align 4, !dbg !82 + %inc = add nsw i32 %2, 1, !dbg !82 + store i32 %inc, ptr %i, align 4, !dbg !82 + br label %for.cond, !dbg !83, !llvm.loop !84 for.end: ; preds = %for.cond - %3 = load ptr, ptr %newfile, align 8, !dbg !88 - call void @free(ptr noundef %3) #5, !dbg !89 - store i32 0, ptr %retval, align 4, !dbg !90 - br label %return, !dbg !90 + %3 = load ptr, ptr %newfile, align 8, !dbg !87 + call void @free(ptr noundef %3) #4, !dbg !88 + store i32 0, ptr %retval, align 4, !dbg !89 + br label %return, !dbg !89 return: ; preds = %for.end, %if.then - %4 = load i32, ptr %retval, align 4, !dbg !91 - ret i32 %4, !dbg !91 + %4 = load i32, ptr %retval, align 4, !dbg !90 + ret i32 %4, !dbg !90 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !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/mem_leak/malloc57.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "862bd465fd18a7513be19510ffcafdaf") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc57.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "862bd465fd18a7513be19510ffcafdaf") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) !4 = !{i32 7, !"Dwarf Version", i32 5} @@ -166,9 +162,9 @@ attributes #5 = { nounwind } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !12 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !13, file: !13, line: 5, type: !14, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!13 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !14 = !DISubroutineType(types: !15) !15 = !{!3, !16} !16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -215,7 +211,7 @@ attributes #5 = { nounwind } !57 = !DILocation(line: 30, column: 10, scope: !53) !58 = !DILocation(line: 30, column: 3, scope: !53) !59 = distinct !DISubprogram(name: "main", scope: !60, file: !60, line: 9, type: !61, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!60 = !DIFile(filename: "src/mem_leak/malloc57.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "862bd465fd18a7513be19510ffcafdaf") +!60 = !DIFile(filename: "src/mem_leak/malloc57.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "862bd465fd18a7513be19510ffcafdaf") !61 = !DISubroutineType(types: !62) !62 = !{!16} !63 = !DILocalVariable(name: "newfile", scope: !59, file: !60, line: 10, type: !64) @@ -227,23 +223,22 @@ attributes #5 = { nounwind } !69 = !DILocation(line: 12, column: 8, scope: !70) !70 = distinct !DILexicalBlock(scope: !59, file: !60, line: 12, column: 8) !71 = !DILocation(line: 12, column: 15, scope: !70) -!72 = !DILocation(line: 12, column: 8, scope: !59) -!73 = !DILocation(line: 13, column: 9, scope: !74) -!74 = distinct !DILexicalBlock(scope: !70, file: !60, line: 12, column: 22) -!75 = !DILocation(line: 15, column: 5, scope: !59) -!76 = !DILocation(line: 15, column: 12, scope: !77) -!77 = distinct !DILexicalBlock(scope: !78, file: !60, line: 15, column: 5) -!78 = distinct !DILexicalBlock(scope: !59, file: !60, line: 15, column: 5) -!79 = !DILocation(line: 15, column: 14, scope: !77) -!80 = !DILocation(line: 15, column: 5, scope: !78) -!81 = !DILocation(line: 17, column: 5, scope: !82) -!82 = distinct !DILexicalBlock(scope: !77, file: !60, line: 16, column: 5) -!83 = !DILocation(line: 15, column: 21, scope: !77) -!84 = !DILocation(line: 15, column: 5, scope: !77) -!85 = distinct !{!85, !80, !86, !87} -!86 = !DILocation(line: 17, column: 5, scope: !78) -!87 = !{!"llvm.loop.mustprogress"} -!88 = !DILocation(line: 19, column: 10, scope: !59) -!89 = !DILocation(line: 19, column: 5, scope: !59) -!90 = !DILocation(line: 20, column: 5, scope: !59) -!91 = !DILocation(line: 21, column: 1, scope: !59) +!72 = !DILocation(line: 13, column: 9, scope: !73) +!73 = distinct !DILexicalBlock(scope: !70, file: !60, line: 12, column: 22) +!74 = !DILocation(line: 15, column: 5, scope: !59) +!75 = !DILocation(line: 15, column: 12, scope: !76) +!76 = distinct !DILexicalBlock(scope: !77, file: !60, line: 15, column: 5) +!77 = distinct !DILexicalBlock(scope: !59, file: !60, line: 15, column: 5) +!78 = !DILocation(line: 15, column: 14, scope: !76) +!79 = !DILocation(line: 15, column: 5, scope: !77) +!80 = !DILocation(line: 17, column: 5, scope: !81) +!81 = distinct !DILexicalBlock(scope: !76, file: !60, line: 16, column: 5) +!82 = !DILocation(line: 15, column: 21, scope: !76) +!83 = !DILocation(line: 15, column: 5, scope: !76) +!84 = distinct !{!84, !79, !85, !86} +!85 = !DILocation(line: 17, column: 5, scope: !77) +!86 = !{!"llvm.loop.mustprogress"} +!87 = !DILocation(line: 19, column: 10, scope: !59) +!88 = !DILocation(line: 19, column: 5, scope: !59) +!89 = !DILocation(line: 20, column: 5, scope: !59) +!90 = !DILocation(line: 21, column: 1, scope: !59) diff --git a/test_cases_bc/mem_leak/malloc58.c.bc b/test_cases_bc/mem_leak/malloc58.c.bc index 432273bb6..7b7d822f8 100644 --- a/test_cases_bc/mem_leak/malloc58.c.bc +++ b/test_cases_bc/mem_leak/malloc58.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc58.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc58.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc58.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc58.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @cimage = dso_local global ptr null, align 8, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !20 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !36 ret ptr %call, !dbg !37 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !42 ret ptr %call, !dbg !43 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !48 ret ptr %call, !dbg !49 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !54 ret ptr %call, !dbg !55 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !60 ret ptr %call, !dbg !61 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !66 ret ptr %call, !dbg !67 } @@ -103,9 +100,9 @@ entry: %j = alloca i32, align 4 %superbuffer = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %j, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %superbuffer, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %i, !71, !DIExpression(), !72) + #dbg_declare(ptr %j, !73, !DIExpression(), !74) + #dbg_declare(ptr %superbuffer, !75, !DIExpression(), !76) %call = call ptr @NFRMALLOC(i32 noundef 100), !dbg !77 store ptr %call, ptr %superbuffer, align 8, !dbg !76 %call1 = call ptr @SAFEMALLOC(i32 noundef 80), !dbg !78 @@ -190,10 +187,9 @@ for.end20: ; preds = %for.cond3 ret i32 0, !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 = { nounwind allocsize(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"="+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.dbg.cu = !{!2} !llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} @@ -201,8 +197,8 @@ attributes #3 = { nounwind allocsize(0) } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "cimage", scope: !2, file: !11, line: 10, type: !7, 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, retainedTypes: !4, globals: !10, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc58.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "00d0398756affb4a7943fcef50211ac2") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !10, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc58.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "00d0398756affb4a7943fcef50211ac2") !4 = !{!5, !7, !8} !5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64) !6 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) @@ -210,7 +206,7 @@ attributes #3 = { nounwind allocsize(0) } !8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64) !9 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) !10 = !{!0} -!11 = !DIFile(filename: "src/mem_leak/malloc58.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "00d0398756affb4a7943fcef50211ac2") +!11 = !DIFile(filename: "src/mem_leak/malloc58.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "00d0398756affb4a7943fcef50211ac2") !12 = !{i32 7, !"Dwarf Version", i32 5} !13 = !{i32 2, !"Debug Info Version", i32 3} !14 = !{i32 1, !"wchar_size", i32 4} @@ -218,9 +214,9 @@ attributes #3 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !20 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !21, file: !21, line: 5, type: !22, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) -!21 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!21 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !22 = !DISubroutineType(types: !23) !23 = !{!24, !25} !24 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc59.c.bc b/test_cases_bc/mem_leak/malloc59.c.bc index 58ae74fa7..a39a08e55 100644 --- a/test_cases_bc/mem_leak/malloc59.c.bc +++ b/test_cases_bc/mem_leak/malloc59.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc59.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc59.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc59.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc59.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 ret ptr %call, !dbg !57 } @@ -100,8 +97,8 @@ entry: %i = alloca i32, align 4 %a = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !62, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %a, metadata !64, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %i, !62, !DIExpression(), !63) + #dbg_declare(ptr %a, !64, !DIExpression(), !66) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !67 store ptr %call, ptr %a, align 8, !dbg !66 store i32 0, ptr %i, align 4, !dbg !68 @@ -115,49 +112,48 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %1 = load i32, ptr %i, align 4, !dbg !75 %tobool = icmp ne i32 %1, 0, !dbg !75 - br i1 %tobool, label %if.then, label %if.end, !dbg !77 + br i1 %tobool, label %if.then, label %if.end, !dbg !75 if.then: ; preds = %for.body - call void @exit(i32 noundef 0) #6, !dbg !78 - unreachable, !dbg !78 + call void @exit(i32 noundef 0) #5, !dbg !77 + unreachable, !dbg !77 if.end: ; preds = %for.body br label %for.inc, !dbg !75 for.inc: ; preds = %if.end - %2 = load i32, ptr %i, align 4, !dbg !80 - %inc = add nsw i32 %2, 1, !dbg !80 - store i32 %inc, ptr %i, align 4, !dbg !80 - br label %for.cond, !dbg !81, !llvm.loop !82 + %2 = load i32, ptr %i, align 4, !dbg !79 + %inc = add nsw i32 %2, 1, !dbg !79 + store i32 %inc, ptr %i, align 4, !dbg !79 + br label %for.cond, !dbg !80, !llvm.loop !81 for.end: ; preds = %for.cond - %3 = load ptr, ptr %a, align 8, !dbg !85 - call void @free(ptr noundef %3) #7, !dbg !86 - %4 = load i32, ptr %retval, align 4, !dbg !87 - ret i32 %4, !dbg !87 + %3 = load ptr, ptr %a, align 8, !dbg !84 + call void @free(ptr noundef %3) #6, !dbg !85 + %4 = load i32, ptr %retval, align 4, !dbg !86 + ret i32 %4, !dbg !86 } ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 +declare void @exit(i32 noundef) #2 ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +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 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 allocsize(0) } -attributes #6 = { noreturn nounwind } -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 = { 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 allocsize(0) } +attributes #5 = { noreturn nounwind } +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/mem_leak/malloc59.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b3835eb913fa0ff911005ae435121894") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc59.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "b3835eb913fa0ff911005ae435121894") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -165,9 +161,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -215,7 +211,7 @@ attributes #7 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc59.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b3835eb913fa0ff911005ae435121894") +!59 = !DIFile(filename: "src/mem_leak/malloc59.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "b3835eb913fa0ff911005ae435121894") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "i", scope: !58, file: !59, line: 11, type: !15) @@ -233,14 +229,13 @@ attributes #7 = { nounwind } !74 = !DILocation(line: 13, column: 2, scope: !69) !75 = !DILocation(line: 14, column: 5, scope: !76) !76 = distinct !DILexicalBlock(scope: !72, file: !59, line: 14, column: 5) -!77 = !DILocation(line: 14, column: 5, scope: !72) -!78 = !DILocation(line: 15, column: 5, scope: !79) -!79 = distinct !DILexicalBlock(scope: !76, file: !59, line: 14, column: 7) -!80 = !DILocation(line: 13, column: 22, scope: !72) -!81 = !DILocation(line: 13, column: 2, scope: !72) -!82 = distinct !{!82, !74, !83, !84} -!83 = !DILocation(line: 16, column: 2, scope: !69) -!84 = !{!"llvm.loop.mustprogress"} -!85 = !DILocation(line: 18, column: 7, scope: !58) -!86 = !DILocation(line: 18, column: 2, scope: !58) -!87 = !DILocation(line: 19, column: 1, scope: !58) +!77 = !DILocation(line: 15, column: 5, scope: !78) +!78 = distinct !DILexicalBlock(scope: !76, file: !59, line: 14, column: 7) +!79 = !DILocation(line: 13, column: 22, scope: !72) +!80 = !DILocation(line: 13, column: 2, scope: !72) +!81 = distinct !{!81, !74, !82, !83} +!82 = !DILocation(line: 16, column: 2, scope: !69) +!83 = !{!"llvm.loop.mustprogress"} +!84 = !DILocation(line: 18, column: 7, scope: !58) +!85 = !DILocation(line: 18, column: 2, scope: !58) +!86 = !DILocation(line: 19, column: 1, scope: !58) diff --git a/test_cases_bc/mem_leak/malloc6.c.bc b/test_cases_bc/mem_leak/malloc6.c.bc index 23c6a5a8e..7b1dcb5d9 100644 --- a/test_cases_bc/mem_leak/malloc6.c.bc +++ b/test_cases_bc/mem_leak/malloc6.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc6.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -98,14 +95,14 @@ define dso_local void @foo(ptr noundef %p) #0 !dbg !58 { 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 !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %p.addr, !63, !DIExpression(), !64) %0 = load ptr, ptr %p.addr, align 8, !dbg !65 - call void @free(ptr noundef %0) #5, !dbg !66 + call void @free(ptr noundef %0) #4, !dbg !66 ret void, !dbg !67 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !68 { @@ -115,45 +112,44 @@ entry: %b = alloca ptr, align 8 %c = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %b, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %c, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %a, !71, !DIExpression(), !72) + #dbg_declare(ptr %b, !73, !DIExpression(), !74) + #dbg_declare(ptr %c, !75, !DIExpression(), !76) %0 = load ptr, ptr %a, align 8, !dbg !77 %tobool = icmp ne ptr %0, null, !dbg !77 - br i1 %tobool, label %if.then, label %if.else, !dbg !79 + br i1 %tobool, label %if.then, label %if.else, !dbg !77 if.then: ; preds = %entry - %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !80 - store ptr %call, ptr %a, align 8, !dbg !81 - br label %if.end, !dbg !82 + %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !79 + store ptr %call, ptr %a, align 8, !dbg !80 + br label %if.end, !dbg !81 if.else: ; preds = %entry - %call1 = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !83 - store ptr %call1, ptr %a, align 8, !dbg !84 + %call1 = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !82 + store ptr %call1, ptr %a, align 8, !dbg !83 br label %if.end if.end: ; preds = %if.else, %if.then - %1 = load ptr, ptr %a, align 8, !dbg !85 - store ptr %1, ptr %b, align 8, !dbg !86 - %2 = load ptr, ptr %b, align 8, !dbg !87 - call void @foo(ptr noundef %2), !dbg !88 - %3 = load i32, ptr %retval, align 4, !dbg !89 - ret i32 %3, !dbg !89 + %1 = load ptr, ptr %a, align 8, !dbg !84 + store ptr %1, ptr %b, align 8, !dbg !85 + %2 = load ptr, ptr %b, align 8, !dbg !86 + call void @foo(ptr noundef %2), !dbg !87 + %3 = load i32, ptr %retval, align 4, !dbg !88 + ret i32 %3, !dbg !88 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc6.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a540e520bc99a1e09c9cafc97e90b483") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc6.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a540e520bc99a1e09c9cafc97e90b483") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -161,9 +157,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -211,7 +207,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "foo", scope: !59, file: !59, line: 10, type: !60, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc6.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a540e520bc99a1e09c9cafc97e90b483") +!59 = !DIFile(filename: "src/mem_leak/malloc6.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a540e520bc99a1e09c9cafc97e90b483") !60 = !DISubroutineType(types: !61) !61 = !{null, !62} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -231,14 +227,13 @@ attributes #5 = { nounwind } !76 = !DILocation(line: 16, column: 13, scope: !68) !77 = !DILocation(line: 17, column: 5, scope: !78) !78 = distinct !DILexicalBlock(scope: !68, file: !59, line: 17, column: 5) -!79 = !DILocation(line: 17, column: 5, scope: !68) -!80 = !DILocation(line: 18, column: 7, scope: !78) -!81 = !DILocation(line: 18, column: 5, scope: !78) -!82 = !DILocation(line: 18, column: 3, scope: !78) -!83 = !DILocation(line: 20, column: 7, scope: !78) -!84 = !DILocation(line: 20, column: 5, scope: !78) -!85 = !DILocation(line: 21, column: 6, scope: !68) -!86 = !DILocation(line: 21, column: 4, scope: !68) -!87 = !DILocation(line: 22, column: 6, scope: !68) -!88 = !DILocation(line: 22, column: 2, scope: !68) -!89 = !DILocation(line: 24, column: 1, scope: !68) +!79 = !DILocation(line: 18, column: 7, scope: !78) +!80 = !DILocation(line: 18, column: 5, scope: !78) +!81 = !DILocation(line: 18, column: 3, scope: !78) +!82 = !DILocation(line: 20, column: 7, scope: !78) +!83 = !DILocation(line: 20, column: 5, scope: !78) +!84 = !DILocation(line: 21, column: 6, scope: !68) +!85 = !DILocation(line: 21, column: 4, scope: !68) +!86 = !DILocation(line: 22, column: 6, scope: !68) +!87 = !DILocation(line: 22, column: 2, scope: !68) +!88 = !DILocation(line: 24, column: 1, scope: !68) diff --git a/test_cases_bc/mem_leak/malloc60.c.bc b/test_cases_bc/mem_leak/malloc60.c.bc index 83b2a7173..48af749b3 100644 --- a/test_cases_bc/mem_leak/malloc60.c.bc +++ b/test_cases_bc/mem_leak/malloc60.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc60.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc60.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc60.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc60.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -100,53 +97,52 @@ entry: %n = alloca i32, align 4 %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %n, metadata !62, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %p, metadata !64, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %n, !62, !DIExpression(), !63) + #dbg_declare(ptr %p, !64, !DIExpression(), !66) %call = call ptr @PLKLEAKFP(i32 noundef 10), !dbg !67 store ptr %call, ptr %p, align 8, !dbg !66 %0 = load i32, ptr %n, align 4, !dbg !68 %cmp = icmp sgt i32 %0, 0, !dbg !70 - br i1 %cmp, label %if.then, label %if.else, !dbg !71 + br i1 %cmp, label %if.then, label %if.else, !dbg !70 if.then: ; preds = %entry - %1 = load ptr, ptr %p, align 8, !dbg !72 - call void @free(ptr noundef %1) #5, !dbg !73 - br label %if.end3, !dbg !73 + %1 = load ptr, ptr %p, align 8, !dbg !71 + call void @free(ptr noundef %1) #4, !dbg !72 + br label %if.end3, !dbg !72 if.else: ; preds = %entry - %2 = load i32, ptr %n, align 4, !dbg !74 - %cmp1 = icmp sle i32 %2, 0, !dbg !76 - br i1 %cmp1, label %if.then2, label %if.end, !dbg !77 + %2 = load i32, ptr %n, align 4, !dbg !73 + %cmp1 = icmp sle i32 %2, 0, !dbg !75 + br i1 %cmp1, label %if.then2, label %if.end, !dbg !75 if.then2: ; preds = %if.else - %3 = load ptr, ptr %p, align 8, !dbg !78 - call void @free(ptr noundef %3) #5, !dbg !79 - br label %if.end, !dbg !79 + %3 = load ptr, ptr %p, align 8, !dbg !76 + call void @free(ptr noundef %3) #4, !dbg !77 + br label %if.end, !dbg !77 if.end: ; preds = %if.then2, %if.else br label %if.end3 if.end3: ; preds = %if.end, %if.then - %4 = load i32, ptr %retval, align 4, !dbg !80 - ret i32 %4, !dbg !80 + %4 = load i32, ptr %retval, align 4, !dbg !78 + ret i32 %4, !dbg !78 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc60.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b21d2242c561ca4ebb64b9b413d0e19c") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc60.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "b21d2242c561ca4ebb64b9b413d0e19c") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -154,9 +150,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -204,7 +200,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 9, type: !60, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc60.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b21d2242c561ca4ebb64b9b413d0e19c") +!59 = !DIFile(filename: "src/mem_leak/malloc60.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "b21d2242c561ca4ebb64b9b413d0e19c") !60 = !DISubroutineType(types: !61) !61 = !{!15} !62 = !DILocalVariable(name: "n", scope: !58, file: !59, line: 10, type: !15) @@ -216,13 +212,11 @@ attributes #5 = { nounwind } !68 = !DILocation(line: 12, column: 8, scope: !69) !69 = distinct !DILexicalBlock(scope: !58, file: !59, line: 12, column: 8) !70 = !DILocation(line: 12, column: 9, scope: !69) -!71 = !DILocation(line: 12, column: 8, scope: !58) -!72 = !DILocation(line: 13, column: 14, scope: !69) -!73 = !DILocation(line: 13, column: 9, scope: !69) -!74 = !DILocation(line: 14, column: 13, scope: !75) -!75 = distinct !DILexicalBlock(scope: !69, file: !59, line: 14, column: 13) -!76 = !DILocation(line: 14, column: 14, scope: !75) -!77 = !DILocation(line: 14, column: 13, scope: !69) -!78 = !DILocation(line: 15, column: 14, scope: !75) -!79 = !DILocation(line: 15, column: 9, scope: !75) -!80 = !DILocation(line: 16, column: 1, scope: !58) +!71 = !DILocation(line: 13, column: 14, scope: !69) +!72 = !DILocation(line: 13, column: 9, scope: !69) +!73 = !DILocation(line: 14, column: 13, scope: !74) +!74 = distinct !DILexicalBlock(scope: !69, file: !59, line: 14, column: 13) +!75 = !DILocation(line: 14, column: 14, scope: !74) +!76 = !DILocation(line: 15, column: 14, scope: !74) +!77 = !DILocation(line: 15, column: 9, scope: !74) +!78 = !DILocation(line: 16, column: 1, scope: !58) diff --git a/test_cases_bc/mem_leak/malloc61.c.bc b/test_cases_bc/mem_leak/malloc61.c.bc index c82d10847..b6143e46a 100644 --- a/test_cases_bc/mem_leak/malloc61.c.bc +++ b/test_cases_bc/mem_leak/malloc61.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc61.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc61.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc61.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc61.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -100,75 +97,74 @@ entry: %p.addr = alloca ptr, align 8 %n.addr = alloca i32, align 4 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !64, metadata !DIExpression()), !dbg !65 + #dbg_declare(ptr %p.addr, !64, !DIExpression(), !65) store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !66, metadata !DIExpression()), !dbg !67 + #dbg_declare(ptr %n.addr, !66, !DIExpression(), !67) %0 = load i32, ptr %n.addr, align 4, !dbg !68 %cmp = icmp eq i32 %0, 0, !dbg !70 - br i1 %cmp, label %if.then, label %if.else, !dbg !71 + br i1 %cmp, label %if.then, label %if.else, !dbg !70 if.then: ; preds = %entry - store i32 0, ptr %retval, align 4, !dbg !72 - br label %return, !dbg !72 + store i32 0, ptr %retval, align 4, !dbg !71 + br label %return, !dbg !71 if.else: ; preds = %entry - %1 = load i32, ptr %n.addr, align 4, !dbg !73 - %call = call ptr @PLKLEAKFP(i32 noundef %1), !dbg !75 - %2 = load ptr, ptr %p.addr, align 8, !dbg !76 - store ptr %call, ptr %2, align 8, !dbg !77 - %3 = load i32, ptr %n.addr, align 4, !dbg !78 - store i32 %3, ptr %retval, align 4, !dbg !79 - br label %return, !dbg !79 + %1 = load i32, ptr %n.addr, align 4, !dbg !72 + %call = call ptr @PLKLEAKFP(i32 noundef %1), !dbg !74 + %2 = load ptr, ptr %p.addr, align 8, !dbg !75 + store ptr %call, ptr %2, align 8, !dbg !76 + %3 = load i32, ptr %n.addr, align 4, !dbg !77 + store i32 %3, ptr %retval, align 4, !dbg !78 + br label %return, !dbg !78 return: ; preds = %if.else, %if.then - %4 = load i32, ptr %retval, align 4, !dbg !80 - ret i32 %4, !dbg !80 + %4 = load i32, ptr %retval, align 4, !dbg !79 + ret i32 %4, !dbg !79 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !81 { +define dso_local i32 @main() #0 !dbg !80 { entry: %retval = alloca i32, align 4 %q = alloca ptr, align 8 %m = alloca i32, align 4 %ret = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %q, metadata !84, metadata !DIExpression()), !dbg !85 - call void @llvm.dbg.declare(metadata ptr %m, metadata !86, metadata !DIExpression()), !dbg !87 - call void @llvm.dbg.declare(metadata ptr %ret, metadata !88, metadata !DIExpression()), !dbg !89 - %0 = load i32, ptr %m, align 4, !dbg !90 - %call = call i32 @foo(ptr noundef %q, i32 noundef %0), !dbg !91 - store i32 %call, ptr %ret, align 4, !dbg !89 - %1 = load i32, ptr %ret, align 4, !dbg !92 - %cmp = icmp ne i32 %1, 0, !dbg !94 - br i1 %cmp, label %if.then, label %if.end, !dbg !95 + #dbg_declare(ptr %q, !83, !DIExpression(), !84) + #dbg_declare(ptr %m, !85, !DIExpression(), !86) + #dbg_declare(ptr %ret, !87, !DIExpression(), !88) + %0 = load i32, ptr %m, align 4, !dbg !89 + %call = call i32 @foo(ptr noundef %q, i32 noundef %0), !dbg !90 + store i32 %call, ptr %ret, align 4, !dbg !88 + %1 = load i32, ptr %ret, align 4, !dbg !91 + %cmp = icmp ne i32 %1, 0, !dbg !93 + br i1 %cmp, label %if.then, label %if.end, !dbg !93 if.then: ; preds = %entry - %2 = load ptr, ptr %q, align 8, !dbg !96 - call void @free(ptr noundef %2) #5, !dbg !97 - br label %if.end, !dbg !97 + %2 = load ptr, ptr %q, align 8, !dbg !94 + call void @free(ptr noundef %2) #4, !dbg !95 + br label %if.end, !dbg !95 if.end: ; preds = %if.then, %entry - %3 = load i32, ptr %retval, align 4, !dbg !98 - ret i32 %3, !dbg !98 + %3 = load i32, ptr %retval, align 4, !dbg !96 + ret i32 %3, !dbg !96 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc61.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a0a297911c792f65c34f688a26e857e2") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc61.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a0a297911c792f65c34f688a26e857e2") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -176,9 +172,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -226,7 +222,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "foo", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc61.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a0a297911c792f65c34f688a26e857e2") +!59 = !DIFile(filename: "src/mem_leak/malloc61.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a0a297911c792f65c34f688a26e857e2") !60 = !DISubroutineType(types: !61) !61 = !{!15, !62, !15} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !63, size: 64) @@ -238,31 +234,29 @@ attributes #5 = { nounwind } !68 = !DILocation(line: 12, column: 5, scope: !69) !69 = distinct !DILexicalBlock(scope: !58, file: !59, line: 12, column: 5) !70 = !DILocation(line: 12, column: 7, scope: !69) -!71 = !DILocation(line: 12, column: 5, scope: !58) -!72 = !DILocation(line: 13, column: 3, scope: !69) -!73 = !DILocation(line: 15, column: 18, scope: !74) -!74 = distinct !DILexicalBlock(scope: !69, file: !59, line: 14, column: 6) -!75 = !DILocation(line: 15, column: 8, scope: !74) -!76 = !DILocation(line: 15, column: 4, scope: !74) -!77 = !DILocation(line: 15, column: 6, scope: !74) -!78 = !DILocation(line: 16, column: 10, scope: !74) -!79 = !DILocation(line: 16, column: 3, scope: !74) -!80 = !DILocation(line: 18, column: 1, scope: !58) -!81 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 20, type: !82, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!82 = !DISubroutineType(types: !83) -!83 = !{!15} -!84 = !DILocalVariable(name: "q", scope: !81, file: !59, line: 21, type: !63) -!85 = !DILocation(line: 21, column: 7, scope: !81) -!86 = !DILocalVariable(name: "m", scope: !81, file: !59, line: 21, type: !15) -!87 = !DILocation(line: 21, column: 10, scope: !81) -!88 = !DILocalVariable(name: "ret", scope: !81, file: !59, line: 22, type: !15) -!89 = !DILocation(line: 22, column: 6, scope: !81) -!90 = !DILocation(line: 22, column: 19, scope: !81) -!91 = !DILocation(line: 22, column: 12, scope: !81) -!92 = !DILocation(line: 24, column: 5, scope: !93) -!93 = distinct !DILexicalBlock(scope: !81, file: !59, line: 24, column: 5) -!94 = !DILocation(line: 24, column: 8, scope: !93) -!95 = !DILocation(line: 24, column: 5, scope: !81) -!96 = !DILocation(line: 25, column: 8, scope: !93) -!97 = !DILocation(line: 25, column: 3, scope: !93) -!98 = !DILocation(line: 27, column: 1, scope: !81) +!71 = !DILocation(line: 13, column: 3, scope: !69) +!72 = !DILocation(line: 15, column: 18, scope: !73) +!73 = distinct !DILexicalBlock(scope: !69, file: !59, line: 14, column: 6) +!74 = !DILocation(line: 15, column: 8, scope: !73) +!75 = !DILocation(line: 15, column: 4, scope: !73) +!76 = !DILocation(line: 15, column: 6, scope: !73) +!77 = !DILocation(line: 16, column: 10, scope: !73) +!78 = !DILocation(line: 16, column: 3, scope: !73) +!79 = !DILocation(line: 18, column: 1, scope: !58) +!80 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 20, type: !81, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!81 = !DISubroutineType(types: !82) +!82 = !{!15} +!83 = !DILocalVariable(name: "q", scope: !80, file: !59, line: 21, type: !63) +!84 = !DILocation(line: 21, column: 7, scope: !80) +!85 = !DILocalVariable(name: "m", scope: !80, file: !59, line: 21, type: !15) +!86 = !DILocation(line: 21, column: 10, scope: !80) +!87 = !DILocalVariable(name: "ret", scope: !80, file: !59, line: 22, type: !15) +!88 = !DILocation(line: 22, column: 6, scope: !80) +!89 = !DILocation(line: 22, column: 19, scope: !80) +!90 = !DILocation(line: 22, column: 12, scope: !80) +!91 = !DILocation(line: 24, column: 5, scope: !92) +!92 = distinct !DILexicalBlock(scope: !80, file: !59, line: 24, column: 5) +!93 = !DILocation(line: 24, column: 8, scope: !92) +!94 = !DILocation(line: 25, column: 8, scope: !92) +!95 = !DILocation(line: 25, column: 3, scope: !92) +!96 = !DILocation(line: 27, column: 1, scope: !80) diff --git a/test_cases_bc/mem_leak/malloc62.c.bc b/test_cases_bc/mem_leak/malloc62.c.bc index d3f4a6d8c..44697041f 100644 --- a/test_cases_bc/mem_leak/malloc62.c.bc +++ b/test_cases_bc/mem_leak/malloc62.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc62.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc62.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc62.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc62.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -102,11 +99,11 @@ entry: %p = alloca ptr, align 8 %c = alloca i32, align 4 store i32 %size, ptr %size.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %size.addr, metadata !63, metadata !DIExpression()), !dbg !64 - call void @llvm.dbg.declare(metadata ptr %flag, metadata !65, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %size.addr, !63, !DIExpression(), !64) + #dbg_declare(ptr %flag, !65, !DIExpression(), !66) store i32 0, ptr %flag, align 4, !dbg !66 - call void @llvm.dbg.declare(metadata ptr %p, metadata !67, metadata !DIExpression()), !dbg !68 - call void @llvm.dbg.declare(metadata ptr %c, metadata !69, metadata !DIExpression()), !dbg !70 + #dbg_declare(ptr %p, !67, !DIExpression(), !68) + #dbg_declare(ptr %c, !69, !DIExpression(), !70) store i32 10, ptr %c, align 4, !dbg !70 br label %while.cond, !dbg !71 @@ -127,47 +124,46 @@ land.end: ; preds = %land.rhs, %while.co while.body: ; preds = %land.end %3 = load i32, ptr %flag, align 4, !dbg !78 %cmp2 = icmp eq i32 %3, 0, !dbg !81 - br i1 %cmp2, label %if.then, label %if.else, !dbg !82 + br i1 %cmp2, label %if.then, label %if.else, !dbg !81 if.then: ; preds = %while.body - %call = call ptr @PLKLEAKFP(i32 noundef 1), !dbg !83 - store ptr %call, ptr %p, align 8, !dbg !85 - store i32 1, ptr %flag, align 4, !dbg !86 - br label %if.end, !dbg !87 + %call = call ptr @PLKLEAKFP(i32 noundef 1), !dbg !82 + store ptr %call, ptr %p, align 8, !dbg !84 + store i32 1, ptr %flag, align 4, !dbg !85 + br label %if.end, !dbg !86 if.else: ; preds = %while.body - %4 = load ptr, ptr %p, align 8, !dbg !88 - call void @free(ptr noundef %4) #5, !dbg !90 - store i32 0, ptr %flag, align 4, !dbg !91 + %4 = load ptr, ptr %p, align 8, !dbg !87 + call void @free(ptr noundef %4) #4, !dbg !89 + store i32 0, ptr %flag, align 4, !dbg !90 br label %if.end if.end: ; preds = %if.else, %if.then - %5 = load i32, ptr %c, align 4, !dbg !92 - %dec = add nsw i32 %5, -1, !dbg !92 - store i32 %dec, ptr %c, align 4, !dbg !92 - br label %while.cond, !dbg !71, !llvm.loop !93 + %5 = load i32, ptr %c, align 4, !dbg !91 + %dec = add nsw i32 %5, -1, !dbg !91 + store i32 %dec, ptr %c, align 4, !dbg !91 + br label %while.cond, !dbg !71, !llvm.loop !92 while.end: ; preds = %land.end - %6 = load ptr, ptr %retval, align 8, !dbg !96 - ret ptr %6, !dbg !96 + %6 = load ptr, ptr %retval, align 8, !dbg !95 + ret ptr %6, !dbg !95 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc62.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "064fdf43e3b6264bd58384e76aec4014") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc62.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "064fdf43e3b6264bd58384e76aec4014") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -175,9 +171,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -225,7 +221,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc62.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "064fdf43e3b6264bd58384e76aec4014") +!59 = !DIFile(filename: "src/mem_leak/malloc62.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "064fdf43e3b6264bd58384e76aec4014") !60 = !DISubroutineType(types: !61) !61 = !{!62, !15} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -248,18 +244,17 @@ attributes #5 = { nounwind } !79 = distinct !DILexicalBlock(scope: !80, file: !59, line: 15, column: 6) !80 = distinct !DILexicalBlock(scope: !58, file: !59, line: 14, column: 27) !81 = !DILocation(line: 15, column: 11, scope: !79) -!82 = !DILocation(line: 15, column: 6, scope: !80) -!83 = !DILocation(line: 16, column: 8, scope: !84) -!84 = distinct !DILexicalBlock(scope: !79, file: !59, line: 15, column: 16) -!85 = !DILocation(line: 16, column: 6, scope: !84) -!86 = !DILocation(line: 17, column: 9, scope: !84) -!87 = !DILocation(line: 18, column: 3, scope: !84) -!88 = !DILocation(line: 20, column: 9, scope: !89) -!89 = distinct !DILexicalBlock(scope: !79, file: !59, line: 19, column: 7) -!90 = !DILocation(line: 20, column: 4, scope: !89) -!91 = !DILocation(line: 21, column: 9, scope: !89) -!92 = !DILocation(line: 23, column: 4, scope: !80) -!93 = distinct !{!93, !71, !94, !95} -!94 = !DILocation(line: 24, column: 2, scope: !58) -!95 = !{!"llvm.loop.mustprogress"} -!96 = !DILocation(line: 25, column: 1, scope: !58) +!82 = !DILocation(line: 16, column: 8, scope: !83) +!83 = distinct !DILexicalBlock(scope: !79, file: !59, line: 15, column: 16) +!84 = !DILocation(line: 16, column: 6, scope: !83) +!85 = !DILocation(line: 17, column: 9, scope: !83) +!86 = !DILocation(line: 18, column: 3, scope: !83) +!87 = !DILocation(line: 20, column: 9, scope: !88) +!88 = distinct !DILexicalBlock(scope: !79, file: !59, line: 19, column: 7) +!89 = !DILocation(line: 20, column: 4, scope: !88) +!90 = !DILocation(line: 21, column: 9, scope: !88) +!91 = !DILocation(line: 23, column: 4, scope: !80) +!92 = distinct !{!92, !71, !93, !94} +!93 = !DILocation(line: 24, column: 2, scope: !58) +!94 = !{!"llvm.loop.mustprogress"} +!95 = !DILocation(line: 25, column: 1, scope: !58) diff --git a/test_cases_bc/mem_leak/malloc63.c.bc b/test_cases_bc/mem_leak/malloc63.c.bc index 756f122eb..b7d6a1515 100644 --- a/test_cases_bc/mem_leak/malloc63.c.bc +++ b/test_cases_bc/mem_leak/malloc63.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc63.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc63.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc63.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc63.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -100,11 +97,11 @@ entry: %flag.addr = alloca i32, align 4 %c.addr = alloca i32, align 4 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %p.addr, !63, !DIExpression(), !64) store i32 %flag, ptr %flag.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %flag.addr, metadata !65, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %flag.addr, !65, !DIExpression(), !66) store i32 %c, ptr %c.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %c.addr, metadata !67, metadata !DIExpression()), !dbg !68 + #dbg_declare(ptr %c.addr, !67, !DIExpression(), !68) %0 = load i32, ptr %flag.addr, align 4, !dbg !69 %cmp = icmp eq i32 %0, 0, !dbg !71 br i1 %cmp, label %land.lhs.true, label %if.end, !dbg !72 @@ -112,92 +109,91 @@ entry: land.lhs.true: ; preds = %entry %1 = load i32, ptr %c.addr, align 4, !dbg !73 %cmp1 = icmp slt i32 %1, 0, !dbg !74 - br i1 %cmp1, label %if.then, label %if.end, !dbg !75 + br i1 %cmp1, label %if.then, label %if.end, !dbg !72 if.then: ; preds = %land.lhs.true - br label %return, !dbg !76 + br label %return, !dbg !75 if.end: ; preds = %land.lhs.true, %entry - %2 = load i32, ptr %flag.addr, align 4, !dbg !77 - %cmp2 = icmp eq i32 %2, 0, !dbg !79 - br i1 %cmp2, label %if.then3, label %if.end4, !dbg !80 + %2 = load i32, ptr %flag.addr, align 4, !dbg !76 + %cmp2 = icmp eq i32 %2, 0, !dbg !78 + br i1 %cmp2, label %if.then3, label %if.end4, !dbg !78 if.then3: ; preds = %if.end - %call = call ptr @PLKLEAKFP(i32 noundef 1), !dbg !81 - store ptr %call, ptr %p.addr, align 8, !dbg !83 - store i32 1, ptr %flag.addr, align 4, !dbg !84 - br label %if.end4, !dbg !85 + %call = call ptr @PLKLEAKFP(i32 noundef 1), !dbg !79 + store ptr %call, ptr %p.addr, align 8, !dbg !81 + store i32 1, ptr %flag.addr, align 4, !dbg !82 + br label %if.end4, !dbg !83 if.end4: ; preds = %if.then3, %if.end - %3 = load ptr, ptr %p.addr, align 8, !dbg !86 - %4 = load i32, ptr %flag.addr, align 4, !dbg !87 - %5 = load i32, ptr %c.addr, align 4, !dbg !88 - call void @goo(ptr noundef %3, i32 noundef %4, i32 noundef %5), !dbg !89 - br label %return, !dbg !90 + %3 = load ptr, ptr %p.addr, align 8, !dbg !84 + %4 = load i32, ptr %flag.addr, align 4, !dbg !85 + %5 = load i32, ptr %c.addr, align 4, !dbg !86 + call void @goo(ptr noundef %3, i32 noundef %4, i32 noundef %5), !dbg !87 + br label %return, !dbg !88 return: ; preds = %if.end4, %if.then - ret void, !dbg !90 + ret void, !dbg !88 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @goo(ptr noundef %p, i32 noundef %flag, i32 noundef %c) #0 !dbg !91 { +define dso_local void @goo(ptr noundef %p, i32 noundef %flag, i32 noundef %c) #0 !dbg !89 { entry: %p.addr = alloca ptr, align 8 %flag.addr = alloca i32, align 4 %c.addr = alloca i32, align 4 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !92, metadata !DIExpression()), !dbg !93 + #dbg_declare(ptr %p.addr, !90, !DIExpression(), !91) store i32 %flag, ptr %flag.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %flag.addr, metadata !94, metadata !DIExpression()), !dbg !95 + #dbg_declare(ptr %flag.addr, !92, !DIExpression(), !93) store i32 %c, ptr %c.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %c.addr, metadata !96, metadata !DIExpression()), !dbg !97 - %0 = load i32, ptr %flag.addr, align 4, !dbg !98 - %cmp = icmp eq i32 1, %0, !dbg !100 - br i1 %cmp, label %if.then, label %if.end, !dbg !101 + #dbg_declare(ptr %c.addr, !94, !DIExpression(), !95) + %0 = load i32, ptr %flag.addr, align 4, !dbg !96 + %cmp = icmp eq i32 1, %0, !dbg !98 + br i1 %cmp, label %if.then, label %if.end, !dbg !98 if.then: ; preds = %entry - %1 = load ptr, ptr %p.addr, align 8, !dbg !102 - call void @free(ptr noundef %1) #5, !dbg !104 - store i32 0, ptr %flag.addr, align 4, !dbg !105 - br label %if.end, !dbg !106 + %1 = load ptr, ptr %p.addr, align 8, !dbg !99 + call void @free(ptr noundef %1) #4, !dbg !101 + store i32 0, ptr %flag.addr, align 4, !dbg !102 + br label %if.end, !dbg !103 if.end: ; preds = %if.then, %entry - %2 = load i32, ptr %c.addr, align 4, !dbg !107 - %dec = add nsw i32 %2, -1, !dbg !107 - store i32 %dec, ptr %c.addr, align 4, !dbg !107 - %3 = load ptr, ptr %p.addr, align 8, !dbg !108 - %4 = load i32, ptr %flag.addr, align 4, !dbg !109 - %5 = load i32, ptr %c.addr, align 4, !dbg !110 - call void @foo(ptr noundef %3, i32 noundef %4, i32 noundef %5), !dbg !111 - ret void, !dbg !112 + %2 = load i32, ptr %c.addr, align 4, !dbg !104 + %dec = add nsw i32 %2, -1, !dbg !104 + store i32 %dec, ptr %c.addr, align 4, !dbg !104 + %3 = load ptr, ptr %p.addr, align 8, !dbg !105 + %4 = load i32, ptr %flag.addr, align 4, !dbg !106 + %5 = load i32, ptr %c.addr, align 4, !dbg !107 + call void @foo(ptr noundef %3, i32 noundef %4, i32 noundef %5), !dbg !108 + ret void, !dbg !109 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !113 { +define dso_local i32 @main() #0 !dbg !110 { entry: %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !116, metadata !DIExpression()), !dbg !117 - %0 = load ptr, ptr %p, align 8, !dbg !118 - call void @foo(ptr noundef %0, i32 noundef 0, i32 noundef 10), !dbg !119 - ret i32 0, !dbg !120 + #dbg_declare(ptr %p, !113, !DIExpression(), !114) + %0 = load ptr, ptr %p, align 8, !dbg !115 + call void @foo(ptr noundef %0, i32 noundef 0, i32 noundef 10), !dbg !116 + ret i32 0, !dbg !117 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc63.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3681d03a9bac3191bb4f0f4ae8849232") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc63.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "3681d03a9bac3191bb4f0f4ae8849232") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -205,9 +201,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -255,7 +251,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "foo", scope: !59, file: !59, line: 12, type: !60, scopeLine: 12, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/malloc63.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3681d03a9bac3191bb4f0f4ae8849232") +!59 = !DIFile(filename: "src/mem_leak/malloc63.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "3681d03a9bac3191bb4f0f4ae8849232") !60 = !DISubroutineType(types: !61) !61 = !{null, !62, !15, !15} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -271,49 +267,46 @@ attributes #5 = { nounwind } !72 = !DILocation(line: 13, column: 15, scope: !70) !73 = !DILocation(line: 13, column: 18, scope: !70) !74 = !DILocation(line: 13, column: 20, scope: !70) -!75 = !DILocation(line: 13, column: 5, scope: !58) -!76 = !DILocation(line: 14, column: 3, scope: !70) -!77 = !DILocation(line: 16, column: 5, scope: !78) -!78 = distinct !DILexicalBlock(scope: !58, file: !59, line: 16, column: 5) -!79 = !DILocation(line: 16, column: 10, scope: !78) -!80 = !DILocation(line: 16, column: 5, scope: !58) -!81 = !DILocation(line: 17, column: 7, scope: !82) -!82 = distinct !DILexicalBlock(scope: !78, file: !59, line: 16, column: 15) -!83 = !DILocation(line: 17, column: 5, scope: !82) -!84 = !DILocation(line: 18, column: 8, scope: !82) -!85 = !DILocation(line: 19, column: 2, scope: !82) -!86 = !DILocation(line: 21, column: 6, scope: !58) -!87 = !DILocation(line: 21, column: 8, scope: !58) -!88 = !DILocation(line: 21, column: 13, scope: !58) -!89 = !DILocation(line: 21, column: 2, scope: !58) -!90 = !DILocation(line: 22, column: 1, scope: !58) -!91 = distinct !DISubprogram(name: "goo", scope: !59, file: !59, line: 25, type: !60, scopeLine: 25, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!92 = !DILocalVariable(name: "p", arg: 1, scope: !91, file: !59, line: 25, type: !62) -!93 = !DILocation(line: 25, column: 15, scope: !91) -!94 = !DILocalVariable(name: "flag", arg: 2, scope: !91, file: !59, line: 25, type: !15) -!95 = !DILocation(line: 25, column: 22, scope: !91) -!96 = !DILocalVariable(name: "c", arg: 3, scope: !91, file: !59, line: 25, type: !15) -!97 = !DILocation(line: 25, column: 32, scope: !91) -!98 = !DILocation(line: 27, column: 10, scope: !99) -!99 = distinct !DILexicalBlock(scope: !91, file: !59, line: 27, column: 5) -!100 = !DILocation(line: 27, column: 7, scope: !99) -!101 = !DILocation(line: 27, column: 5, scope: !91) -!102 = !DILocation(line: 28, column: 8, scope: !103) -!103 = distinct !DILexicalBlock(scope: !99, file: !59, line: 27, column: 15) -!104 = !DILocation(line: 28, column: 3, scope: !103) -!105 = !DILocation(line: 29, column: 8, scope: !103) -!106 = !DILocation(line: 30, column: 2, scope: !103) -!107 = !DILocation(line: 31, column: 3, scope: !91) -!108 = !DILocation(line: 32, column: 6, scope: !91) -!109 = !DILocation(line: 32, column: 8, scope: !91) -!110 = !DILocation(line: 32, column: 13, scope: !91) -!111 = !DILocation(line: 32, column: 2, scope: !91) -!112 = !DILocation(line: 33, column: 1, scope: !91) -!113 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 35, type: !114, scopeLine: 35, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!114 = !DISubroutineType(types: !115) -!115 = !{!15} -!116 = !DILocalVariable(name: "p", scope: !113, file: !59, line: 36, type: !62) -!117 = !DILocation(line: 36, column: 7, scope: !113) -!118 = !DILocation(line: 37, column: 6, scope: !113) -!119 = !DILocation(line: 37, column: 2, scope: !113) -!120 = !DILocation(line: 38, column: 1, scope: !113) +!75 = !DILocation(line: 14, column: 3, scope: !70) +!76 = !DILocation(line: 16, column: 5, scope: !77) +!77 = distinct !DILexicalBlock(scope: !58, file: !59, line: 16, column: 5) +!78 = !DILocation(line: 16, column: 10, scope: !77) +!79 = !DILocation(line: 17, column: 7, scope: !80) +!80 = distinct !DILexicalBlock(scope: !77, file: !59, line: 16, column: 15) +!81 = !DILocation(line: 17, column: 5, scope: !80) +!82 = !DILocation(line: 18, column: 8, scope: !80) +!83 = !DILocation(line: 19, column: 2, scope: !80) +!84 = !DILocation(line: 21, column: 6, scope: !58) +!85 = !DILocation(line: 21, column: 8, scope: !58) +!86 = !DILocation(line: 21, column: 13, scope: !58) +!87 = !DILocation(line: 21, column: 2, scope: !58) +!88 = !DILocation(line: 22, column: 1, scope: !58) +!89 = distinct !DISubprogram(name: "goo", scope: !59, file: !59, line: 25, type: !60, scopeLine: 25, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!90 = !DILocalVariable(name: "p", arg: 1, scope: !89, file: !59, line: 25, type: !62) +!91 = !DILocation(line: 25, column: 15, scope: !89) +!92 = !DILocalVariable(name: "flag", arg: 2, scope: !89, file: !59, line: 25, type: !15) +!93 = !DILocation(line: 25, column: 22, scope: !89) +!94 = !DILocalVariable(name: "c", arg: 3, scope: !89, file: !59, line: 25, type: !15) +!95 = !DILocation(line: 25, column: 32, scope: !89) +!96 = !DILocation(line: 27, column: 10, scope: !97) +!97 = distinct !DILexicalBlock(scope: !89, file: !59, line: 27, column: 5) +!98 = !DILocation(line: 27, column: 7, scope: !97) +!99 = !DILocation(line: 28, column: 8, scope: !100) +!100 = distinct !DILexicalBlock(scope: !97, file: !59, line: 27, column: 15) +!101 = !DILocation(line: 28, column: 3, scope: !100) +!102 = !DILocation(line: 29, column: 8, scope: !100) +!103 = !DILocation(line: 30, column: 2, scope: !100) +!104 = !DILocation(line: 31, column: 3, scope: !89) +!105 = !DILocation(line: 32, column: 6, scope: !89) +!106 = !DILocation(line: 32, column: 8, scope: !89) +!107 = !DILocation(line: 32, column: 13, scope: !89) +!108 = !DILocation(line: 32, column: 2, scope: !89) +!109 = !DILocation(line: 33, column: 1, scope: !89) +!110 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 35, type: !111, scopeLine: 35, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!111 = !DISubroutineType(types: !112) +!112 = !{!15} +!113 = !DILocalVariable(name: "p", scope: !110, file: !59, line: 36, type: !62) +!114 = !DILocation(line: 36, column: 7, scope: !110) +!115 = !DILocation(line: 37, column: 6, scope: !110) +!116 = !DILocation(line: 37, column: 2, scope: !110) +!117 = !DILocation(line: 38, column: 1, scope: !110) diff --git a/test_cases_bc/mem_leak/malloc64.c.bc b/test_cases_bc/mem_leak/malloc64.c.bc index c52692e06..e882645a0 100644 --- a/test_cases_bc/mem_leak/malloc64.c.bc +++ b/test_cases_bc/mem_leak/malloc64.c.bc @@ -1,12 +1,12 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc64.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc64.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc64.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc64.c" +target datalayout = "e-m:e-p270:32:32-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.sol = type { i32, i32, float, i32, i32, float, ptr, ptr } @.str = private unnamed_addr constant [9 x i8] c"idx != 0\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [64 x i8] c"/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc64.c\00", align 1, !dbg !7 +@.str.1 = private unnamed_addr constant [60 x i8] c"/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc64.c\00", align 1, !dbg !7 @__PRETTY_FUNCTION__.__matrix_alloc = private unnamed_addr constant [46 x i8] c"void **__matrix_alloc(size_t, size_t, size_t)\00", align 1, !dbg !12 @.str.2 = private unnamed_addr constant [12 x i8] c"idx[0] != 0\00", align 1, !dbg !18 @.str.3 = private unnamed_addr constant [38 x i8] c"idx[row] - idx[0] == row * col * size\00", align 1, !dbg !23 @@ -25,28 +25,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !89 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !94, metadata !DIExpression()), !dbg !95 + #dbg_declare(ptr %n.addr, !94, !DIExpression(), !95) %0 = load i32, ptr %n.addr, align 4, !dbg !96 %conv = sext i32 %0 to i64, !dbg !96 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !97 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !97 ret ptr %call, !dbg !98 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !99 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !100, metadata !DIExpression()), !dbg !101 + #dbg_declare(ptr %n.addr, !100, !DIExpression(), !101) %0 = load i32, ptr %n.addr, align 4, !dbg !102 %conv = sext i32 %0 to i64, !dbg !102 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !103 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !103 ret ptr %call, !dbg !104 } @@ -55,10 +52,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !105 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !106, metadata !DIExpression()), !dbg !107 + #dbg_declare(ptr %n.addr, !106, !DIExpression(), !107) %0 = load i32, ptr %n.addr, align 4, !dbg !108 %conv = sext i32 %0 to i64, !dbg !108 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !109 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !109 ret ptr %call, !dbg !110 } @@ -67,10 +64,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !111 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !112, metadata !DIExpression()), !dbg !113 + #dbg_declare(ptr %n.addr, !112, !DIExpression(), !113) %0 = load i32, ptr %n.addr, align 4, !dbg !114 %conv = sext i32 %0 to i64, !dbg !114 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !115 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !115 ret ptr %call, !dbg !116 } @@ -79,10 +76,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !117 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !118, metadata !DIExpression()), !dbg !119 + #dbg_declare(ptr %n.addr, !118, !DIExpression(), !119) %0 = load i32, ptr %n.addr, align 4, !dbg !120 %conv = sext i32 %0 to i64, !dbg !120 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !121 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !121 ret ptr %call, !dbg !122 } @@ -91,10 +88,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !123 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !124, metadata !DIExpression()), !dbg !125 + #dbg_declare(ptr %n.addr, !124, !DIExpression(), !125) %0 = load i32, ptr %n.addr, align 4, !dbg !126 %conv = sext i32 %0 to i64, !dbg !126 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !127 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !127 ret ptr %call, !dbg !128 } @@ -103,10 +100,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !129 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !130, metadata !DIExpression()), !dbg !131 + #dbg_declare(ptr %n.addr, !130, !DIExpression(), !131) %0 = load i32, ptr %n.addr, align 4, !dbg !132 %conv = sext i32 %0 to i64, !dbg !132 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !133 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !133 ret ptr %call, !dbg !134 } @@ -119,132 +116,132 @@ entry: %i = alloca i64, align 8 %idx = alloca ptr, align 8 store i64 %row, ptr %row.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %row.addr, metadata !141, metadata !DIExpression()), !dbg !142 + #dbg_declare(ptr %row.addr, !141, !DIExpression(), !142) store i64 %col, ptr %col.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %col.addr, metadata !143, metadata !DIExpression()), !dbg !144 + #dbg_declare(ptr %col.addr, !143, !DIExpression(), !144) store i64 %size, ptr %size.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %size.addr, metadata !145, metadata !DIExpression()), !dbg !146 - call void @llvm.dbg.declare(metadata ptr %i, metadata !147, metadata !DIExpression()), !dbg !148 - call void @llvm.dbg.declare(metadata ptr %idx, metadata !149, metadata !DIExpression()), !dbg !150 + #dbg_declare(ptr %size.addr, !145, !DIExpression(), !146) + #dbg_declare(ptr %i, !147, !DIExpression(), !148) + #dbg_declare(ptr %idx, !149, !DIExpression(), !150) %0 = load i64, ptr %row.addr, align 8, !dbg !151 %add = add i64 %0, 1, !dbg !152 %mul = mul i64 %add, 8, !dbg !153 - %call = call noalias ptr @malloc(i64 noundef %mul) #5, !dbg !154 + %call = call noalias ptr @malloc(i64 noundef %mul) #4, !dbg !154 store ptr %call, ptr %idx, align 8, !dbg !150 %1 = load ptr, ptr %idx, align 8, !dbg !155 %cmp = icmp ne ptr %1, null, !dbg !155 - br i1 %cmp, label %if.then, label %if.else, !dbg !158 + br i1 %cmp, label %if.then, label %if.else, !dbg !155 if.then: ; preds = %entry - br label %if.end, !dbg !158 + br label %if.end, !dbg !155 if.else: ; preds = %entry - call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 49, ptr noundef @__PRETTY_FUNCTION__.__matrix_alloc) #6, !dbg !155 + call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 49, ptr noundef @__PRETTY_FUNCTION__.__matrix_alloc) #5, !dbg !155 unreachable, !dbg !155 if.end: ; preds = %if.then - %2 = load i64, ptr %row.addr, align 8, !dbg !159 - %3 = load i64, ptr %col.addr, align 8, !dbg !160 - %mul1 = mul i64 %2, %3, !dbg !161 - %conv = trunc i64 %mul1 to i32, !dbg !159 - %call2 = call ptr @NFRMALLOC(i32 noundef %conv), !dbg !162 - %4 = load ptr, ptr %idx, align 8, !dbg !163 - %arrayidx = getelementptr inbounds ptr, ptr %4, i64 0, !dbg !163 - store ptr %call2, ptr %arrayidx, align 8, !dbg !164 - %5 = load ptr, ptr %idx, align 8, !dbg !165 - %arrayidx3 = getelementptr inbounds ptr, ptr %5, i64 0, !dbg !165 - %6 = load ptr, ptr %arrayidx3, align 8, !dbg !165 - %cmp4 = icmp ne ptr %6, null, !dbg !165 - br i1 %cmp4, label %if.then6, label %if.else7, !dbg !168 + %2 = load i64, ptr %row.addr, align 8, !dbg !158 + %3 = load i64, ptr %col.addr, align 8, !dbg !159 + %mul1 = mul i64 %2, %3, !dbg !160 + %conv = trunc i64 %mul1 to i32, !dbg !158 + %call2 = call ptr @NFRMALLOC(i32 noundef %conv), !dbg !161 + %4 = load ptr, ptr %idx, align 8, !dbg !162 + %arrayidx = getelementptr inbounds ptr, ptr %4, i64 0, !dbg !162 + store ptr %call2, ptr %arrayidx, align 8, !dbg !163 + %5 = load ptr, ptr %idx, align 8, !dbg !164 + %arrayidx3 = getelementptr inbounds ptr, ptr %5, i64 0, !dbg !164 + %6 = load ptr, ptr %arrayidx3, align 8, !dbg !164 + %cmp4 = icmp ne ptr %6, null, !dbg !164 + br i1 %cmp4, label %if.then6, label %if.else7, !dbg !164 if.then6: ; preds = %if.end - br label %if.end8, !dbg !168 + br label %if.end8, !dbg !164 if.else7: ; preds = %if.end - call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 51, ptr noundef @__PRETTY_FUNCTION__.__matrix_alloc) #6, !dbg !165 - unreachable, !dbg !165 + call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 51, ptr noundef @__PRETTY_FUNCTION__.__matrix_alloc) #5, !dbg !164 + unreachable, !dbg !164 if.end8: ; preds = %if.then6 - store i64 1, ptr %i, align 8, !dbg !169 - br label %for.cond, !dbg !171 + store i64 1, ptr %i, align 8, !dbg !167 + br label %for.cond, !dbg !169 for.cond: ; preds = %for.inc, %if.end8 - %7 = load i64, ptr %i, align 8, !dbg !172 - %8 = load i64, ptr %row.addr, align 8, !dbg !174 - %cmp9 = icmp ule i64 %7, %8, !dbg !175 - br i1 %cmp9, label %for.body, label %for.end, !dbg !176 + %7 = load i64, ptr %i, align 8, !dbg !170 + %8 = load i64, ptr %row.addr, align 8, !dbg !172 + %cmp9 = icmp ule i64 %7, %8, !dbg !173 + br i1 %cmp9, label %for.body, label %for.end, !dbg !174 for.body: ; preds = %for.cond - %9 = load ptr, ptr %idx, align 8, !dbg !177 - %10 = load i64, ptr %i, align 8, !dbg !179 - %sub = sub i64 %10, 1, !dbg !180 - %arrayidx11 = getelementptr inbounds ptr, ptr %9, i64 %sub, !dbg !177 - %11 = load ptr, ptr %arrayidx11, align 8, !dbg !177 - %12 = load i64, ptr %col.addr, align 8, !dbg !181 - %13 = load i64, ptr %size.addr, align 8, !dbg !182 - %mul12 = mul i64 %12, %13, !dbg !183 - %add.ptr = getelementptr i8, ptr %11, i64 %mul12, !dbg !184 - %14 = load ptr, ptr %idx, align 8, !dbg !185 - %15 = load i64, ptr %i, align 8, !dbg !186 - %arrayidx13 = getelementptr inbounds ptr, ptr %14, i64 %15, !dbg !185 - store ptr %add.ptr, ptr %arrayidx13, align 8, !dbg !187 - br label %for.inc, !dbg !188 + %9 = load ptr, ptr %idx, align 8, !dbg !175 + %10 = load i64, ptr %i, align 8, !dbg !177 + %sub = sub i64 %10, 1, !dbg !178 + %arrayidx11 = getelementptr inbounds nuw ptr, ptr %9, i64 %sub, !dbg !175 + %11 = load ptr, ptr %arrayidx11, align 8, !dbg !175 + %12 = load i64, ptr %col.addr, align 8, !dbg !179 + %13 = load i64, ptr %size.addr, align 8, !dbg !180 + %mul12 = mul i64 %12, %13, !dbg !181 + %add.ptr = getelementptr inbounds nuw i8, ptr %11, i64 %mul12, !dbg !182 + %14 = load ptr, ptr %idx, align 8, !dbg !183 + %15 = load i64, ptr %i, align 8, !dbg !184 + %arrayidx13 = getelementptr inbounds nuw ptr, ptr %14, i64 %15, !dbg !183 + store ptr %add.ptr, ptr %arrayidx13, align 8, !dbg !185 + br label %for.inc, !dbg !186 for.inc: ; preds = %for.body - %16 = load i64, ptr %i, align 8, !dbg !189 - %inc = add i64 %16, 1, !dbg !189 - store i64 %inc, ptr %i, align 8, !dbg !189 - br label %for.cond, !dbg !190, !llvm.loop !191 + %16 = load i64, ptr %i, align 8, !dbg !187 + %inc = add i64 %16, 1, !dbg !187 + store i64 %inc, ptr %i, align 8, !dbg !187 + br label %for.cond, !dbg !188, !llvm.loop !189 for.end: ; preds = %for.cond - %17 = load ptr, ptr %idx, align 8, !dbg !194 - %18 = load i64, ptr %row.addr, align 8, !dbg !194 - %arrayidx14 = getelementptr inbounds ptr, ptr %17, i64 %18, !dbg !194 - %19 = load ptr, ptr %arrayidx14, align 8, !dbg !194 - %20 = load ptr, ptr %idx, align 8, !dbg !194 - %arrayidx15 = getelementptr inbounds ptr, ptr %20, i64 0, !dbg !194 - %21 = load ptr, ptr %arrayidx15, align 8, !dbg !194 - %sub.ptr.lhs.cast = ptrtoint ptr %19 to i64, !dbg !194 - %sub.ptr.rhs.cast = ptrtoint ptr %21 to i64, !dbg !194 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast, !dbg !194 - %22 = load i64, ptr %row.addr, align 8, !dbg !194 - %23 = load i64, ptr %col.addr, align 8, !dbg !194 - %mul16 = mul i64 %22, %23, !dbg !194 - %24 = load i64, ptr %size.addr, align 8, !dbg !194 - %mul17 = mul i64 %mul16, %24, !dbg !194 - %cmp18 = icmp eq i64 %sub.ptr.sub, %mul17, !dbg !194 - br i1 %cmp18, label %if.then20, label %if.else21, !dbg !197 + %17 = load ptr, ptr %idx, align 8, !dbg !192 + %18 = load i64, ptr %row.addr, align 8, !dbg !192 + %arrayidx14 = getelementptr inbounds nuw ptr, ptr %17, i64 %18, !dbg !192 + %19 = load ptr, ptr %arrayidx14, align 8, !dbg !192 + %20 = load ptr, ptr %idx, align 8, !dbg !192 + %arrayidx15 = getelementptr inbounds ptr, ptr %20, i64 0, !dbg !192 + %21 = load ptr, ptr %arrayidx15, align 8, !dbg !192 + %sub.ptr.lhs.cast = ptrtoint ptr %19 to i64, !dbg !192 + %sub.ptr.rhs.cast = ptrtoint ptr %21 to i64, !dbg !192 + %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast, !dbg !192 + %22 = load i64, ptr %row.addr, align 8, !dbg !192 + %23 = load i64, ptr %col.addr, align 8, !dbg !192 + %mul16 = mul i64 %22, %23, !dbg !192 + %24 = load i64, ptr %size.addr, align 8, !dbg !192 + %mul17 = mul i64 %mul16, %24, !dbg !192 + %cmp18 = icmp eq i64 %sub.ptr.sub, %mul17, !dbg !192 + br i1 %cmp18, label %if.then20, label %if.else21, !dbg !192 if.then20: ; preds = %for.end - br label %if.end22, !dbg !197 + br label %if.end22, !dbg !192 if.else21: ; preds = %for.end - call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 56, ptr noundef @__PRETTY_FUNCTION__.__matrix_alloc) #6, !dbg !194 - unreachable, !dbg !194 + call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 56, ptr noundef @__PRETTY_FUNCTION__.__matrix_alloc) #5, !dbg !192 + unreachable, !dbg !192 if.end22: ; preds = %if.then20 - %25 = load ptr, ptr %idx, align 8, !dbg !198 - %26 = load i64, ptr %row.addr, align 8, !dbg !199 - %arrayidx23 = getelementptr inbounds ptr, ptr %25, i64 %26, !dbg !198 - store ptr null, ptr %arrayidx23, align 8, !dbg !200 - %27 = load ptr, ptr %idx, align 8, !dbg !201 - ret ptr %27, !dbg !202 + %25 = load ptr, ptr %idx, align 8, !dbg !195 + %26 = load i64, ptr %row.addr, align 8, !dbg !196 + %arrayidx23 = getelementptr inbounds nuw ptr, ptr %25, i64 %26, !dbg !195 + store ptr null, ptr %arrayidx23, align 8, !dbg !197 + %27 = load ptr, ptr %idx, align 8, !dbg !198 + ret ptr %27, !dbg !199 } ; Function Attrs: noreturn nounwind -declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3 +declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @foo() #0 !dbg !203 { +define dso_local i32 @foo() #0 !dbg !200 { entry: %retval = alloca i32, align 4 - call void @tp_init_vogel(i32 noundef 0, ptr noundef null, i32 noundef 0, ptr noundef null, ptr noundef null, ptr noundef null), !dbg !206 - %0 = load i32, ptr %retval, align 4, !dbg !207 - ret i32 %0, !dbg !207 + call void @tp_init_vogel(i32 noundef 0, ptr noundef null, i32 noundef 0, ptr noundef null, ptr noundef null, ptr noundef null), !dbg !203 + %0 = load i32, ptr %retval, align 4, !dbg !204 + ret i32 %0, !dbg !204 } ; Function Attrs: noinline nounwind optnone uwtable -define internal void @tp_init_vogel(i32 noundef %nrow, ptr noundef %row, i32 noundef %ncol, ptr noundef %col, ptr noundef %cost, ptr noundef %_sol) #0 !dbg !208 { +define internal void @tp_init_vogel(i32 noundef %nrow, ptr noundef %row, i32 noundef %ncol, ptr noundef %col, ptr noundef %cost, ptr noundef %_sol) #0 !dbg !205 { entry: %nrow.addr = alloca i32, align 4 %row.addr = alloca ptr, align 8 @@ -272,1036 +269,1035 @@ entry: %m1_idx103 = alloca i32, align 4 %m2_idx104 = alloca i32, align 4 store i32 %nrow, ptr %nrow.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %nrow.addr, metadata !214, metadata !DIExpression()), !dbg !215 + #dbg_declare(ptr %nrow.addr, !211, !DIExpression(), !212) store ptr %row, ptr %row.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %row.addr, metadata !216, metadata !DIExpression()), !dbg !217 + #dbg_declare(ptr %row.addr, !213, !DIExpression(), !214) store i32 %ncol, ptr %ncol.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %ncol.addr, metadata !218, metadata !DIExpression()), !dbg !219 + #dbg_declare(ptr %ncol.addr, !215, !DIExpression(), !216) store ptr %col, ptr %col.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %col.addr, metadata !220, metadata !DIExpression()), !dbg !221 + #dbg_declare(ptr %col.addr, !217, !DIExpression(), !218) store ptr %cost, ptr %cost.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %cost.addr, metadata !222, metadata !DIExpression()), !dbg !223 + #dbg_declare(ptr %cost.addr, !219, !DIExpression(), !220) store ptr %_sol, ptr %_sol.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %_sol.addr, metadata !224, metadata !DIExpression()), !dbg !225 - call void @llvm.dbg.declare(metadata ptr %r_del, metadata !226, metadata !DIExpression()), !dbg !228 - call void @llvm.dbg.declare(metadata ptr %c_del, metadata !229, metadata !DIExpression()), !dbg !230 - call void @llvm.dbg.declare(metadata ptr %i, metadata !231, metadata !DIExpression()), !dbg !232 - call void @llvm.dbg.declare(metadata ptr %j, metadata !233, metadata !DIExpression()), !dbg !234 - call void @llvm.dbg.declare(metadata ptr %cnt, metadata !235, metadata !DIExpression()), !dbg !236 - call void @llvm.dbg.declare(metadata ptr %lr, metadata !237, metadata !DIExpression()), !dbg !238 - call void @llvm.dbg.declare(metadata ptr %lc, metadata !239, metadata !DIExpression()), !dbg !240 - call void @llvm.dbg.declare(metadata ptr %max, metadata !241, metadata !DIExpression()), !dbg !242 - call void @llvm.dbg.declare(metadata ptr %mrow, metadata !243, metadata !DIExpression()), !dbg !244 - call void @llvm.dbg.declare(metadata ptr %mcol, metadata !245, metadata !DIExpression()), !dbg !246 - call void @llvm.dbg.declare(metadata ptr %sol, metadata !247, metadata !DIExpression()), !dbg !248 - %0 = load i32, ptr %nrow.addr, align 4, !dbg !249 - %call = call ptr @SAFEMALLOC(i32 noundef %0), !dbg !250 - store ptr %call, ptr %r_del, align 8, !dbg !251 - %1 = load i32, ptr %ncol.addr, align 4, !dbg !252 - %call1 = call ptr @SAFEMALLOC(i32 noundef %1), !dbg !253 - store ptr %call1, ptr %c_del, align 8, !dbg !254 - %2 = load i32, ptr %nrow.addr, align 4, !dbg !255 - %conv = sext i32 %2 to i64, !dbg !255 - %3 = load i32, ptr %ncol.addr, align 4, !dbg !255 - %conv2 = sext i32 %3 to i64, !dbg !255 - %call3 = call ptr @__matrix_alloc(i64 noundef %conv, i64 noundef %conv2, i64 noundef 40), !dbg !255 - store ptr %call3, ptr %sol, align 8, !dbg !256 - store i32 0, ptr %i, align 4, !dbg !257 - br label %for.cond, !dbg !259 + #dbg_declare(ptr %_sol.addr, !221, !DIExpression(), !222) + #dbg_declare(ptr %r_del, !223, !DIExpression(), !225) + #dbg_declare(ptr %c_del, !226, !DIExpression(), !227) + #dbg_declare(ptr %i, !228, !DIExpression(), !229) + #dbg_declare(ptr %j, !230, !DIExpression(), !231) + #dbg_declare(ptr %cnt, !232, !DIExpression(), !233) + #dbg_declare(ptr %lr, !234, !DIExpression(), !235) + #dbg_declare(ptr %lc, !236, !DIExpression(), !237) + #dbg_declare(ptr %max, !238, !DIExpression(), !239) + #dbg_declare(ptr %mrow, !240, !DIExpression(), !241) + #dbg_declare(ptr %mcol, !242, !DIExpression(), !243) + #dbg_declare(ptr %sol, !244, !DIExpression(), !245) + %0 = load i32, ptr %nrow.addr, align 4, !dbg !246 + %call = call ptr @SAFEMALLOC(i32 noundef %0), !dbg !247 + store ptr %call, ptr %r_del, align 8, !dbg !248 + %1 = load i32, ptr %ncol.addr, align 4, !dbg !249 + %call1 = call ptr @SAFEMALLOC(i32 noundef %1), !dbg !250 + store ptr %call1, ptr %c_del, align 8, !dbg !251 + %2 = load i32, ptr %nrow.addr, align 4, !dbg !252 + %conv = sext i32 %2 to i64, !dbg !252 + %3 = load i32, ptr %ncol.addr, align 4, !dbg !252 + %conv2 = sext i32 %3 to i64, !dbg !252 + %call3 = call ptr @__matrix_alloc(i64 noundef %conv, i64 noundef %conv2, i64 noundef 40), !dbg !252 + store ptr %call3, ptr %sol, align 8, !dbg !253 + store i32 0, ptr %i, align 4, !dbg !254 + br label %for.cond, !dbg !256 for.cond: ; preds = %for.inc21, %entry - %4 = load i32, ptr %i, align 4, !dbg !260 - %5 = load i32, ptr %nrow.addr, align 4, !dbg !262 - %cmp = icmp slt i32 %4, %5, !dbg !263 - br i1 %cmp, label %for.body, label %for.end23, !dbg !264 + %4 = load i32, ptr %i, align 4, !dbg !257 + %5 = load i32, ptr %nrow.addr, align 4, !dbg !259 + %cmp = icmp slt i32 %4, %5, !dbg !260 + br i1 %cmp, label %for.body, label %for.end23, !dbg !261 for.body: ; preds = %for.cond - store i32 0, ptr %j, align 4, !dbg !265 - br label %for.cond5, !dbg !267 + store i32 0, ptr %j, align 4, !dbg !262 + br label %for.cond5, !dbg !264 for.cond5: ; preds = %for.inc, %for.body - %6 = load i32, ptr %j, align 4, !dbg !268 - %7 = load i32, ptr %ncol.addr, align 4, !dbg !270 - %cmp6 = icmp slt i32 %6, %7, !dbg !271 - br i1 %cmp6, label %for.body8, label %for.end, !dbg !272 + %6 = load i32, ptr %j, align 4, !dbg !265 + %7 = load i32, ptr %ncol.addr, align 4, !dbg !267 + %cmp6 = icmp slt i32 %6, %7, !dbg !268 + br i1 %cmp6, label %for.body8, label %for.end, !dbg !269 for.body8: ; preds = %for.cond5 - %8 = load i32, ptr %i, align 4, !dbg !273 - %9 = load ptr, ptr %sol, align 8, !dbg !275 - %10 = load i32, ptr %i, align 4, !dbg !276 - %idxprom = sext i32 %10 to i64, !dbg !275 - %arrayidx = getelementptr inbounds ptr, ptr %9, i64 %idxprom, !dbg !275 - %11 = load ptr, ptr %arrayidx, align 8, !dbg !275 - %12 = load i32, ptr %j, align 4, !dbg !277 - %idxprom9 = sext i32 %12 to i64, !dbg !275 - %arrayidx10 = getelementptr inbounds %struct.sol, ptr %11, i64 %idxprom9, !dbg !275 - %i11 = getelementptr inbounds %struct.sol, ptr %arrayidx10, i32 0, i32 0, !dbg !278 - store i32 %8, ptr %i11, align 8, !dbg !279 - %13 = load i32, ptr %j, align 4, !dbg !280 - %14 = load ptr, ptr %sol, align 8, !dbg !281 - %15 = load i32, ptr %i, align 4, !dbg !282 - %idxprom12 = sext i32 %15 to i64, !dbg !281 - %arrayidx13 = getelementptr inbounds ptr, ptr %14, i64 %idxprom12, !dbg !281 - %16 = load ptr, ptr %arrayidx13, align 8, !dbg !281 - %17 = load i32, ptr %j, align 4, !dbg !283 - %idxprom14 = sext i32 %17 to i64, !dbg !281 - %arrayidx15 = getelementptr inbounds %struct.sol, ptr %16, i64 %idxprom14, !dbg !281 - %j16 = getelementptr inbounds %struct.sol, ptr %arrayidx15, i32 0, i32 1, !dbg !284 - store i32 %13, ptr %j16, align 4, !dbg !285 - %18 = load ptr, ptr %sol, align 8, !dbg !286 - %19 = load i32, ptr %i, align 4, !dbg !287 - %idxprom17 = sext i32 %19 to i64, !dbg !286 - %arrayidx18 = getelementptr inbounds ptr, ptr %18, i64 %idxprom17, !dbg !286 - %20 = load ptr, ptr %arrayidx18, align 8, !dbg !286 - %21 = load i32, ptr %j, align 4, !dbg !288 - %idxprom19 = sext i32 %21 to i64, !dbg !286 - %arrayidx20 = getelementptr inbounds %struct.sol, ptr %20, i64 %idxprom19, !dbg !286 - %flow = getelementptr inbounds %struct.sol, ptr %arrayidx20, i32 0, i32 3, !dbg !289 - store i32 0, ptr %flow, align 4, !dbg !290 - br label %for.inc, !dbg !291 + %8 = load i32, ptr %i, align 4, !dbg !270 + %9 = load ptr, ptr %sol, align 8, !dbg !272 + %10 = load i32, ptr %i, align 4, !dbg !273 + %idxprom = sext i32 %10 to i64, !dbg !272 + %arrayidx = getelementptr inbounds ptr, ptr %9, i64 %idxprom, !dbg !272 + %11 = load ptr, ptr %arrayidx, align 8, !dbg !272 + %12 = load i32, ptr %j, align 4, !dbg !274 + %idxprom9 = sext i32 %12 to i64, !dbg !272 + %arrayidx10 = getelementptr inbounds %struct.sol, ptr %11, i64 %idxprom9, !dbg !272 + %i11 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx10, i32 0, i32 0, !dbg !275 + store i32 %8, ptr %i11, align 8, !dbg !276 + %13 = load i32, ptr %j, align 4, !dbg !277 + %14 = load ptr, ptr %sol, align 8, !dbg !278 + %15 = load i32, ptr %i, align 4, !dbg !279 + %idxprom12 = sext i32 %15 to i64, !dbg !278 + %arrayidx13 = getelementptr inbounds ptr, ptr %14, i64 %idxprom12, !dbg !278 + %16 = load ptr, ptr %arrayidx13, align 8, !dbg !278 + %17 = load i32, ptr %j, align 4, !dbg !280 + %idxprom14 = sext i32 %17 to i64, !dbg !278 + %arrayidx15 = getelementptr inbounds %struct.sol, ptr %16, i64 %idxprom14, !dbg !278 + %j16 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx15, i32 0, i32 1, !dbg !281 + store i32 %13, ptr %j16, align 4, !dbg !282 + %18 = load ptr, ptr %sol, align 8, !dbg !283 + %19 = load i32, ptr %i, align 4, !dbg !284 + %idxprom17 = sext i32 %19 to i64, !dbg !283 + %arrayidx18 = getelementptr inbounds ptr, ptr %18, i64 %idxprom17, !dbg !283 + %20 = load ptr, ptr %arrayidx18, align 8, !dbg !283 + %21 = load i32, ptr %j, align 4, !dbg !285 + %idxprom19 = sext i32 %21 to i64, !dbg !283 + %arrayidx20 = getelementptr inbounds %struct.sol, ptr %20, i64 %idxprom19, !dbg !283 + %flow = getelementptr inbounds nuw %struct.sol, ptr %arrayidx20, i32 0, i32 3, !dbg !286 + store i32 0, ptr %flow, align 4, !dbg !287 + br label %for.inc, !dbg !288 for.inc: ; preds = %for.body8 - %22 = load i32, ptr %j, align 4, !dbg !292 - %inc = add nsw i32 %22, 1, !dbg !292 - store i32 %inc, ptr %j, align 4, !dbg !292 - br label %for.cond5, !dbg !293, !llvm.loop !294 + %22 = load i32, ptr %j, align 4, !dbg !289 + %inc = add nsw i32 %22, 1, !dbg !289 + store i32 %inc, ptr %j, align 4, !dbg !289 + br label %for.cond5, !dbg !290, !llvm.loop !291 for.end: ; preds = %for.cond5 - br label %for.inc21, !dbg !295 + br label %for.inc21, !dbg !292 for.inc21: ; preds = %for.end - %23 = load i32, ptr %i, align 4, !dbg !296 - %inc22 = add nsw i32 %23, 1, !dbg !296 - store i32 %inc22, ptr %i, align 4, !dbg !296 - br label %for.cond, !dbg !297, !llvm.loop !298 + %23 = load i32, ptr %i, align 4, !dbg !293 + %inc22 = add nsw i32 %23, 1, !dbg !293 + store i32 %inc22, ptr %i, align 4, !dbg !293 + br label %for.cond, !dbg !294, !llvm.loop !295 for.end23: ; preds = %for.cond - %24 = load i32, ptr %nrow.addr, align 4, !dbg !300 - store i32 %24, ptr %lr, align 4, !dbg !301 - %25 = load i32, ptr %ncol.addr, align 4, !dbg !302 - store i32 %25, ptr %lc, align 4, !dbg !303 - br label %while.cond, !dbg !304 + %24 = load i32, ptr %nrow.addr, align 4, !dbg !297 + store i32 %24, ptr %lr, align 4, !dbg !298 + %25 = load i32, ptr %ncol.addr, align 4, !dbg !299 + store i32 %25, ptr %lc, align 4, !dbg !300 + br label %while.cond, !dbg !301 while.cond: ; preds = %if.end262, %for.end23 - %26 = load i32, ptr %lr, align 4, !dbg !305 - %27 = load i32, ptr %lc, align 4, !dbg !306 - %add = add nsw i32 %26, %27, !dbg !307 - %cmp24 = icmp sgt i32 %add, 2, !dbg !308 - br i1 %cmp24, label %while.body, label %while.end, !dbg !304 + %26 = load i32, ptr %lr, align 4, !dbg !302 + %27 = load i32, ptr %lc, align 4, !dbg !303 + %add = add nsw i32 %26, %27, !dbg !304 + %cmp24 = icmp sgt i32 %add, 2, !dbg !305 + br i1 %cmp24, label %while.body, label %while.end, !dbg !301 while.body: ; preds = %while.cond - store float 0.000000e+00, ptr %max, align 4, !dbg !309 - store i32 -1, ptr %mcol, align 4, !dbg !311 - store i32 -1, ptr %mrow, align 4, !dbg !312 - store i32 0, ptr %i, align 4, !dbg !313 - br label %for.cond26, !dbg !315 + store float 0.000000e+00, ptr %max, align 4, !dbg !306 + store i32 -1, ptr %mcol, align 4, !dbg !308 + store i32 -1, ptr %mrow, align 4, !dbg !309 + store i32 0, ptr %i, align 4, !dbg !310 + br label %for.cond26, !dbg !312 for.cond26: ; preds = %for.inc90, %while.body - %28 = load i32, ptr %i, align 4, !dbg !316 - %29 = load i32, ptr %nrow.addr, align 4, !dbg !318 - %cmp27 = icmp slt i32 %28, %29, !dbg !319 - br i1 %cmp27, label %for.body29, label %for.end92, !dbg !320 + %28 = load i32, ptr %i, align 4, !dbg !313 + %29 = load i32, ptr %nrow.addr, align 4, !dbg !315 + %cmp27 = icmp slt i32 %28, %29, !dbg !316 + br i1 %cmp27, label %for.body29, label %for.end92, !dbg !317 for.body29: ; preds = %for.cond26 - %30 = load ptr, ptr %r_del, align 8, !dbg !321 - %31 = load i32, ptr %i, align 4, !dbg !321 - %idxprom30 = sext i32 %31 to i64, !dbg !321 - %arrayidx31 = getelementptr inbounds i8, ptr %30, i64 %idxprom30, !dbg !321 - %32 = load i8, ptr %arrayidx31, align 1, !dbg !321 - %tobool = icmp ne i8 %32, 0, !dbg !321 - br i1 %tobool, label %if.end89, label %if.then, !dbg !323 + %30 = load ptr, ptr %r_del, align 8, !dbg !318 + %31 = load i32, ptr %i, align 4, !dbg !318 + %idxprom30 = sext i32 %31 to i64, !dbg !318 + %arrayidx31 = getelementptr inbounds i8, ptr %30, i64 %idxprom30, !dbg !318 + %32 = load i8, ptr %arrayidx31, align 1, !dbg !318 + %tobool = icmp ne i8 %32, 0, !dbg !318 + br i1 %tobool, label %if.end89, label %if.then, !dbg !320 if.then: ; preds = %for.body29 - call void @llvm.dbg.declare(metadata ptr %m1, metadata !324, metadata !DIExpression()), !dbg !326 - call void @llvm.dbg.declare(metadata ptr %m2, metadata !327, metadata !DIExpression()), !dbg !328 - call void @llvm.dbg.declare(metadata ptr %m1_idx, metadata !329, metadata !DIExpression()), !dbg !330 - call void @llvm.dbg.declare(metadata ptr %m2_idx, metadata !331, metadata !DIExpression()), !dbg !332 - store float 0.000000e+00, ptr %m2, align 4, !dbg !333 - store float 0.000000e+00, ptr %m1, align 4, !dbg !334 - store i32 -1, ptr %m2_idx, align 4, !dbg !335 - store i32 -1, ptr %m1_idx, align 4, !dbg !336 - store i32 0, ptr %j, align 4, !dbg !337 - br label %for.cond32, !dbg !339 + #dbg_declare(ptr %m1, !321, !DIExpression(), !323) + #dbg_declare(ptr %m2, !324, !DIExpression(), !325) + #dbg_declare(ptr %m1_idx, !326, !DIExpression(), !327) + #dbg_declare(ptr %m2_idx, !328, !DIExpression(), !329) + store float 0.000000e+00, ptr %m2, align 4, !dbg !330 + store float 0.000000e+00, ptr %m1, align 4, !dbg !331 + store i32 -1, ptr %m2_idx, align 4, !dbg !332 + store i32 -1, ptr %m1_idx, align 4, !dbg !333 + store i32 0, ptr %j, align 4, !dbg !334 + br label %for.cond32, !dbg !336 for.cond32: ; preds = %for.inc69, %if.then - %33 = load i32, ptr %j, align 4, !dbg !340 - %34 = load i32, ptr %ncol.addr, align 4, !dbg !342 - %cmp33 = icmp slt i32 %33, %34, !dbg !343 - br i1 %cmp33, label %for.body35, label %for.end71, !dbg !344 + %33 = load i32, ptr %j, align 4, !dbg !337 + %34 = load i32, ptr %ncol.addr, align 4, !dbg !339 + %cmp33 = icmp slt i32 %33, %34, !dbg !340 + br i1 %cmp33, label %for.body35, label %for.end71, !dbg !341 for.body35: ; preds = %for.cond32 - %35 = load ptr, ptr %c_del, align 8, !dbg !345 - %36 = load i32, ptr %j, align 4, !dbg !345 - %idxprom36 = sext i32 %36 to i64, !dbg !345 - %arrayidx37 = getelementptr inbounds i8, ptr %35, i64 %idxprom36, !dbg !345 - %37 = load i8, ptr %arrayidx37, align 1, !dbg !345 - %tobool38 = icmp ne i8 %37, 0, !dbg !345 - br i1 %tobool38, label %if.end68, label %if.then39, !dbg !347 + %35 = load ptr, ptr %c_del, align 8, !dbg !342 + %36 = load i32, ptr %j, align 4, !dbg !342 + %idxprom36 = sext i32 %36 to i64, !dbg !342 + %arrayidx37 = getelementptr inbounds i8, ptr %35, i64 %idxprom36, !dbg !342 + %37 = load i8, ptr %arrayidx37, align 1, !dbg !342 + %tobool38 = icmp ne i8 %37, 0, !dbg !342 + br i1 %tobool38, label %if.end68, label %if.then39, !dbg !344 if.then39: ; preds = %for.body35 - %38 = load i32, ptr %m2_idx, align 4, !dbg !348 - %cmp40 = icmp slt i32 %38, 0, !dbg !351 - br i1 %cmp40, label %if.then48, label %lor.lhs.false, !dbg !352 + %38 = load i32, ptr %m2_idx, align 4, !dbg !345 + %cmp40 = icmp slt i32 %38, 0, !dbg !348 + br i1 %cmp40, label %if.then48, label %lor.lhs.false, !dbg !349 lor.lhs.false: ; preds = %if.then39 - %39 = load ptr, ptr %cost.addr, align 8, !dbg !353 - %40 = load i32, ptr %i, align 4, !dbg !354 - %idxprom42 = sext i32 %40 to i64, !dbg !353 - %arrayidx43 = getelementptr inbounds ptr, ptr %39, i64 %idxprom42, !dbg !353 - %41 = load ptr, ptr %arrayidx43, align 8, !dbg !353 - %42 = load i32, ptr %j, align 4, !dbg !355 - %idxprom44 = sext i32 %42 to i64, !dbg !353 - %arrayidx45 = getelementptr inbounds float, ptr %41, i64 %idxprom44, !dbg !353 - %43 = load float, ptr %arrayidx45, align 4, !dbg !353 - %44 = load float, ptr %m2, align 4, !dbg !356 - %cmp46 = fcmp olt float %43, %44, !dbg !357 - br i1 %cmp46, label %if.then48, label %if.end67, !dbg !358 + %39 = load ptr, ptr %cost.addr, align 8, !dbg !350 + %40 = load i32, ptr %i, align 4, !dbg !351 + %idxprom42 = sext i32 %40 to i64, !dbg !350 + %arrayidx43 = getelementptr inbounds ptr, ptr %39, i64 %idxprom42, !dbg !350 + %41 = load ptr, ptr %arrayidx43, align 8, !dbg !350 + %42 = load i32, ptr %j, align 4, !dbg !352 + %idxprom44 = sext i32 %42 to i64, !dbg !350 + %arrayidx45 = getelementptr inbounds float, ptr %41, i64 %idxprom44, !dbg !350 + %43 = load float, ptr %arrayidx45, align 4, !dbg !350 + %44 = load float, ptr %m2, align 4, !dbg !353 + %cmp46 = fcmp olt float %43, %44, !dbg !354 + br i1 %cmp46, label %if.then48, label %if.end67, !dbg !349 if.then48: ; preds = %lor.lhs.false, %if.then39 - %45 = load i32, ptr %m1_idx, align 4, !dbg !359 - %cmp49 = icmp slt i32 %45, 0, !dbg !362 - br i1 %cmp49, label %if.then58, label %lor.lhs.false51, !dbg !363 + %45 = load i32, ptr %m1_idx, align 4, !dbg !355 + %cmp49 = icmp slt i32 %45, 0, !dbg !358 + br i1 %cmp49, label %if.then58, label %lor.lhs.false51, !dbg !359 lor.lhs.false51: ; preds = %if.then48 - %46 = load ptr, ptr %cost.addr, align 8, !dbg !364 - %47 = load i32, ptr %i, align 4, !dbg !365 - %idxprom52 = sext i32 %47 to i64, !dbg !364 - %arrayidx53 = getelementptr inbounds ptr, ptr %46, i64 %idxprom52, !dbg !364 - %48 = load ptr, ptr %arrayidx53, align 8, !dbg !364 - %49 = load i32, ptr %j, align 4, !dbg !366 - %idxprom54 = sext i32 %49 to i64, !dbg !364 - %arrayidx55 = getelementptr inbounds float, ptr %48, i64 %idxprom54, !dbg !364 - %50 = load float, ptr %arrayidx55, align 4, !dbg !364 - %51 = load float, ptr %m1, align 4, !dbg !367 - %cmp56 = fcmp olt float %50, %51, !dbg !368 - br i1 %cmp56, label %if.then58, label %if.else, !dbg !369 + %46 = load ptr, ptr %cost.addr, align 8, !dbg !360 + %47 = load i32, ptr %i, align 4, !dbg !361 + %idxprom52 = sext i32 %47 to i64, !dbg !360 + %arrayidx53 = getelementptr inbounds ptr, ptr %46, i64 %idxprom52, !dbg !360 + %48 = load ptr, ptr %arrayidx53, align 8, !dbg !360 + %49 = load i32, ptr %j, align 4, !dbg !362 + %idxprom54 = sext i32 %49 to i64, !dbg !360 + %arrayidx55 = getelementptr inbounds float, ptr %48, i64 %idxprom54, !dbg !360 + %50 = load float, ptr %arrayidx55, align 4, !dbg !360 + %51 = load float, ptr %m1, align 4, !dbg !363 + %cmp56 = fcmp olt float %50, %51, !dbg !364 + br i1 %cmp56, label %if.then58, label %if.else, !dbg !359 if.then58: ; preds = %lor.lhs.false51, %if.then48 - %52 = load float, ptr %m1, align 4, !dbg !370 - store float %52, ptr %m2, align 4, !dbg !372 - %53 = load i32, ptr %m1_idx, align 4, !dbg !373 - store i32 %53, ptr %m2_idx, align 4, !dbg !374 - %54 = load ptr, ptr %cost.addr, align 8, !dbg !375 - %55 = load i32, ptr %i, align 4, !dbg !376 - %idxprom59 = sext i32 %55 to i64, !dbg !375 - %arrayidx60 = getelementptr inbounds ptr, ptr %54, i64 %idxprom59, !dbg !375 - %56 = load ptr, ptr %arrayidx60, align 8, !dbg !375 - %57 = load i32, ptr %j, align 4, !dbg !377 - %idxprom61 = sext i32 %57 to i64, !dbg !375 - %arrayidx62 = getelementptr inbounds float, ptr %56, i64 %idxprom61, !dbg !375 - %58 = load float, ptr %arrayidx62, align 4, !dbg !375 - store float %58, ptr %m1, align 4, !dbg !378 - %59 = load i32, ptr %j, align 4, !dbg !379 - store i32 %59, ptr %m1_idx, align 4, !dbg !380 - br label %if.end, !dbg !381 + %52 = load float, ptr %m1, align 4, !dbg !365 + store float %52, ptr %m2, align 4, !dbg !367 + %53 = load i32, ptr %m1_idx, align 4, !dbg !368 + store i32 %53, ptr %m2_idx, align 4, !dbg !369 + %54 = load ptr, ptr %cost.addr, align 8, !dbg !370 + %55 = load i32, ptr %i, align 4, !dbg !371 + %idxprom59 = sext i32 %55 to i64, !dbg !370 + %arrayidx60 = getelementptr inbounds ptr, ptr %54, i64 %idxprom59, !dbg !370 + %56 = load ptr, ptr %arrayidx60, align 8, !dbg !370 + %57 = load i32, ptr %j, align 4, !dbg !372 + %idxprom61 = sext i32 %57 to i64, !dbg !370 + %arrayidx62 = getelementptr inbounds float, ptr %56, i64 %idxprom61, !dbg !370 + %58 = load float, ptr %arrayidx62, align 4, !dbg !370 + store float %58, ptr %m1, align 4, !dbg !373 + %59 = load i32, ptr %j, align 4, !dbg !374 + store i32 %59, ptr %m1_idx, align 4, !dbg !375 + br label %if.end, !dbg !376 if.else: ; preds = %lor.lhs.false51 - %60 = load ptr, ptr %cost.addr, align 8, !dbg !382 - %61 = load i32, ptr %i, align 4, !dbg !384 - %idxprom63 = sext i32 %61 to i64, !dbg !382 - %arrayidx64 = getelementptr inbounds ptr, ptr %60, i64 %idxprom63, !dbg !382 - %62 = load ptr, ptr %arrayidx64, align 8, !dbg !382 - %63 = load i32, ptr %j, align 4, !dbg !385 - %idxprom65 = sext i32 %63 to i64, !dbg !382 - %arrayidx66 = getelementptr inbounds float, ptr %62, i64 %idxprom65, !dbg !382 - %64 = load float, ptr %arrayidx66, align 4, !dbg !382 - store float %64, ptr %m2, align 4, !dbg !386 - %65 = load i32, ptr %j, align 4, !dbg !387 - store i32 %65, ptr %m2_idx, align 4, !dbg !388 + %60 = load ptr, ptr %cost.addr, align 8, !dbg !377 + %61 = load i32, ptr %i, align 4, !dbg !379 + %idxprom63 = sext i32 %61 to i64, !dbg !377 + %arrayidx64 = getelementptr inbounds ptr, ptr %60, i64 %idxprom63, !dbg !377 + %62 = load ptr, ptr %arrayidx64, align 8, !dbg !377 + %63 = load i32, ptr %j, align 4, !dbg !380 + %idxprom65 = sext i32 %63 to i64, !dbg !377 + %arrayidx66 = getelementptr inbounds float, ptr %62, i64 %idxprom65, !dbg !377 + %64 = load float, ptr %arrayidx66, align 4, !dbg !377 + store float %64, ptr %m2, align 4, !dbg !381 + %65 = load i32, ptr %j, align 4, !dbg !382 + store i32 %65, ptr %m2_idx, align 4, !dbg !383 br label %if.end if.end: ; preds = %if.else, %if.then58 - br label %if.end67, !dbg !389 + br label %if.end67, !dbg !384 if.end67: ; preds = %if.end, %lor.lhs.false - br label %if.end68, !dbg !390 + br label %if.end68, !dbg !385 if.end68: ; preds = %if.end67, %for.body35 - br label %for.inc69, !dbg !345 + br label %for.inc69, !dbg !342 for.inc69: ; preds = %if.end68 - %66 = load i32, ptr %j, align 4, !dbg !391 - %inc70 = add nsw i32 %66, 1, !dbg !391 - store i32 %inc70, ptr %j, align 4, !dbg !391 - br label %for.cond32, !dbg !392, !llvm.loop !393 + %66 = load i32, ptr %j, align 4, !dbg !386 + %inc70 = add nsw i32 %66, 1, !dbg !386 + store i32 %inc70, ptr %j, align 4, !dbg !386 + br label %for.cond32, !dbg !387, !llvm.loop !388 for.end71: ; preds = %for.cond32 - %67 = load i32, ptr %m1_idx, align 4, !dbg !395 - %cmp72 = icmp sge i32 %67, 0, !dbg !395 - br i1 %cmp72, label %if.then74, label %if.else75, !dbg !398 + %67 = load i32, ptr %m1_idx, align 4, !dbg !390 + %cmp72 = icmp sge i32 %67, 0, !dbg !390 + br i1 %cmp72, label %if.then74, label %if.else75, !dbg !390 if.then74: ; preds = %for.end71 - br label %if.end76, !dbg !398 + br label %if.end76, !dbg !390 if.else75: ; preds = %for.end71 - call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 130, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !395 - unreachable, !dbg !395 + call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 130, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !390 + unreachable, !dbg !390 if.end76: ; preds = %if.then74 - %68 = load i32, ptr %m2_idx, align 4, !dbg !399 - %cmp77 = icmp slt i32 %68, 0, !dbg !401 - br i1 %cmp77, label %if.then79, label %if.end80, !dbg !402 + %68 = load i32, ptr %m2_idx, align 4, !dbg !393 + %cmp77 = icmp slt i32 %68, 0, !dbg !395 + br i1 %cmp77, label %if.then79, label %if.end80, !dbg !395 if.then79: ; preds = %if.end76 - br label %for.inc90, !dbg !403 + br label %for.inc90, !dbg !396 if.end80: ; preds = %if.end76 - %69 = load i32, ptr %mrow, align 4, !dbg !404 - %cmp81 = icmp slt i32 %69, 0, !dbg !406 - br i1 %cmp81, label %if.then86, label %lor.lhs.false83, !dbg !407 + %69 = load i32, ptr %mrow, align 4, !dbg !397 + %cmp81 = icmp slt i32 %69, 0, !dbg !399 + br i1 %cmp81, label %if.then86, label %lor.lhs.false83, !dbg !400 lor.lhs.false83: ; preds = %if.end80 - %70 = load float, ptr %m2, align 4, !dbg !408 - %71 = load float, ptr %m1, align 4, !dbg !409 - %sub = fsub float %70, %71, !dbg !410 - %72 = load float, ptr %max, align 4, !dbg !411 - %cmp84 = fcmp ogt float %sub, %72, !dbg !412 - br i1 %cmp84, label %if.then86, label %if.end88, !dbg !413 + %70 = load float, ptr %m2, align 4, !dbg !401 + %71 = load float, ptr %m1, align 4, !dbg !402 + %sub = fsub float %70, %71, !dbg !403 + %72 = load float, ptr %max, align 4, !dbg !404 + %cmp84 = fcmp ogt float %sub, %72, !dbg !405 + br i1 %cmp84, label %if.then86, label %if.end88, !dbg !400 if.then86: ; preds = %lor.lhs.false83, %if.end80 - %73 = load float, ptr %m2, align 4, !dbg !414 - %74 = load float, ptr %m1, align 4, !dbg !416 - %sub87 = fsub float %73, %74, !dbg !417 - store float %sub87, ptr %max, align 4, !dbg !418 - %75 = load i32, ptr %i, align 4, !dbg !419 - store i32 %75, ptr %mrow, align 4, !dbg !420 - %76 = load i32, ptr %m1_idx, align 4, !dbg !421 - store i32 %76, ptr %mcol, align 4, !dbg !422 - br label %if.end88, !dbg !423 + %73 = load float, ptr %m2, align 4, !dbg !406 + %74 = load float, ptr %m1, align 4, !dbg !408 + %sub87 = fsub float %73, %74, !dbg !409 + store float %sub87, ptr %max, align 4, !dbg !410 + %75 = load i32, ptr %i, align 4, !dbg !411 + store i32 %75, ptr %mrow, align 4, !dbg !412 + %76 = load i32, ptr %m1_idx, align 4, !dbg !413 + store i32 %76, ptr %mcol, align 4, !dbg !414 + br label %if.end88, !dbg !415 if.end88: ; preds = %if.then86, %lor.lhs.false83 - br label %if.end89, !dbg !424 + br label %if.end89, !dbg !416 if.end89: ; preds = %if.end88, %for.body29 - br label %for.inc90, !dbg !321 + br label %for.inc90, !dbg !318 for.inc90: ; preds = %if.end89, %if.then79 - %77 = load i32, ptr %i, align 4, !dbg !425 - %inc91 = add nsw i32 %77, 1, !dbg !425 - store i32 %inc91, ptr %i, align 4, !dbg !425 - br label %for.cond26, !dbg !426, !llvm.loop !427 + %77 = load i32, ptr %i, align 4, !dbg !417 + %inc91 = add nsw i32 %77, 1, !dbg !417 + store i32 %inc91, ptr %i, align 4, !dbg !417 + br label %for.cond26, !dbg !418, !llvm.loop !419 for.end92: ; preds = %for.cond26 - store i32 0, ptr %i, align 4, !dbg !429 - br label %for.cond93, !dbg !431 + store i32 0, ptr %i, align 4, !dbg !421 + br label %for.cond93, !dbg !423 for.cond93: ; preds = %for.inc167, %for.end92 - %78 = load i32, ptr %i, align 4, !dbg !432 - %79 = load i32, ptr %ncol.addr, align 4, !dbg !434 - %cmp94 = icmp slt i32 %78, %79, !dbg !435 - br i1 %cmp94, label %for.body96, label %for.end169, !dbg !436 + %78 = load i32, ptr %i, align 4, !dbg !424 + %79 = load i32, ptr %ncol.addr, align 4, !dbg !426 + %cmp94 = icmp slt i32 %78, %79, !dbg !427 + br i1 %cmp94, label %for.body96, label %for.end169, !dbg !428 for.body96: ; preds = %for.cond93 - %80 = load ptr, ptr %c_del, align 8, !dbg !437 - %81 = load i32, ptr %i, align 4, !dbg !437 - %idxprom97 = sext i32 %81 to i64, !dbg !437 - %arrayidx98 = getelementptr inbounds i8, ptr %80, i64 %idxprom97, !dbg !437 - %82 = load i8, ptr %arrayidx98, align 1, !dbg !437 - %tobool99 = icmp ne i8 %82, 0, !dbg !437 - br i1 %tobool99, label %if.end166, label %if.then100, !dbg !439 + %80 = load ptr, ptr %c_del, align 8, !dbg !429 + %81 = load i32, ptr %i, align 4, !dbg !429 + %idxprom97 = sext i32 %81 to i64, !dbg !429 + %arrayidx98 = getelementptr inbounds i8, ptr %80, i64 %idxprom97, !dbg !429 + %82 = load i8, ptr %arrayidx98, align 1, !dbg !429 + %tobool99 = icmp ne i8 %82, 0, !dbg !429 + br i1 %tobool99, label %if.end166, label %if.then100, !dbg !431 if.then100: ; preds = %for.body96 - call void @llvm.dbg.declare(metadata ptr %m1101, metadata !440, metadata !DIExpression()), !dbg !442 - call void @llvm.dbg.declare(metadata ptr %m2102, metadata !443, metadata !DIExpression()), !dbg !444 - call void @llvm.dbg.declare(metadata ptr %m1_idx103, metadata !445, metadata !DIExpression()), !dbg !446 - call void @llvm.dbg.declare(metadata ptr %m2_idx104, metadata !447, metadata !DIExpression()), !dbg !448 - store float 0.000000e+00, ptr %m2102, align 4, !dbg !449 - store float 0.000000e+00, ptr %m1101, align 4, !dbg !450 - store i32 -1, ptr %m2_idx104, align 4, !dbg !451 - store i32 -1, ptr %m1_idx103, align 4, !dbg !452 - store i32 0, ptr %j, align 4, !dbg !453 - br label %for.cond105, !dbg !455 + #dbg_declare(ptr %m1101, !432, !DIExpression(), !434) + #dbg_declare(ptr %m2102, !435, !DIExpression(), !436) + #dbg_declare(ptr %m1_idx103, !437, !DIExpression(), !438) + #dbg_declare(ptr %m2_idx104, !439, !DIExpression(), !440) + store float 0.000000e+00, ptr %m2102, align 4, !dbg !441 + store float 0.000000e+00, ptr %m1101, align 4, !dbg !442 + store i32 -1, ptr %m2_idx104, align 4, !dbg !443 + store i32 -1, ptr %m1_idx103, align 4, !dbg !444 + store i32 0, ptr %j, align 4, !dbg !445 + br label %for.cond105, !dbg !447 for.cond105: ; preds = %for.inc145, %if.then100 - %83 = load i32, ptr %j, align 4, !dbg !456 - %84 = load i32, ptr %nrow.addr, align 4, !dbg !458 - %cmp106 = icmp slt i32 %83, %84, !dbg !459 - br i1 %cmp106, label %for.body108, label %for.end147, !dbg !460 + %83 = load i32, ptr %j, align 4, !dbg !448 + %84 = load i32, ptr %nrow.addr, align 4, !dbg !450 + %cmp106 = icmp slt i32 %83, %84, !dbg !451 + br i1 %cmp106, label %for.body108, label %for.end147, !dbg !452 for.body108: ; preds = %for.cond105 - %85 = load ptr, ptr %r_del, align 8, !dbg !461 - %86 = load i32, ptr %j, align 4, !dbg !461 - %idxprom109 = sext i32 %86 to i64, !dbg !461 - %arrayidx110 = getelementptr inbounds i8, ptr %85, i64 %idxprom109, !dbg !461 - %87 = load i8, ptr %arrayidx110, align 1, !dbg !461 - %tobool111 = icmp ne i8 %87, 0, !dbg !461 - br i1 %tobool111, label %if.end144, label %if.then112, !dbg !463 + %85 = load ptr, ptr %r_del, align 8, !dbg !453 + %86 = load i32, ptr %j, align 4, !dbg !453 + %idxprom109 = sext i32 %86 to i64, !dbg !453 + %arrayidx110 = getelementptr inbounds i8, ptr %85, i64 %idxprom109, !dbg !453 + %87 = load i8, ptr %arrayidx110, align 1, !dbg !453 + %tobool111 = icmp ne i8 %87, 0, !dbg !453 + br i1 %tobool111, label %if.end144, label %if.then112, !dbg !455 if.then112: ; preds = %for.body108 - %88 = load i32, ptr %m2_idx104, align 4, !dbg !464 - %cmp113 = icmp slt i32 %88, 0, !dbg !467 - br i1 %cmp113, label %if.then122, label %lor.lhs.false115, !dbg !468 + %88 = load i32, ptr %m2_idx104, align 4, !dbg !456 + %cmp113 = icmp slt i32 %88, 0, !dbg !459 + br i1 %cmp113, label %if.then122, label %lor.lhs.false115, !dbg !460 lor.lhs.false115: ; preds = %if.then112 - %89 = load ptr, ptr %cost.addr, align 8, !dbg !469 - %90 = load i32, ptr %j, align 4, !dbg !470 - %idxprom116 = sext i32 %90 to i64, !dbg !469 - %arrayidx117 = getelementptr inbounds ptr, ptr %89, i64 %idxprom116, !dbg !469 - %91 = load ptr, ptr %arrayidx117, align 8, !dbg !469 - %92 = load i32, ptr %i, align 4, !dbg !471 - %idxprom118 = sext i32 %92 to i64, !dbg !469 - %arrayidx119 = getelementptr inbounds float, ptr %91, i64 %idxprom118, !dbg !469 - %93 = load float, ptr %arrayidx119, align 4, !dbg !469 - %94 = load float, ptr %m2102, align 4, !dbg !472 - %cmp120 = fcmp olt float %93, %94, !dbg !473 - br i1 %cmp120, label %if.then122, label %if.end143, !dbg !474 + %89 = load ptr, ptr %cost.addr, align 8, !dbg !461 + %90 = load i32, ptr %j, align 4, !dbg !462 + %idxprom116 = sext i32 %90 to i64, !dbg !461 + %arrayidx117 = getelementptr inbounds ptr, ptr %89, i64 %idxprom116, !dbg !461 + %91 = load ptr, ptr %arrayidx117, align 8, !dbg !461 + %92 = load i32, ptr %i, align 4, !dbg !463 + %idxprom118 = sext i32 %92 to i64, !dbg !461 + %arrayidx119 = getelementptr inbounds float, ptr %91, i64 %idxprom118, !dbg !461 + %93 = load float, ptr %arrayidx119, align 4, !dbg !461 + %94 = load float, ptr %m2102, align 4, !dbg !464 + %cmp120 = fcmp olt float %93, %94, !dbg !465 + br i1 %cmp120, label %if.then122, label %if.end143, !dbg !460 if.then122: ; preds = %lor.lhs.false115, %if.then112 - %95 = load i32, ptr %m1_idx103, align 4, !dbg !475 - %cmp123 = icmp slt i32 %95, 0, !dbg !478 - br i1 %cmp123, label %if.then132, label %lor.lhs.false125, !dbg !479 + %95 = load i32, ptr %m1_idx103, align 4, !dbg !466 + %cmp123 = icmp slt i32 %95, 0, !dbg !469 + br i1 %cmp123, label %if.then132, label %lor.lhs.false125, !dbg !470 lor.lhs.false125: ; preds = %if.then122 - %96 = load ptr, ptr %cost.addr, align 8, !dbg !480 - %97 = load i32, ptr %j, align 4, !dbg !481 - %idxprom126 = sext i32 %97 to i64, !dbg !480 - %arrayidx127 = getelementptr inbounds ptr, ptr %96, i64 %idxprom126, !dbg !480 - %98 = load ptr, ptr %arrayidx127, align 8, !dbg !480 - %99 = load i32, ptr %i, align 4, !dbg !482 - %idxprom128 = sext i32 %99 to i64, !dbg !480 - %arrayidx129 = getelementptr inbounds float, ptr %98, i64 %idxprom128, !dbg !480 - %100 = load float, ptr %arrayidx129, align 4, !dbg !480 - %101 = load float, ptr %m1101, align 4, !dbg !483 - %cmp130 = fcmp olt float %100, %101, !dbg !484 - br i1 %cmp130, label %if.then132, label %if.else137, !dbg !485 + %96 = load ptr, ptr %cost.addr, align 8, !dbg !471 + %97 = load i32, ptr %j, align 4, !dbg !472 + %idxprom126 = sext i32 %97 to i64, !dbg !471 + %arrayidx127 = getelementptr inbounds ptr, ptr %96, i64 %idxprom126, !dbg !471 + %98 = load ptr, ptr %arrayidx127, align 8, !dbg !471 + %99 = load i32, ptr %i, align 4, !dbg !473 + %idxprom128 = sext i32 %99 to i64, !dbg !471 + %arrayidx129 = getelementptr inbounds float, ptr %98, i64 %idxprom128, !dbg !471 + %100 = load float, ptr %arrayidx129, align 4, !dbg !471 + %101 = load float, ptr %m1101, align 4, !dbg !474 + %cmp130 = fcmp olt float %100, %101, !dbg !475 + br i1 %cmp130, label %if.then132, label %if.else137, !dbg !470 if.then132: ; preds = %lor.lhs.false125, %if.then122 - %102 = load float, ptr %m1101, align 4, !dbg !486 - store float %102, ptr %m2102, align 4, !dbg !488 - %103 = load i32, ptr %m1_idx103, align 4, !dbg !489 - store i32 %103, ptr %m2_idx104, align 4, !dbg !490 - %104 = load ptr, ptr %cost.addr, align 8, !dbg !491 - %105 = load i32, ptr %j, align 4, !dbg !492 - %idxprom133 = sext i32 %105 to i64, !dbg !491 - %arrayidx134 = getelementptr inbounds ptr, ptr %104, i64 %idxprom133, !dbg !491 - %106 = load ptr, ptr %arrayidx134, align 8, !dbg !491 - %107 = load i32, ptr %i, align 4, !dbg !493 - %idxprom135 = sext i32 %107 to i64, !dbg !491 - %arrayidx136 = getelementptr inbounds float, ptr %106, i64 %idxprom135, !dbg !491 - %108 = load float, ptr %arrayidx136, align 4, !dbg !491 - store float %108, ptr %m1101, align 4, !dbg !494 - %109 = load i32, ptr %j, align 4, !dbg !495 - store i32 %109, ptr %m1_idx103, align 4, !dbg !496 - br label %if.end142, !dbg !497 + %102 = load float, ptr %m1101, align 4, !dbg !476 + store float %102, ptr %m2102, align 4, !dbg !478 + %103 = load i32, ptr %m1_idx103, align 4, !dbg !479 + store i32 %103, ptr %m2_idx104, align 4, !dbg !480 + %104 = load ptr, ptr %cost.addr, align 8, !dbg !481 + %105 = load i32, ptr %j, align 4, !dbg !482 + %idxprom133 = sext i32 %105 to i64, !dbg !481 + %arrayidx134 = getelementptr inbounds ptr, ptr %104, i64 %idxprom133, !dbg !481 + %106 = load ptr, ptr %arrayidx134, align 8, !dbg !481 + %107 = load i32, ptr %i, align 4, !dbg !483 + %idxprom135 = sext i32 %107 to i64, !dbg !481 + %arrayidx136 = getelementptr inbounds float, ptr %106, i64 %idxprom135, !dbg !481 + %108 = load float, ptr %arrayidx136, align 4, !dbg !481 + store float %108, ptr %m1101, align 4, !dbg !484 + %109 = load i32, ptr %j, align 4, !dbg !485 + store i32 %109, ptr %m1_idx103, align 4, !dbg !486 + br label %if.end142, !dbg !487 if.else137: ; preds = %lor.lhs.false125 - %110 = load ptr, ptr %cost.addr, align 8, !dbg !498 - %111 = load i32, ptr %j, align 4, !dbg !500 - %idxprom138 = sext i32 %111 to i64, !dbg !498 - %arrayidx139 = getelementptr inbounds ptr, ptr %110, i64 %idxprom138, !dbg !498 - %112 = load ptr, ptr %arrayidx139, align 8, !dbg !498 - %113 = load i32, ptr %i, align 4, !dbg !501 - %idxprom140 = sext i32 %113 to i64, !dbg !498 - %arrayidx141 = getelementptr inbounds float, ptr %112, i64 %idxprom140, !dbg !498 - %114 = load float, ptr %arrayidx141, align 4, !dbg !498 - store float %114, ptr %m2102, align 4, !dbg !502 - %115 = load i32, ptr %j, align 4, !dbg !503 - store i32 %115, ptr %m2_idx104, align 4, !dbg !504 + %110 = load ptr, ptr %cost.addr, align 8, !dbg !488 + %111 = load i32, ptr %j, align 4, !dbg !490 + %idxprom138 = sext i32 %111 to i64, !dbg !488 + %arrayidx139 = getelementptr inbounds ptr, ptr %110, i64 %idxprom138, !dbg !488 + %112 = load ptr, ptr %arrayidx139, align 8, !dbg !488 + %113 = load i32, ptr %i, align 4, !dbg !491 + %idxprom140 = sext i32 %113 to i64, !dbg !488 + %arrayidx141 = getelementptr inbounds float, ptr %112, i64 %idxprom140, !dbg !488 + %114 = load float, ptr %arrayidx141, align 4, !dbg !488 + store float %114, ptr %m2102, align 4, !dbg !492 + %115 = load i32, ptr %j, align 4, !dbg !493 + store i32 %115, ptr %m2_idx104, align 4, !dbg !494 br label %if.end142 if.end142: ; preds = %if.else137, %if.then132 - br label %if.end143, !dbg !505 + br label %if.end143, !dbg !495 if.end143: ; preds = %if.end142, %lor.lhs.false115 - br label %if.end144, !dbg !506 + br label %if.end144, !dbg !496 if.end144: ; preds = %if.end143, %for.body108 - br label %for.inc145, !dbg !461 + br label %for.inc145, !dbg !453 for.inc145: ; preds = %if.end144 - %116 = load i32, ptr %j, align 4, !dbg !507 - %inc146 = add nsw i32 %116, 1, !dbg !507 - store i32 %inc146, ptr %j, align 4, !dbg !507 - br label %for.cond105, !dbg !508, !llvm.loop !509 + %116 = load i32, ptr %j, align 4, !dbg !497 + %inc146 = add nsw i32 %116, 1, !dbg !497 + store i32 %inc146, ptr %j, align 4, !dbg !497 + br label %for.cond105, !dbg !498, !llvm.loop !499 for.end147: ; preds = %for.cond105 - %117 = load i32, ptr %m1_idx103, align 4, !dbg !511 - %cmp148 = icmp sge i32 %117, 0, !dbg !511 - br i1 %cmp148, label %if.then150, label %if.else151, !dbg !514 + %117 = load i32, ptr %m1_idx103, align 4, !dbg !501 + %cmp148 = icmp sge i32 %117, 0, !dbg !501 + br i1 %cmp148, label %if.then150, label %if.else151, !dbg !501 if.then150: ; preds = %for.end147 - br label %if.end152, !dbg !514 + br label %if.end152, !dbg !501 if.else151: ; preds = %for.end147 - call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 166, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !511 - unreachable, !dbg !511 + call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 166, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !501 + unreachable, !dbg !501 if.end152: ; preds = %if.then150 - %118 = load i32, ptr %m2_idx104, align 4, !dbg !515 - %cmp153 = icmp slt i32 %118, 0, !dbg !517 - br i1 %cmp153, label %if.then155, label %if.end156, !dbg !518 + %118 = load i32, ptr %m2_idx104, align 4, !dbg !504 + %cmp153 = icmp slt i32 %118, 0, !dbg !506 + br i1 %cmp153, label %if.then155, label %if.end156, !dbg !506 if.then155: ; preds = %if.end152 - br label %for.inc167, !dbg !519 + br label %for.inc167, !dbg !507 if.end156: ; preds = %if.end152 - %119 = load i32, ptr %mrow, align 4, !dbg !520 - %cmp157 = icmp slt i32 %119, 0, !dbg !522 - br i1 %cmp157, label %if.then163, label %lor.lhs.false159, !dbg !523 + %119 = load i32, ptr %mrow, align 4, !dbg !508 + %cmp157 = icmp slt i32 %119, 0, !dbg !510 + br i1 %cmp157, label %if.then163, label %lor.lhs.false159, !dbg !511 lor.lhs.false159: ; preds = %if.end156 - %120 = load float, ptr %m2102, align 4, !dbg !524 - %121 = load float, ptr %m1101, align 4, !dbg !525 - %sub160 = fsub float %120, %121, !dbg !526 - %122 = load float, ptr %max, align 4, !dbg !527 - %cmp161 = fcmp ogt float %sub160, %122, !dbg !528 - br i1 %cmp161, label %if.then163, label %if.end165, !dbg !529 + %120 = load float, ptr %m2102, align 4, !dbg !512 + %121 = load float, ptr %m1101, align 4, !dbg !513 + %sub160 = fsub float %120, %121, !dbg !514 + %122 = load float, ptr %max, align 4, !dbg !515 + %cmp161 = fcmp ogt float %sub160, %122, !dbg !516 + br i1 %cmp161, label %if.then163, label %if.end165, !dbg !511 if.then163: ; preds = %lor.lhs.false159, %if.end156 - %123 = load float, ptr %m2102, align 4, !dbg !530 - %124 = load float, ptr %m1101, align 4, !dbg !532 - %sub164 = fsub float %123, %124, !dbg !533 - store float %sub164, ptr %max, align 4, !dbg !534 - %125 = load i32, ptr %m1_idx103, align 4, !dbg !535 - store i32 %125, ptr %mrow, align 4, !dbg !536 - %126 = load i32, ptr %i, align 4, !dbg !537 - store i32 %126, ptr %mcol, align 4, !dbg !538 - br label %if.end165, !dbg !539 + %123 = load float, ptr %m2102, align 4, !dbg !517 + %124 = load float, ptr %m1101, align 4, !dbg !519 + %sub164 = fsub float %123, %124, !dbg !520 + store float %sub164, ptr %max, align 4, !dbg !521 + %125 = load i32, ptr %m1_idx103, align 4, !dbg !522 + store i32 %125, ptr %mrow, align 4, !dbg !523 + %126 = load i32, ptr %i, align 4, !dbg !524 + store i32 %126, ptr %mcol, align 4, !dbg !525 + br label %if.end165, !dbg !526 if.end165: ; preds = %if.then163, %lor.lhs.false159 - br label %if.end166, !dbg !540 + br label %if.end166, !dbg !527 if.end166: ; preds = %if.end165, %for.body96 - br label %for.inc167, !dbg !437 + br label %for.inc167, !dbg !429 for.inc167: ; preds = %if.end166, %if.then155 - %127 = load i32, ptr %i, align 4, !dbg !541 - %inc168 = add nsw i32 %127, 1, !dbg !541 - store i32 %inc168, ptr %i, align 4, !dbg !541 - br label %for.cond93, !dbg !542, !llvm.loop !543 + %127 = load i32, ptr %i, align 4, !dbg !528 + %inc168 = add nsw i32 %127, 1, !dbg !528 + store i32 %inc168, ptr %i, align 4, !dbg !528 + br label %for.cond93, !dbg !529, !llvm.loop !530 for.end169: ; preds = %for.cond93 - %128 = load i32, ptr %mrow, align 4, !dbg !545 - %cmp170 = icmp sge i32 %128, 0, !dbg !545 - br i1 %cmp170, label %if.then172, label %if.else173, !dbg !548 + %128 = load i32, ptr %mrow, align 4, !dbg !532 + %cmp170 = icmp sge i32 %128, 0, !dbg !532 + br i1 %cmp170, label %if.then172, label %if.else173, !dbg !532 if.then172: ; preds = %for.end169 - br label %if.end174, !dbg !548 + br label %if.end174, !dbg !532 if.else173: ; preds = %for.end169 - call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 177, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !545 - unreachable, !dbg !545 + call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 177, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !532 + unreachable, !dbg !532 if.end174: ; preds = %if.then172 - %129 = load i32, ptr %mcol, align 4, !dbg !549 - %cmp175 = icmp sge i32 %129, 0, !dbg !549 - br i1 %cmp175, label %if.then177, label %if.else178, !dbg !552 + %129 = load i32, ptr %mcol, align 4, !dbg !535 + %cmp175 = icmp sge i32 %129, 0, !dbg !535 + br i1 %cmp175, label %if.then177, label %if.else178, !dbg !535 if.then177: ; preds = %if.end174 - br label %if.end179, !dbg !552 + br label %if.end179, !dbg !535 if.else178: ; preds = %if.end174 - call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 178, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !549 - unreachable, !dbg !549 + call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 178, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !535 + unreachable, !dbg !535 if.end179: ; preds = %if.then177 - %130 = load ptr, ptr %r_del, align 8, !dbg !553 - %131 = load i32, ptr %mrow, align 4, !dbg !553 - %idxprom180 = sext i32 %131 to i64, !dbg !553 - %arrayidx181 = getelementptr inbounds i8, ptr %130, i64 %idxprom180, !dbg !553 - %132 = load i8, ptr %arrayidx181, align 1, !dbg !553 - %tobool182 = icmp ne i8 %132, 0, !dbg !553 - br i1 %tobool182, label %if.else184, label %if.then183, !dbg !556 + %130 = load ptr, ptr %r_del, align 8, !dbg !538 + %131 = load i32, ptr %mrow, align 4, !dbg !538 + %idxprom180 = sext i32 %131 to i64, !dbg !538 + %arrayidx181 = getelementptr inbounds i8, ptr %130, i64 %idxprom180, !dbg !538 + %132 = load i8, ptr %arrayidx181, align 1, !dbg !538 + %tobool182 = icmp ne i8 %132, 0, !dbg !538 + br i1 %tobool182, label %if.else184, label %if.then183, !dbg !538 if.then183: ; preds = %if.end179 - br label %if.end185, !dbg !556 + br label %if.end185, !dbg !538 if.else184: ; preds = %if.end179 - call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 185, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !553 - unreachable, !dbg !553 + call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 185, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !538 + unreachable, !dbg !538 if.end185: ; preds = %if.then183 - %133 = load ptr, ptr %c_del, align 8, !dbg !557 - %134 = load i32, ptr %mcol, align 4, !dbg !557 - %idxprom186 = sext i32 %134 to i64, !dbg !557 - %arrayidx187 = getelementptr inbounds i8, ptr %133, i64 %idxprom186, !dbg !557 - %135 = load i8, ptr %arrayidx187, align 1, !dbg !557 - %tobool188 = icmp ne i8 %135, 0, !dbg !557 - br i1 %tobool188, label %if.else190, label %if.then189, !dbg !560 + %133 = load ptr, ptr %c_del, align 8, !dbg !541 + %134 = load i32, ptr %mcol, align 4, !dbg !541 + %idxprom186 = sext i32 %134 to i64, !dbg !541 + %arrayidx187 = getelementptr inbounds i8, ptr %133, i64 %idxprom186, !dbg !541 + %135 = load i8, ptr %arrayidx187, align 1, !dbg !541 + %tobool188 = icmp ne i8 %135, 0, !dbg !541 + br i1 %tobool188, label %if.else190, label %if.then189, !dbg !541 if.then189: ; preds = %if.end185 - br label %if.end191, !dbg !560 + br label %if.end191, !dbg !541 if.else190: ; preds = %if.end185 - call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 186, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !557 - unreachable, !dbg !557 + call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 186, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !541 + unreachable, !dbg !541 if.end191: ; preds = %if.then189 - %136 = load i32, ptr %lr, align 4, !dbg !561 - %cmp192 = icmp sgt i32 %136, 1, !dbg !563 - br i1 %cmp192, label %land.lhs.true, label %if.else232, !dbg !564 + %136 = load i32, ptr %lr, align 4, !dbg !544 + %cmp192 = icmp sgt i32 %136, 1, !dbg !546 + br i1 %cmp192, label %land.lhs.true, label %if.else232, !dbg !547 land.lhs.true: ; preds = %if.end191 - %137 = load ptr, ptr %row.addr, align 8, !dbg !565 - %138 = load i32, ptr %mrow, align 4, !dbg !566 - %idxprom194 = sext i32 %138 to i64, !dbg !565 - %arrayidx195 = getelementptr inbounds float, ptr %137, i64 %idxprom194, !dbg !565 - %139 = load float, ptr %arrayidx195, align 4, !dbg !565 - %140 = load ptr, ptr %col.addr, align 8, !dbg !567 - %141 = load i32, ptr %mcol, align 4, !dbg !568 - %idxprom196 = sext i32 %141 to i64, !dbg !567 - %arrayidx197 = getelementptr inbounds float, ptr %140, i64 %idxprom196, !dbg !567 - %142 = load float, ptr %arrayidx197, align 4, !dbg !567 - %cmp198 = fcmp ole float %139, %142, !dbg !569 - br i1 %cmp198, label %if.then203, label %lor.lhs.false200, !dbg !570 + %137 = load ptr, ptr %row.addr, align 8, !dbg !548 + %138 = load i32, ptr %mrow, align 4, !dbg !549 + %idxprom194 = sext i32 %138 to i64, !dbg !548 + %arrayidx195 = getelementptr inbounds float, ptr %137, i64 %idxprom194, !dbg !548 + %139 = load float, ptr %arrayidx195, align 4, !dbg !548 + %140 = load ptr, ptr %col.addr, align 8, !dbg !550 + %141 = load i32, ptr %mcol, align 4, !dbg !551 + %idxprom196 = sext i32 %141 to i64, !dbg !550 + %arrayidx197 = getelementptr inbounds float, ptr %140, i64 %idxprom196, !dbg !550 + %142 = load float, ptr %arrayidx197, align 4, !dbg !550 + %cmp198 = fcmp ole float %139, %142, !dbg !552 + br i1 %cmp198, label %if.then203, label %lor.lhs.false200, !dbg !553 lor.lhs.false200: ; preds = %land.lhs.true - %143 = load i32, ptr %lc, align 4, !dbg !571 - %cmp201 = icmp sle i32 %143, 1, !dbg !572 - br i1 %cmp201, label %if.then203, label %if.else232, !dbg !573 + %143 = load i32, ptr %lc, align 4, !dbg !554 + %cmp201 = icmp sle i32 %143, 1, !dbg !555 + br i1 %cmp201, label %if.then203, label %if.else232, !dbg !547 if.then203: ; preds = %lor.lhs.false200, %land.lhs.true - %144 = load ptr, ptr %sol, align 8, !dbg !574 - %145 = load i32, ptr %mrow, align 4, !dbg !576 - %idxprom204 = sext i32 %145 to i64, !dbg !574 - %arrayidx205 = getelementptr inbounds ptr, ptr %144, i64 %idxprom204, !dbg !574 - %146 = load ptr, ptr %arrayidx205, align 8, !dbg !574 - %147 = load i32, ptr %mcol, align 4, !dbg !577 - %idxprom206 = sext i32 %147 to i64, !dbg !574 - %arrayidx207 = getelementptr inbounds %struct.sol, ptr %146, i64 %idxprom206, !dbg !574 - %flow208 = getelementptr inbounds %struct.sol, ptr %arrayidx207, i32 0, i32 3, !dbg !578 - store i32 1, ptr %flow208, align 4, !dbg !579 - %148 = load ptr, ptr %row.addr, align 8, !dbg !580 - %149 = load i32, ptr %mrow, align 4, !dbg !581 - %idxprom209 = sext i32 %149 to i64, !dbg !580 - %arrayidx210 = getelementptr inbounds float, ptr %148, i64 %idxprom209, !dbg !580 - %150 = load float, ptr %arrayidx210, align 4, !dbg !580 - %151 = load ptr, ptr %sol, align 8, !dbg !582 - %152 = load i32, ptr %mrow, align 4, !dbg !583 - %idxprom211 = sext i32 %152 to i64, !dbg !582 - %arrayidx212 = getelementptr inbounds ptr, ptr %151, i64 %idxprom211, !dbg !582 - %153 = load ptr, ptr %arrayidx212, align 8, !dbg !582 - %154 = load i32, ptr %mcol, align 4, !dbg !584 - %idxprom213 = sext i32 %154 to i64, !dbg !582 - %arrayidx214 = getelementptr inbounds %struct.sol, ptr %153, i64 %idxprom213, !dbg !582 - %value = getelementptr inbounds %struct.sol, ptr %arrayidx214, i32 0, i32 2, !dbg !585 - store float %150, ptr %value, align 8, !dbg !586 - %155 = load ptr, ptr %row.addr, align 8, !dbg !587 - %156 = load i32, ptr %mrow, align 4, !dbg !588 - %idxprom215 = sext i32 %156 to i64, !dbg !587 - %arrayidx216 = getelementptr inbounds float, ptr %155, i64 %idxprom215, !dbg !587 - %157 = load float, ptr %arrayidx216, align 4, !dbg !587 - %158 = load ptr, ptr %col.addr, align 8, !dbg !589 - %159 = load i32, ptr %mcol, align 4, !dbg !590 - %idxprom217 = sext i32 %159 to i64, !dbg !589 - %arrayidx218 = getelementptr inbounds float, ptr %158, i64 %idxprom217, !dbg !589 - %160 = load float, ptr %arrayidx218, align 4, !dbg !591 - %sub219 = fsub float %160, %157, !dbg !591 - store float %sub219, ptr %arrayidx218, align 4, !dbg !591 - %161 = load ptr, ptr %row.addr, align 8, !dbg !592 - %162 = load i32, ptr %mrow, align 4, !dbg !593 - %idxprom220 = sext i32 %162 to i64, !dbg !592 - %arrayidx221 = getelementptr inbounds float, ptr %161, i64 %idxprom220, !dbg !592 - store float 0.000000e+00, ptr %arrayidx221, align 4, !dbg !594 - %163 = load ptr, ptr %col.addr, align 8, !dbg !595 - %164 = load i32, ptr %mcol, align 4, !dbg !597 - %idxprom222 = sext i32 %164 to i64, !dbg !595 - %arrayidx223 = getelementptr inbounds float, ptr %163, i64 %idxprom222, !dbg !595 - %165 = load float, ptr %arrayidx223, align 4, !dbg !595 - %cmp224 = fcmp olt float %165, 0.000000e+00, !dbg !598 - br i1 %cmp224, label %if.then226, label %if.end229, !dbg !599 + %144 = load ptr, ptr %sol, align 8, !dbg !556 + %145 = load i32, ptr %mrow, align 4, !dbg !558 + %idxprom204 = sext i32 %145 to i64, !dbg !556 + %arrayidx205 = getelementptr inbounds ptr, ptr %144, i64 %idxprom204, !dbg !556 + %146 = load ptr, ptr %arrayidx205, align 8, !dbg !556 + %147 = load i32, ptr %mcol, align 4, !dbg !559 + %idxprom206 = sext i32 %147 to i64, !dbg !556 + %arrayidx207 = getelementptr inbounds %struct.sol, ptr %146, i64 %idxprom206, !dbg !556 + %flow208 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx207, i32 0, i32 3, !dbg !560 + store i32 1, ptr %flow208, align 4, !dbg !561 + %148 = load ptr, ptr %row.addr, align 8, !dbg !562 + %149 = load i32, ptr %mrow, align 4, !dbg !563 + %idxprom209 = sext i32 %149 to i64, !dbg !562 + %arrayidx210 = getelementptr inbounds float, ptr %148, i64 %idxprom209, !dbg !562 + %150 = load float, ptr %arrayidx210, align 4, !dbg !562 + %151 = load ptr, ptr %sol, align 8, !dbg !564 + %152 = load i32, ptr %mrow, align 4, !dbg !565 + %idxprom211 = sext i32 %152 to i64, !dbg !564 + %arrayidx212 = getelementptr inbounds ptr, ptr %151, i64 %idxprom211, !dbg !564 + %153 = load ptr, ptr %arrayidx212, align 8, !dbg !564 + %154 = load i32, ptr %mcol, align 4, !dbg !566 + %idxprom213 = sext i32 %154 to i64, !dbg !564 + %arrayidx214 = getelementptr inbounds %struct.sol, ptr %153, i64 %idxprom213, !dbg !564 + %value = getelementptr inbounds nuw %struct.sol, ptr %arrayidx214, i32 0, i32 2, !dbg !567 + store float %150, ptr %value, align 8, !dbg !568 + %155 = load ptr, ptr %row.addr, align 8, !dbg !569 + %156 = load i32, ptr %mrow, align 4, !dbg !570 + %idxprom215 = sext i32 %156 to i64, !dbg !569 + %arrayidx216 = getelementptr inbounds float, ptr %155, i64 %idxprom215, !dbg !569 + %157 = load float, ptr %arrayidx216, align 4, !dbg !569 + %158 = load ptr, ptr %col.addr, align 8, !dbg !571 + %159 = load i32, ptr %mcol, align 4, !dbg !572 + %idxprom217 = sext i32 %159 to i64, !dbg !571 + %arrayidx218 = getelementptr inbounds float, ptr %158, i64 %idxprom217, !dbg !571 + %160 = load float, ptr %arrayidx218, align 4, !dbg !573 + %sub219 = fsub float %160, %157, !dbg !573 + store float %sub219, ptr %arrayidx218, align 4, !dbg !573 + %161 = load ptr, ptr %row.addr, align 8, !dbg !574 + %162 = load i32, ptr %mrow, align 4, !dbg !575 + %idxprom220 = sext i32 %162 to i64, !dbg !574 + %arrayidx221 = getelementptr inbounds float, ptr %161, i64 %idxprom220, !dbg !574 + store float 0.000000e+00, ptr %arrayidx221, align 4, !dbg !576 + %163 = load ptr, ptr %col.addr, align 8, !dbg !577 + %164 = load i32, ptr %mcol, align 4, !dbg !579 + %idxprom222 = sext i32 %164 to i64, !dbg !577 + %arrayidx223 = getelementptr inbounds float, ptr %163, i64 %idxprom222, !dbg !577 + %165 = load float, ptr %arrayidx223, align 4, !dbg !577 + %cmp224 = fcmp olt float %165, 0.000000e+00, !dbg !580 + br i1 %cmp224, label %if.then226, label %if.end229, !dbg !580 if.then226: ; preds = %if.then203 - %166 = load ptr, ptr %col.addr, align 8, !dbg !600 - %167 = load i32, ptr %mcol, align 4, !dbg !601 - %idxprom227 = sext i32 %167 to i64, !dbg !600 - %arrayidx228 = getelementptr inbounds float, ptr %166, i64 %idxprom227, !dbg !600 - store float 0.000000e+00, ptr %arrayidx228, align 4, !dbg !602 - br label %if.end229, !dbg !600 + %166 = load ptr, ptr %col.addr, align 8, !dbg !581 + %167 = load i32, ptr %mcol, align 4, !dbg !582 + %idxprom227 = sext i32 %167 to i64, !dbg !581 + %arrayidx228 = getelementptr inbounds float, ptr %166, i64 %idxprom227, !dbg !581 + store float 0.000000e+00, ptr %arrayidx228, align 4, !dbg !583 + br label %if.end229, !dbg !581 if.end229: ; preds = %if.then226, %if.then203 - br label %do.body, !dbg !603 + br label %do.body, !dbg !584 do.body: ; preds = %if.end229 - %168 = load ptr, ptr %r_del, align 8, !dbg !604 - %169 = load i32, ptr %mrow, align 4, !dbg !604 - %idxprom230 = sext i32 %169 to i64, !dbg !604 - %arrayidx231 = getelementptr inbounds i8, ptr %168, i64 %idxprom230, !dbg !604 - store i8 1, ptr %arrayidx231, align 1, !dbg !604 - br label %do.end, !dbg !604 + %168 = load ptr, ptr %r_del, align 8, !dbg !585 + %169 = load i32, ptr %mrow, align 4, !dbg !585 + %idxprom230 = sext i32 %169 to i64, !dbg !585 + %arrayidx231 = getelementptr inbounds i8, ptr %168, i64 %idxprom230, !dbg !585 + store i8 1, ptr %arrayidx231, align 1, !dbg !585 + br label %do.end, !dbg !585 do.end: ; preds = %do.body - %170 = load i32, ptr %lr, align 4, !dbg !606 - %dec = add nsw i32 %170, -1, !dbg !606 - store i32 %dec, ptr %lr, align 4, !dbg !606 - br label %if.end262, !dbg !607 + %170 = load i32, ptr %lr, align 4, !dbg !587 + %dec = add nsw i32 %170, -1, !dbg !587 + store i32 %dec, ptr %lr, align 4, !dbg !587 + br label %if.end262, !dbg !588 if.else232: ; preds = %lor.lhs.false200, %if.end191 - %171 = load i32, ptr %lc, align 4, !dbg !608 - %cmp233 = icmp sgt i32 %171, 1, !dbg !608 - br i1 %cmp233, label %if.then235, label %if.else236, !dbg !612 + %171 = load i32, ptr %lc, align 4, !dbg !589 + %cmp233 = icmp sgt i32 %171, 1, !dbg !589 + br i1 %cmp233, label %if.then235, label %if.else236, !dbg !589 if.then235: ; preds = %if.else232 - br label %if.end237, !dbg !612 + br label %if.end237, !dbg !589 if.else236: ; preds = %if.else232 - call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 200, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !608 - unreachable, !dbg !608 + call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 200, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !589 + unreachable, !dbg !589 if.end237: ; preds = %if.then235 - %172 = load ptr, ptr %sol, align 8, !dbg !613 - %173 = load i32, ptr %mrow, align 4, !dbg !614 - %idxprom238 = sext i32 %173 to i64, !dbg !613 - %arrayidx239 = getelementptr inbounds ptr, ptr %172, i64 %idxprom238, !dbg !613 - %174 = load ptr, ptr %arrayidx239, align 8, !dbg !613 - %175 = load i32, ptr %mcol, align 4, !dbg !615 - %idxprom240 = sext i32 %175 to i64, !dbg !613 - %arrayidx241 = getelementptr inbounds %struct.sol, ptr %174, i64 %idxprom240, !dbg !613 - %flow242 = getelementptr inbounds %struct.sol, ptr %arrayidx241, i32 0, i32 3, !dbg !616 - store i32 1, ptr %flow242, align 4, !dbg !617 - %176 = load ptr, ptr %col.addr, align 8, !dbg !618 - %177 = load i32, ptr %mcol, align 4, !dbg !619 - %idxprom243 = sext i32 %177 to i64, !dbg !618 - %arrayidx244 = getelementptr inbounds float, ptr %176, i64 %idxprom243, !dbg !618 - %178 = load float, ptr %arrayidx244, align 4, !dbg !618 - %179 = load ptr, ptr %sol, align 8, !dbg !620 - %180 = load i32, ptr %mrow, align 4, !dbg !621 - %idxprom245 = sext i32 %180 to i64, !dbg !620 - %arrayidx246 = getelementptr inbounds ptr, ptr %179, i64 %idxprom245, !dbg !620 - %181 = load ptr, ptr %arrayidx246, align 8, !dbg !620 - %182 = load i32, ptr %mcol, align 4, !dbg !622 - %idxprom247 = sext i32 %182 to i64, !dbg !620 - %arrayidx248 = getelementptr inbounds %struct.sol, ptr %181, i64 %idxprom247, !dbg !620 - %value249 = getelementptr inbounds %struct.sol, ptr %arrayidx248, i32 0, i32 2, !dbg !623 - store float %178, ptr %value249, align 8, !dbg !624 - %183 = load ptr, ptr %col.addr, align 8, !dbg !625 - %184 = load i32, ptr %mcol, align 4, !dbg !626 - %idxprom250 = sext i32 %184 to i64, !dbg !625 - %arrayidx251 = getelementptr inbounds float, ptr %183, i64 %idxprom250, !dbg !625 - %185 = load float, ptr %arrayidx251, align 4, !dbg !625 - %186 = load ptr, ptr %row.addr, align 8, !dbg !627 - %187 = load i32, ptr %mrow, align 4, !dbg !628 - %idxprom252 = sext i32 %187 to i64, !dbg !627 - %arrayidx253 = getelementptr inbounds float, ptr %186, i64 %idxprom252, !dbg !627 - %188 = load float, ptr %arrayidx253, align 4, !dbg !629 - %sub254 = fsub float %188, %185, !dbg !629 - store float %sub254, ptr %arrayidx253, align 4, !dbg !629 - %189 = load ptr, ptr %col.addr, align 8, !dbg !630 - %190 = load i32, ptr %mcol, align 4, !dbg !631 - %idxprom255 = sext i32 %190 to i64, !dbg !630 - %arrayidx256 = getelementptr inbounds float, ptr %189, i64 %idxprom255, !dbg !630 - store float 0.000000e+00, ptr %arrayidx256, align 4, !dbg !632 - br label %do.body257, !dbg !633 + %172 = load ptr, ptr %sol, align 8, !dbg !593 + %173 = load i32, ptr %mrow, align 4, !dbg !594 + %idxprom238 = sext i32 %173 to i64, !dbg !593 + %arrayidx239 = getelementptr inbounds ptr, ptr %172, i64 %idxprom238, !dbg !593 + %174 = load ptr, ptr %arrayidx239, align 8, !dbg !593 + %175 = load i32, ptr %mcol, align 4, !dbg !595 + %idxprom240 = sext i32 %175 to i64, !dbg !593 + %arrayidx241 = getelementptr inbounds %struct.sol, ptr %174, i64 %idxprom240, !dbg !593 + %flow242 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx241, i32 0, i32 3, !dbg !596 + store i32 1, ptr %flow242, align 4, !dbg !597 + %176 = load ptr, ptr %col.addr, align 8, !dbg !598 + %177 = load i32, ptr %mcol, align 4, !dbg !599 + %idxprom243 = sext i32 %177 to i64, !dbg !598 + %arrayidx244 = getelementptr inbounds float, ptr %176, i64 %idxprom243, !dbg !598 + %178 = load float, ptr %arrayidx244, align 4, !dbg !598 + %179 = load ptr, ptr %sol, align 8, !dbg !600 + %180 = load i32, ptr %mrow, align 4, !dbg !601 + %idxprom245 = sext i32 %180 to i64, !dbg !600 + %arrayidx246 = getelementptr inbounds ptr, ptr %179, i64 %idxprom245, !dbg !600 + %181 = load ptr, ptr %arrayidx246, align 8, !dbg !600 + %182 = load i32, ptr %mcol, align 4, !dbg !602 + %idxprom247 = sext i32 %182 to i64, !dbg !600 + %arrayidx248 = getelementptr inbounds %struct.sol, ptr %181, i64 %idxprom247, !dbg !600 + %value249 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx248, i32 0, i32 2, !dbg !603 + store float %178, ptr %value249, align 8, !dbg !604 + %183 = load ptr, ptr %col.addr, align 8, !dbg !605 + %184 = load i32, ptr %mcol, align 4, !dbg !606 + %idxprom250 = sext i32 %184 to i64, !dbg !605 + %arrayidx251 = getelementptr inbounds float, ptr %183, i64 %idxprom250, !dbg !605 + %185 = load float, ptr %arrayidx251, align 4, !dbg !605 + %186 = load ptr, ptr %row.addr, align 8, !dbg !607 + %187 = load i32, ptr %mrow, align 4, !dbg !608 + %idxprom252 = sext i32 %187 to i64, !dbg !607 + %arrayidx253 = getelementptr inbounds float, ptr %186, i64 %idxprom252, !dbg !607 + %188 = load float, ptr %arrayidx253, align 4, !dbg !609 + %sub254 = fsub float %188, %185, !dbg !609 + store float %sub254, ptr %arrayidx253, align 4, !dbg !609 + %189 = load ptr, ptr %col.addr, align 8, !dbg !610 + %190 = load i32, ptr %mcol, align 4, !dbg !611 + %idxprom255 = sext i32 %190 to i64, !dbg !610 + %arrayidx256 = getelementptr inbounds float, ptr %189, i64 %idxprom255, !dbg !610 + store float 0.000000e+00, ptr %arrayidx256, align 4, !dbg !612 + br label %do.body257, !dbg !613 do.body257: ; preds = %if.end237 - %191 = load ptr, ptr %c_del, align 8, !dbg !634 - %192 = load i32, ptr %mcol, align 4, !dbg !634 - %idxprom258 = sext i32 %192 to i64, !dbg !634 - %arrayidx259 = getelementptr inbounds i8, ptr %191, i64 %idxprom258, !dbg !634 - store i8 1, ptr %arrayidx259, align 1, !dbg !634 - br label %do.end260, !dbg !634 + %191 = load ptr, ptr %c_del, align 8, !dbg !614 + %192 = load i32, ptr %mcol, align 4, !dbg !614 + %idxprom258 = sext i32 %192 to i64, !dbg !614 + %arrayidx259 = getelementptr inbounds i8, ptr %191, i64 %idxprom258, !dbg !614 + store i8 1, ptr %arrayidx259, align 1, !dbg !614 + br label %do.end260, !dbg !614 do.end260: ; preds = %do.body257 - %193 = load i32, ptr %lc, align 4, !dbg !636 - %dec261 = add nsw i32 %193, -1, !dbg !636 - store i32 %dec261, ptr %lc, align 4, !dbg !636 + %193 = load i32, ptr %lc, align 4, !dbg !616 + %dec261 = add nsw i32 %193, -1, !dbg !616 + store i32 %dec261, ptr %lc, align 4, !dbg !616 br label %if.end262 if.end262: ; preds = %do.end260, %do.end - br label %while.cond, !dbg !304, !llvm.loop !637 + br label %while.cond, !dbg !301, !llvm.loop !617 while.end: ; preds = %while.cond - %194 = load i32, ptr %lc, align 4, !dbg !639 - %cmp263 = icmp eq i32 %194, 1, !dbg !639 - br i1 %cmp263, label %if.then265, label %if.else266, !dbg !642 + %194 = load i32, ptr %lc, align 4, !dbg !619 + %cmp263 = icmp eq i32 %194, 1, !dbg !619 + br i1 %cmp263, label %if.then265, label %if.else266, !dbg !619 if.then265: ; preds = %while.end - br label %if.end267, !dbg !642 + br label %if.end267, !dbg !619 if.else266: ; preds = %while.end - call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 211, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !639 - unreachable, !dbg !639 + call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 211, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !619 + unreachable, !dbg !619 if.end267: ; preds = %if.then265 - %195 = load i32, ptr %lr, align 4, !dbg !643 - %cmp268 = icmp eq i32 %195, 1, !dbg !643 - br i1 %cmp268, label %if.then270, label %if.else271, !dbg !646 + %195 = load i32, ptr %lr, align 4, !dbg !622 + %cmp268 = icmp eq i32 %195, 1, !dbg !622 + br i1 %cmp268, label %if.then270, label %if.else271, !dbg !622 if.then270: ; preds = %if.end267 - br label %if.end272, !dbg !646 + br label %if.end272, !dbg !622 if.else271: ; preds = %if.end267 - call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 212, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !643 - unreachable, !dbg !643 + call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 212, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !622 + unreachable, !dbg !622 if.end272: ; preds = %if.then270 - br label %for.cond273, !dbg !647 + br label %for.cond273, !dbg !625 for.cond273: ; preds = %if.end376, %if.end272 - store i32 -1, ptr %mrow, align 4, !dbg !648 - store i32 0, ptr %i, align 4, !dbg !652 - br label %for.cond274, !dbg !654 + store i32 -1, ptr %mrow, align 4, !dbg !626 + store i32 0, ptr %i, align 4, !dbg !630 + br label %for.cond274, !dbg !632 for.cond274: ; preds = %for.inc299, %for.cond273 - %196 = load i32, ptr %i, align 4, !dbg !655 - %197 = load i32, ptr %nrow.addr, align 4, !dbg !657 - %cmp275 = icmp slt i32 %196, %197, !dbg !658 - br i1 %cmp275, label %for.body277, label %for.end301, !dbg !659 + %196 = load i32, ptr %i, align 4, !dbg !633 + %197 = load i32, ptr %nrow.addr, align 4, !dbg !635 + %cmp275 = icmp slt i32 %196, %197, !dbg !636 + br i1 %cmp275, label %for.body277, label %for.end301, !dbg !637 for.body277: ; preds = %for.cond274 - %198 = load ptr, ptr %r_del, align 8, !dbg !660 - %199 = load i32, ptr %i, align 4, !dbg !660 - %idxprom278 = sext i32 %199 to i64, !dbg !660 - %arrayidx279 = getelementptr inbounds i8, ptr %198, i64 %idxprom278, !dbg !660 - %200 = load i8, ptr %arrayidx279, align 1, !dbg !660 - %tobool280 = icmp ne i8 %200, 0, !dbg !660 - br i1 %tobool280, label %if.end298, label %if.then281, !dbg !662 + %198 = load ptr, ptr %r_del, align 8, !dbg !638 + %199 = load i32, ptr %i, align 4, !dbg !638 + %idxprom278 = sext i32 %199 to i64, !dbg !638 + %arrayidx279 = getelementptr inbounds i8, ptr %198, i64 %idxprom278, !dbg !638 + %200 = load i8, ptr %arrayidx279, align 1, !dbg !638 + %tobool280 = icmp ne i8 %200, 0, !dbg !638 + br i1 %tobool280, label %if.end298, label %if.then281, !dbg !640 if.then281: ; preds = %for.body277 - store i32 -1, ptr %mcol, align 4, !dbg !663 - store i32 0, ptr %j, align 4, !dbg !665 - br label %for.cond282, !dbg !667 + store i32 -1, ptr %mcol, align 4, !dbg !641 + store i32 0, ptr %j, align 4, !dbg !643 + br label %for.cond282, !dbg !645 for.cond282: ; preds = %for.inc291, %if.then281 - %201 = load i32, ptr %j, align 4, !dbg !668 - %202 = load i32, ptr %ncol.addr, align 4, !dbg !670 - %cmp283 = icmp slt i32 %201, %202, !dbg !671 - br i1 %cmp283, label %for.body285, label %for.end293, !dbg !672 + %201 = load i32, ptr %j, align 4, !dbg !646 + %202 = load i32, ptr %ncol.addr, align 4, !dbg !648 + %cmp283 = icmp slt i32 %201, %202, !dbg !649 + br i1 %cmp283, label %for.body285, label %for.end293, !dbg !650 for.body285: ; preds = %for.cond282 - %203 = load ptr, ptr %c_del, align 8, !dbg !673 - %204 = load i32, ptr %j, align 4, !dbg !673 - %idxprom286 = sext i32 %204 to i64, !dbg !673 - %arrayidx287 = getelementptr inbounds i8, ptr %203, i64 %idxprom286, !dbg !673 - %205 = load i8, ptr %arrayidx287, align 1, !dbg !673 - %tobool288 = icmp ne i8 %205, 0, !dbg !673 - br i1 %tobool288, label %if.end290, label %if.then289, !dbg !675 + %203 = load ptr, ptr %c_del, align 8, !dbg !651 + %204 = load i32, ptr %j, align 4, !dbg !651 + %idxprom286 = sext i32 %204 to i64, !dbg !651 + %arrayidx287 = getelementptr inbounds i8, ptr %203, i64 %idxprom286, !dbg !651 + %205 = load i8, ptr %arrayidx287, align 1, !dbg !651 + %tobool288 = icmp ne i8 %205, 0, !dbg !651 + br i1 %tobool288, label %if.end290, label %if.then289, !dbg !653 if.then289: ; preds = %for.body285 - %206 = load i32, ptr %j, align 4, !dbg !676 - store i32 %206, ptr %mcol, align 4, !dbg !678 - br label %for.end293, !dbg !679 + %206 = load i32, ptr %j, align 4, !dbg !654 + store i32 %206, ptr %mcol, align 4, !dbg !656 + br label %for.end293, !dbg !657 if.end290: ; preds = %for.body285 - br label %for.inc291, !dbg !673 + br label %for.inc291, !dbg !651 for.inc291: ; preds = %if.end290 - %207 = load i32, ptr %j, align 4, !dbg !680 - %inc292 = add nsw i32 %207, 1, !dbg !680 - store i32 %inc292, ptr %j, align 4, !dbg !680 - br label %for.cond282, !dbg !681, !llvm.loop !682 + %207 = load i32, ptr %j, align 4, !dbg !658 + %inc292 = add nsw i32 %207, 1, !dbg !658 + store i32 %inc292, ptr %j, align 4, !dbg !658 + br label %for.cond282, !dbg !659, !llvm.loop !660 for.end293: ; preds = %if.then289, %for.cond282 - %208 = load i32, ptr %mcol, align 4, !dbg !684 - %cmp294 = icmp sge i32 %208, 0, !dbg !686 - br i1 %cmp294, label %if.then296, label %if.end297, !dbg !687 + %208 = load i32, ptr %mcol, align 4, !dbg !662 + %cmp294 = icmp sge i32 %208, 0, !dbg !664 + br i1 %cmp294, label %if.then296, label %if.end297, !dbg !664 if.then296: ; preds = %for.end293 - %209 = load i32, ptr %i, align 4, !dbg !688 - store i32 %209, ptr %mrow, align 4, !dbg !690 - br label %for.end301, !dbg !691 + %209 = load i32, ptr %i, align 4, !dbg !665 + store i32 %209, ptr %mrow, align 4, !dbg !667 + br label %for.end301, !dbg !668 if.end297: ; preds = %for.end293 - br label %if.end298, !dbg !692 + br label %if.end298, !dbg !669 if.end298: ; preds = %if.end297, %for.body277 - br label %for.inc299, !dbg !660 + br label %for.inc299, !dbg !638 for.inc299: ; preds = %if.end298 - %210 = load i32, ptr %i, align 4, !dbg !693 - %inc300 = add nsw i32 %210, 1, !dbg !693 - store i32 %inc300, ptr %i, align 4, !dbg !693 - br label %for.cond274, !dbg !694, !llvm.loop !695 + %210 = load i32, ptr %i, align 4, !dbg !670 + %inc300 = add nsw i32 %210, 1, !dbg !670 + store i32 %inc300, ptr %i, align 4, !dbg !670 + br label %for.cond274, !dbg !671, !llvm.loop !672 for.end301: ; preds = %if.then296, %for.cond274 - %211 = load i32, ptr %mrow, align 4, !dbg !697 - %cmp302 = icmp slt i32 %211, 0, !dbg !699 - br i1 %cmp302, label %if.then307, label %lor.lhs.false304, !dbg !700 + %211 = load i32, ptr %mrow, align 4, !dbg !674 + %cmp302 = icmp slt i32 %211, 0, !dbg !676 + br i1 %cmp302, label %if.then307, label %lor.lhs.false304, !dbg !677 lor.lhs.false304: ; preds = %for.end301 - %212 = load i32, ptr %mcol, align 4, !dbg !701 - %cmp305 = icmp slt i32 %212, 0, !dbg !702 - br i1 %cmp305, label %if.then307, label %if.end308, !dbg !703 + %212 = load i32, ptr %mcol, align 4, !dbg !678 + %cmp305 = icmp slt i32 %212, 0, !dbg !679 + br i1 %cmp305, label %if.then307, label %if.end308, !dbg !677 if.then307: ; preds = %lor.lhs.false304, %for.end301 - br label %for.end377, !dbg !704 + br label %for.end377, !dbg !680 if.end308: ; preds = %lor.lhs.false304 - %213 = load ptr, ptr %r_del, align 8, !dbg !705 - %214 = load i32, ptr %mrow, align 4, !dbg !705 - %idxprom309 = sext i32 %214 to i64, !dbg !705 - %arrayidx310 = getelementptr inbounds i8, ptr %213, i64 %idxprom309, !dbg !705 - %215 = load i8, ptr %arrayidx310, align 1, !dbg !705 - %tobool311 = icmp ne i8 %215, 0, !dbg !705 - br i1 %tobool311, label %if.else313, label %if.then312, !dbg !708 + %213 = load ptr, ptr %r_del, align 8, !dbg !681 + %214 = load i32, ptr %mrow, align 4, !dbg !681 + %idxprom309 = sext i32 %214 to i64, !dbg !681 + %arrayidx310 = getelementptr inbounds i8, ptr %213, i64 %idxprom309, !dbg !681 + %215 = load i8, ptr %arrayidx310, align 1, !dbg !681 + %tobool311 = icmp ne i8 %215, 0, !dbg !681 + br i1 %tobool311, label %if.else313, label %if.then312, !dbg !681 if.then312: ; preds = %if.end308 - br label %if.end314, !dbg !708 + br label %if.end314, !dbg !681 if.else313: ; preds = %if.end308 - call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 232, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !705 - unreachable, !dbg !705 + call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 232, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !681 + unreachable, !dbg !681 if.end314: ; preds = %if.then312 - %216 = load ptr, ptr %c_del, align 8, !dbg !709 - %217 = load i32, ptr %mcol, align 4, !dbg !709 - %idxprom315 = sext i32 %217 to i64, !dbg !709 - %arrayidx316 = getelementptr inbounds i8, ptr %216, i64 %idxprom315, !dbg !709 - %218 = load i8, ptr %arrayidx316, align 1, !dbg !709 - %tobool317 = icmp ne i8 %218, 0, !dbg !709 - br i1 %tobool317, label %if.else319, label %if.then318, !dbg !712 + %216 = load ptr, ptr %c_del, align 8, !dbg !684 + %217 = load i32, ptr %mcol, align 4, !dbg !684 + %idxprom315 = sext i32 %217 to i64, !dbg !684 + %arrayidx316 = getelementptr inbounds i8, ptr %216, i64 %idxprom315, !dbg !684 + %218 = load i8, ptr %arrayidx316, align 1, !dbg !684 + %tobool317 = icmp ne i8 %218, 0, !dbg !684 + br i1 %tobool317, label %if.else319, label %if.then318, !dbg !684 if.then318: ; preds = %if.end314 - br label %if.end320, !dbg !712 + br label %if.end320, !dbg !684 if.else319: ; preds = %if.end314 - call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 233, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #6, !dbg !709 - unreachable, !dbg !709 + call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 233, ptr noundef @__PRETTY_FUNCTION__.tp_init_vogel) #5, !dbg !684 + unreachable, !dbg !684 if.end320: ; preds = %if.then318 - %219 = load i32, ptr %cnt, align 4, !dbg !713 - %inc321 = add nsw i32 %219, 1, !dbg !713 - store i32 %inc321, ptr %cnt, align 4, !dbg !713 - %220 = load ptr, ptr %row.addr, align 8, !dbg !714 - %221 = load i32, ptr %mrow, align 4, !dbg !716 - %idxprom322 = sext i32 %221 to i64, !dbg !714 - %arrayidx323 = getelementptr inbounds float, ptr %220, i64 %idxprom322, !dbg !714 - %222 = load float, ptr %arrayidx323, align 4, !dbg !714 - %223 = load ptr, ptr %col.addr, align 8, !dbg !717 - %224 = load i32, ptr %mcol, align 4, !dbg !718 - %idxprom324 = sext i32 %224 to i64, !dbg !717 - %arrayidx325 = getelementptr inbounds float, ptr %223, i64 %idxprom324, !dbg !717 - %225 = load float, ptr %arrayidx325, align 4, !dbg !717 - %cmp326 = fcmp olt float %222, %225, !dbg !719 - br i1 %cmp326, label %if.then328, label %if.else352, !dbg !720 + %219 = load i32, ptr %cnt, align 4, !dbg !687 + %inc321 = add nsw i32 %219, 1, !dbg !687 + store i32 %inc321, ptr %cnt, align 4, !dbg !687 + %220 = load ptr, ptr %row.addr, align 8, !dbg !688 + %221 = load i32, ptr %mrow, align 4, !dbg !690 + %idxprom322 = sext i32 %221 to i64, !dbg !688 + %arrayidx323 = getelementptr inbounds float, ptr %220, i64 %idxprom322, !dbg !688 + %222 = load float, ptr %arrayidx323, align 4, !dbg !688 + %223 = load ptr, ptr %col.addr, align 8, !dbg !691 + %224 = load i32, ptr %mcol, align 4, !dbg !692 + %idxprom324 = sext i32 %224 to i64, !dbg !691 + %arrayidx325 = getelementptr inbounds float, ptr %223, i64 %idxprom324, !dbg !691 + %225 = load float, ptr %arrayidx325, align 4, !dbg !691 + %cmp326 = fcmp olt float %222, %225, !dbg !693 + br i1 %cmp326, label %if.then328, label %if.else352, !dbg !693 if.then328: ; preds = %if.end320 - %226 = load ptr, ptr %sol, align 8, !dbg !721 - %227 = load i32, ptr %mrow, align 4, !dbg !723 - %idxprom329 = sext i32 %227 to i64, !dbg !721 - %arrayidx330 = getelementptr inbounds ptr, ptr %226, i64 %idxprom329, !dbg !721 - %228 = load ptr, ptr %arrayidx330, align 8, !dbg !721 - %229 = load i32, ptr %mcol, align 4, !dbg !724 - %idxprom331 = sext i32 %229 to i64, !dbg !721 - %arrayidx332 = getelementptr inbounds %struct.sol, ptr %228, i64 %idxprom331, !dbg !721 - %flow333 = getelementptr inbounds %struct.sol, ptr %arrayidx332, i32 0, i32 3, !dbg !725 - store i32 1, ptr %flow333, align 4, !dbg !726 - %230 = load ptr, ptr %row.addr, align 8, !dbg !727 - %231 = load i32, ptr %mrow, align 4, !dbg !728 - %idxprom334 = sext i32 %231 to i64, !dbg !727 - %arrayidx335 = getelementptr inbounds float, ptr %230, i64 %idxprom334, !dbg !727 - %232 = load float, ptr %arrayidx335, align 4, !dbg !727 - %233 = load ptr, ptr %sol, align 8, !dbg !729 - %234 = load i32, ptr %mrow, align 4, !dbg !730 - %idxprom336 = sext i32 %234 to i64, !dbg !729 - %arrayidx337 = getelementptr inbounds ptr, ptr %233, i64 %idxprom336, !dbg !729 - %235 = load ptr, ptr %arrayidx337, align 8, !dbg !729 - %236 = load i32, ptr %mcol, align 4, !dbg !731 - %idxprom338 = sext i32 %236 to i64, !dbg !729 - %arrayidx339 = getelementptr inbounds %struct.sol, ptr %235, i64 %idxprom338, !dbg !729 - %value340 = getelementptr inbounds %struct.sol, ptr %arrayidx339, i32 0, i32 2, !dbg !732 - store float %232, ptr %value340, align 8, !dbg !733 - %237 = load ptr, ptr %row.addr, align 8, !dbg !734 - %238 = load i32, ptr %mrow, align 4, !dbg !735 - %idxprom341 = sext i32 %238 to i64, !dbg !734 - %arrayidx342 = getelementptr inbounds float, ptr %237, i64 %idxprom341, !dbg !734 - %239 = load float, ptr %arrayidx342, align 4, !dbg !734 - %240 = load ptr, ptr %col.addr, align 8, !dbg !736 - %241 = load i32, ptr %mcol, align 4, !dbg !737 - %idxprom343 = sext i32 %241 to i64, !dbg !736 - %arrayidx344 = getelementptr inbounds float, ptr %240, i64 %idxprom343, !dbg !736 - %242 = load float, ptr %arrayidx344, align 4, !dbg !738 - %sub345 = fsub float %242, %239, !dbg !738 - store float %sub345, ptr %arrayidx344, align 4, !dbg !738 - %243 = load ptr, ptr %row.addr, align 8, !dbg !739 - %244 = load i32, ptr %mrow, align 4, !dbg !740 - %idxprom346 = sext i32 %244 to i64, !dbg !739 - %arrayidx347 = getelementptr inbounds float, ptr %243, i64 %idxprom346, !dbg !739 - store float 0.000000e+00, ptr %arrayidx347, align 4, !dbg !741 - br label %do.body348, !dbg !742 + %226 = load ptr, ptr %sol, align 8, !dbg !694 + %227 = load i32, ptr %mrow, align 4, !dbg !696 + %idxprom329 = sext i32 %227 to i64, !dbg !694 + %arrayidx330 = getelementptr inbounds ptr, ptr %226, i64 %idxprom329, !dbg !694 + %228 = load ptr, ptr %arrayidx330, align 8, !dbg !694 + %229 = load i32, ptr %mcol, align 4, !dbg !697 + %idxprom331 = sext i32 %229 to i64, !dbg !694 + %arrayidx332 = getelementptr inbounds %struct.sol, ptr %228, i64 %idxprom331, !dbg !694 + %flow333 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx332, i32 0, i32 3, !dbg !698 + store i32 1, ptr %flow333, align 4, !dbg !699 + %230 = load ptr, ptr %row.addr, align 8, !dbg !700 + %231 = load i32, ptr %mrow, align 4, !dbg !701 + %idxprom334 = sext i32 %231 to i64, !dbg !700 + %arrayidx335 = getelementptr inbounds float, ptr %230, i64 %idxprom334, !dbg !700 + %232 = load float, ptr %arrayidx335, align 4, !dbg !700 + %233 = load ptr, ptr %sol, align 8, !dbg !702 + %234 = load i32, ptr %mrow, align 4, !dbg !703 + %idxprom336 = sext i32 %234 to i64, !dbg !702 + %arrayidx337 = getelementptr inbounds ptr, ptr %233, i64 %idxprom336, !dbg !702 + %235 = load ptr, ptr %arrayidx337, align 8, !dbg !702 + %236 = load i32, ptr %mcol, align 4, !dbg !704 + %idxprom338 = sext i32 %236 to i64, !dbg !702 + %arrayidx339 = getelementptr inbounds %struct.sol, ptr %235, i64 %idxprom338, !dbg !702 + %value340 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx339, i32 0, i32 2, !dbg !705 + store float %232, ptr %value340, align 8, !dbg !706 + %237 = load ptr, ptr %row.addr, align 8, !dbg !707 + %238 = load i32, ptr %mrow, align 4, !dbg !708 + %idxprom341 = sext i32 %238 to i64, !dbg !707 + %arrayidx342 = getelementptr inbounds float, ptr %237, i64 %idxprom341, !dbg !707 + %239 = load float, ptr %arrayidx342, align 4, !dbg !707 + %240 = load ptr, ptr %col.addr, align 8, !dbg !709 + %241 = load i32, ptr %mcol, align 4, !dbg !710 + %idxprom343 = sext i32 %241 to i64, !dbg !709 + %arrayidx344 = getelementptr inbounds float, ptr %240, i64 %idxprom343, !dbg !709 + %242 = load float, ptr %arrayidx344, align 4, !dbg !711 + %sub345 = fsub float %242, %239, !dbg !711 + store float %sub345, ptr %arrayidx344, align 4, !dbg !711 + %243 = load ptr, ptr %row.addr, align 8, !dbg !712 + %244 = load i32, ptr %mrow, align 4, !dbg !713 + %idxprom346 = sext i32 %244 to i64, !dbg !712 + %arrayidx347 = getelementptr inbounds float, ptr %243, i64 %idxprom346, !dbg !712 + store float 0.000000e+00, ptr %arrayidx347, align 4, !dbg !714 + br label %do.body348, !dbg !715 do.body348: ; preds = %if.then328 - %245 = load ptr, ptr %r_del, align 8, !dbg !743 - %246 = load i32, ptr %mrow, align 4, !dbg !743 - %idxprom349 = sext i32 %246 to i64, !dbg !743 - %arrayidx350 = getelementptr inbounds i8, ptr %245, i64 %idxprom349, !dbg !743 - store i8 1, ptr %arrayidx350, align 1, !dbg !743 - br label %do.end351, !dbg !743 + %245 = load ptr, ptr %r_del, align 8, !dbg !716 + %246 = load i32, ptr %mrow, align 4, !dbg !716 + %idxprom349 = sext i32 %246 to i64, !dbg !716 + %arrayidx350 = getelementptr inbounds i8, ptr %245, i64 %idxprom349, !dbg !716 + store i8 1, ptr %arrayidx350, align 1, !dbg !716 + br label %do.end351, !dbg !716 do.end351: ; preds = %do.body348 - br label %if.end376, !dbg !745 + br label %if.end376, !dbg !718 if.else352: ; preds = %if.end320 - %247 = load ptr, ptr %sol, align 8, !dbg !746 - %248 = load i32, ptr %mrow, align 4, !dbg !748 - %idxprom353 = sext i32 %248 to i64, !dbg !746 - %arrayidx354 = getelementptr inbounds ptr, ptr %247, i64 %idxprom353, !dbg !746 - %249 = load ptr, ptr %arrayidx354, align 8, !dbg !746 - %250 = load i32, ptr %mcol, align 4, !dbg !749 - %idxprom355 = sext i32 %250 to i64, !dbg !746 - %arrayidx356 = getelementptr inbounds %struct.sol, ptr %249, i64 %idxprom355, !dbg !746 - %flow357 = getelementptr inbounds %struct.sol, ptr %arrayidx356, i32 0, i32 3, !dbg !750 - store i32 1, ptr %flow357, align 4, !dbg !751 - %251 = load ptr, ptr %col.addr, align 8, !dbg !752 - %252 = load i32, ptr %mcol, align 4, !dbg !753 - %idxprom358 = sext i32 %252 to i64, !dbg !752 - %arrayidx359 = getelementptr inbounds float, ptr %251, i64 %idxprom358, !dbg !752 - %253 = load float, ptr %arrayidx359, align 4, !dbg !752 - %254 = load ptr, ptr %sol, align 8, !dbg !754 - %255 = load i32, ptr %mrow, align 4, !dbg !755 - %idxprom360 = sext i32 %255 to i64, !dbg !754 - %arrayidx361 = getelementptr inbounds ptr, ptr %254, i64 %idxprom360, !dbg !754 - %256 = load ptr, ptr %arrayidx361, align 8, !dbg !754 - %257 = load i32, ptr %mcol, align 4, !dbg !756 - %idxprom362 = sext i32 %257 to i64, !dbg !754 - %arrayidx363 = getelementptr inbounds %struct.sol, ptr %256, i64 %idxprom362, !dbg !754 - %value364 = getelementptr inbounds %struct.sol, ptr %arrayidx363, i32 0, i32 2, !dbg !757 - store float %253, ptr %value364, align 8, !dbg !758 - %258 = load ptr, ptr %col.addr, align 8, !dbg !759 - %259 = load i32, ptr %mcol, align 4, !dbg !760 - %idxprom365 = sext i32 %259 to i64, !dbg !759 - %arrayidx366 = getelementptr inbounds float, ptr %258, i64 %idxprom365, !dbg !759 - %260 = load float, ptr %arrayidx366, align 4, !dbg !759 - %261 = load ptr, ptr %row.addr, align 8, !dbg !761 - %262 = load i32, ptr %mrow, align 4, !dbg !762 - %idxprom367 = sext i32 %262 to i64, !dbg !761 - %arrayidx368 = getelementptr inbounds float, ptr %261, i64 %idxprom367, !dbg !761 - %263 = load float, ptr %arrayidx368, align 4, !dbg !763 - %sub369 = fsub float %263, %260, !dbg !763 - store float %sub369, ptr %arrayidx368, align 4, !dbg !763 - %264 = load ptr, ptr %col.addr, align 8, !dbg !764 - %265 = load i32, ptr %mcol, align 4, !dbg !765 - %idxprom370 = sext i32 %265 to i64, !dbg !764 - %arrayidx371 = getelementptr inbounds float, ptr %264, i64 %idxprom370, !dbg !764 - store float 0.000000e+00, ptr %arrayidx371, align 4, !dbg !766 - br label %do.body372, !dbg !767 + %247 = load ptr, ptr %sol, align 8, !dbg !719 + %248 = load i32, ptr %mrow, align 4, !dbg !721 + %idxprom353 = sext i32 %248 to i64, !dbg !719 + %arrayidx354 = getelementptr inbounds ptr, ptr %247, i64 %idxprom353, !dbg !719 + %249 = load ptr, ptr %arrayidx354, align 8, !dbg !719 + %250 = load i32, ptr %mcol, align 4, !dbg !722 + %idxprom355 = sext i32 %250 to i64, !dbg !719 + %arrayidx356 = getelementptr inbounds %struct.sol, ptr %249, i64 %idxprom355, !dbg !719 + %flow357 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx356, i32 0, i32 3, !dbg !723 + store i32 1, ptr %flow357, align 4, !dbg !724 + %251 = load ptr, ptr %col.addr, align 8, !dbg !725 + %252 = load i32, ptr %mcol, align 4, !dbg !726 + %idxprom358 = sext i32 %252 to i64, !dbg !725 + %arrayidx359 = getelementptr inbounds float, ptr %251, i64 %idxprom358, !dbg !725 + %253 = load float, ptr %arrayidx359, align 4, !dbg !725 + %254 = load ptr, ptr %sol, align 8, !dbg !727 + %255 = load i32, ptr %mrow, align 4, !dbg !728 + %idxprom360 = sext i32 %255 to i64, !dbg !727 + %arrayidx361 = getelementptr inbounds ptr, ptr %254, i64 %idxprom360, !dbg !727 + %256 = load ptr, ptr %arrayidx361, align 8, !dbg !727 + %257 = load i32, ptr %mcol, align 4, !dbg !729 + %idxprom362 = sext i32 %257 to i64, !dbg !727 + %arrayidx363 = getelementptr inbounds %struct.sol, ptr %256, i64 %idxprom362, !dbg !727 + %value364 = getelementptr inbounds nuw %struct.sol, ptr %arrayidx363, i32 0, i32 2, !dbg !730 + store float %253, ptr %value364, align 8, !dbg !731 + %258 = load ptr, ptr %col.addr, align 8, !dbg !732 + %259 = load i32, ptr %mcol, align 4, !dbg !733 + %idxprom365 = sext i32 %259 to i64, !dbg !732 + %arrayidx366 = getelementptr inbounds float, ptr %258, i64 %idxprom365, !dbg !732 + %260 = load float, ptr %arrayidx366, align 4, !dbg !732 + %261 = load ptr, ptr %row.addr, align 8, !dbg !734 + %262 = load i32, ptr %mrow, align 4, !dbg !735 + %idxprom367 = sext i32 %262 to i64, !dbg !734 + %arrayidx368 = getelementptr inbounds float, ptr %261, i64 %idxprom367, !dbg !734 + %263 = load float, ptr %arrayidx368, align 4, !dbg !736 + %sub369 = fsub float %263, %260, !dbg !736 + store float %sub369, ptr %arrayidx368, align 4, !dbg !736 + %264 = load ptr, ptr %col.addr, align 8, !dbg !737 + %265 = load i32, ptr %mcol, align 4, !dbg !738 + %idxprom370 = sext i32 %265 to i64, !dbg !737 + %arrayidx371 = getelementptr inbounds float, ptr %264, i64 %idxprom370, !dbg !737 + store float 0.000000e+00, ptr %arrayidx371, align 4, !dbg !739 + br label %do.body372, !dbg !740 do.body372: ; preds = %if.else352 - %266 = load ptr, ptr %c_del, align 8, !dbg !768 - %267 = load i32, ptr %mcol, align 4, !dbg !768 - %idxprom373 = sext i32 %267 to i64, !dbg !768 - %arrayidx374 = getelementptr inbounds i8, ptr %266, i64 %idxprom373, !dbg !768 - store i8 1, ptr %arrayidx374, align 1, !dbg !768 - br label %do.end375, !dbg !768 + %266 = load ptr, ptr %c_del, align 8, !dbg !741 + %267 = load i32, ptr %mcol, align 4, !dbg !741 + %idxprom373 = sext i32 %267 to i64, !dbg !741 + %arrayidx374 = getelementptr inbounds i8, ptr %266, i64 %idxprom373, !dbg !741 + store i8 1, ptr %arrayidx374, align 1, !dbg !741 + br label %do.end375, !dbg !741 do.end375: ; preds = %do.body372 br label %if.end376 if.end376: ; preds = %do.end375, %do.end351 - br label %for.cond273, !dbg !770, !llvm.loop !771 + br label %for.cond273, !dbg !743, !llvm.loop !744 for.end377: ; preds = %if.then307 - %268 = load ptr, ptr %r_del, align 8, !dbg !774 - call void @free(ptr noundef %268) #7, !dbg !774 - %269 = load ptr, ptr %c_del, align 8, !dbg !775 - call void @free(ptr noundef %269) #7, !dbg !775 - %270 = load ptr, ptr %sol, align 8, !dbg !776 - %271 = load ptr, ptr %_sol.addr, align 8, !dbg !777 - store ptr %270, ptr %271, align 8, !dbg !778 - ret void, !dbg !779 + %268 = load ptr, ptr %r_del, align 8, !dbg !747 + call void @free(ptr noundef %268) #6, !dbg !747 + %269 = load ptr, ptr %c_del, align 8, !dbg !748 + call void @free(ptr noundef %269) #6, !dbg !748 + %270 = load ptr, ptr %sol, align 8, !dbg !749 + %271 = load ptr, ptr %_sol.addr, align 8, !dbg !750 + store ptr %270, ptr %271, align 8, !dbg !751 + ret void, !dbg !752 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #4 +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 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 allocsize(0) } -attributes #6 = { noreturn nounwind } -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 = { 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 allocsize(0) } +attributes #5 = { noreturn nounwind } +attributes #6 = { nounwind } !llvm.dbg.cu = !{!61} !llvm.module.flags = !{!81, !82, !83, !84, !85, !86, !87} @@ -1309,16 +1305,16 @@ attributes #7 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 49, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/malloc64.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7572748c5d7dc78cca7e2a61e7fe07af") +!2 = !DIFile(filename: "src/mem_leak/malloc64.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7572748c5d7dc78cca7e2a61e7fe07af") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 72, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 9) !7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) !8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 49, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 512, elements: !10) +!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 480, elements: !10) !10 = !{!11} -!11 = !DISubrange(count: 64) +!11 = !DISubrange(count: 60) !12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) !13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 49, type: !14, isLocal: true, isDefinition: true) !14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 368, elements: !16) @@ -1368,8 +1364,8 @@ attributes #7 = { nounwind } !58 = !DISubrange(count: 8) !59 = !DIGlobalVariableExpression(var: !60, expr: !DIExpression()) !60 = distinct !DIGlobalVariable(scope: null, file: !2, line: 212, type: !56, isLocal: true, isDefinition: true) -!61 = distinct !DICompileUnit(language: DW_LANG_C11, file: !62, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !63, globals: !80, splitDebugInlining: false, nameTableKind: None) -!62 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc64.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7572748c5d7dc78cca7e2a61e7fe07af") +!61 = distinct !DICompileUnit(language: DW_LANG_C11, file: !62, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !63, globals: !80, splitDebugInlining: false, nameTableKind: None) +!62 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc64.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7572748c5d7dc78cca7e2a61e7fe07af") !63 = !{!64, !66} !64 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !65, size: 64) !65 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -1395,9 +1391,9 @@ attributes #7 = { nounwind } !85 = !{i32 7, !"PIE Level", i32 2} !86 = !{i32 7, !"uwtable", i32 2} !87 = !{i32 7, !"frame-pointer", i32 2} -!88 = !{!"clang version 16.0.0"} +!88 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !89 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !90, file: !90, line: 5, type: !91, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !61, retainedNodes: !93) -!90 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!90 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !91 = !DISubroutineType(types: !92) !92 = !{!65, !71} !93 = !{} @@ -1445,8 +1441,8 @@ attributes #7 = { nounwind } !135 = distinct !DISubprogram(name: "__matrix_alloc", scope: !2, file: !2, line: 45, type: !136, scopeLine: 46, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !61, retainedNodes: !93) !136 = !DISubroutineType(types: !137) !137 = !{!64, !138, !138, !138} -!138 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !139, line: 46, baseType: !140) -!139 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") +!138 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !139, line: 18, baseType: !140) +!139 = !DIFile(filename: "/usr/lib/llvm-20/lib/clang/20/include/__stddef_size_t.h", directory: "", checksumkind: CSK_MD5, checksum: "2c44e821a2b1951cde2eb0fb2e656867") !140 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) !141 = !DILocalVariable(name: "row", arg: 1, scope: !135, file: !2, line: 45, type: !138) !142 = !DILocation(line: 45, column: 31, scope: !135) @@ -1465,625 +1461,598 @@ attributes #7 = { nounwind } !155 = !DILocation(line: 49, column: 2, scope: !156) !156 = distinct !DILexicalBlock(scope: !157, file: !2, line: 49, column: 2) !157 = distinct !DILexicalBlock(scope: !135, file: !2, line: 49, column: 2) -!158 = !DILocation(line: 49, column: 2, scope: !157) -!159 = !DILocation(line: 50, column: 21, scope: !135) -!160 = !DILocation(line: 50, column: 27, scope: !135) -!161 = !DILocation(line: 50, column: 25, scope: !135) -!162 = !DILocation(line: 50, column: 11, scope: !135) -!163 = !DILocation(line: 50, column: 2, scope: !135) -!164 = !DILocation(line: 50, column: 9, scope: !135) -!165 = !DILocation(line: 51, column: 2, scope: !166) -!166 = distinct !DILexicalBlock(scope: !167, file: !2, line: 51, column: 2) -!167 = distinct !DILexicalBlock(scope: !135, file: !2, line: 51, column: 2) -!168 = !DILocation(line: 51, column: 2, scope: !167) -!169 = !DILocation(line: 52, column: 9, scope: !170) -!170 = distinct !DILexicalBlock(scope: !135, file: !2, line: 52, column: 2) -!171 = !DILocation(line: 52, column: 7, scope: !170) -!172 = !DILocation(line: 52, column: 14, scope: !173) -!173 = distinct !DILexicalBlock(scope: !170, file: !2, line: 52, column: 2) -!174 = !DILocation(line: 52, column: 19, scope: !173) -!175 = !DILocation(line: 52, column: 16, scope: !173) -!176 = !DILocation(line: 52, column: 2, scope: !170) -!177 = !DILocation(line: 54, column: 12, scope: !178) -!178 = distinct !DILexicalBlock(scope: !173, file: !2, line: 53, column: 2) -!179 = !DILocation(line: 54, column: 16, scope: !178) -!180 = !DILocation(line: 54, column: 17, scope: !178) -!181 = !DILocation(line: 54, column: 23, scope: !178) -!182 = !DILocation(line: 54, column: 29, scope: !178) -!183 = !DILocation(line: 54, column: 27, scope: !178) -!184 = !DILocation(line: 54, column: 21, scope: !178) -!185 = !DILocation(line: 54, column: 3, scope: !178) -!186 = !DILocation(line: 54, column: 7, scope: !178) -!187 = !DILocation(line: 54, column: 10, scope: !178) -!188 = !DILocation(line: 55, column: 2, scope: !178) -!189 = !DILocation(line: 52, column: 25, scope: !173) -!190 = !DILocation(line: 52, column: 2, scope: !173) -!191 = distinct !{!191, !176, !192, !193} -!192 = !DILocation(line: 55, column: 2, scope: !170) -!193 = !{!"llvm.loop.mustprogress"} -!194 = !DILocation(line: 56, column: 2, scope: !195) -!195 = distinct !DILexicalBlock(scope: !196, file: !2, line: 56, column: 2) -!196 = distinct !DILexicalBlock(scope: !135, file: !2, line: 56, column: 2) -!197 = !DILocation(line: 56, column: 2, scope: !196) -!198 = !DILocation(line: 57, column: 2, scope: !135) -!199 = !DILocation(line: 57, column: 6, scope: !135) -!200 = !DILocation(line: 57, column: 11, scope: !135) -!201 = !DILocation(line: 58, column: 9, scope: !135) -!202 = !DILocation(line: 58, column: 2, scope: !135) -!203 = distinct !DISubprogram(name: "foo", scope: !2, file: !2, line: 261, type: !204, scopeLine: 261, spFlags: DISPFlagDefinition, unit: !61, retainedNodes: !93) -!204 = !DISubroutineType(types: !205) -!205 = !{!71} -!206 = !DILocation(line: 262, column: 2, scope: !203) -!207 = !DILocation(line: 263, column: 1, scope: !203) -!208 = distinct !DISubprogram(name: "tp_init_vogel", scope: !2, file: !2, line: 72, type: !209, scopeLine: 73, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !61, retainedNodes: !93) -!209 = !DISubroutineType(types: !210) -!210 = !{null, !71, !211, !71, !211, !212, !213} -!211 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !74, size: 64) -!212 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !211, size: 64) -!213 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !66, size: 64) -!214 = !DILocalVariable(name: "nrow", arg: 1, scope: !208, file: !2, line: 72, type: !71) -!215 = !DILocation(line: 72, column: 32, scope: !208) -!216 = !DILocalVariable(name: "row", arg: 2, scope: !208, file: !2, line: 72, type: !211) -!217 = !DILocation(line: 72, column: 45, scope: !208) -!218 = !DILocalVariable(name: "ncol", arg: 3, scope: !208, file: !2, line: 72, type: !71) -!219 = !DILocation(line: 72, column: 54, scope: !208) -!220 = !DILocalVariable(name: "col", arg: 4, scope: !208, file: !2, line: 72, type: !211) -!221 = !DILocation(line: 72, column: 67, scope: !208) -!222 = !DILocalVariable(name: "cost", arg: 5, scope: !208, file: !2, line: 72, type: !212) -!223 = !DILocation(line: 72, column: 80, scope: !208) -!224 = !DILocalVariable(name: "_sol", arg: 6, scope: !208, file: !2, line: 72, type: !213) -!225 = !DILocation(line: 72, column: 100, scope: !208) -!226 = !DILocalVariable(name: "r_del", scope: !208, file: !2, line: 74, type: !227) -!227 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!228 = !DILocation(line: 74, column: 11, scope: !208) -!229 = !DILocalVariable(name: "c_del", scope: !208, file: !2, line: 75, type: !227) -!230 = !DILocation(line: 75, column: 11, scope: !208) -!231 = !DILocalVariable(name: "i", scope: !208, file: !2, line: 77, type: !71) -!232 = !DILocation(line: 77, column: 6, scope: !208) -!233 = !DILocalVariable(name: "j", scope: !208, file: !2, line: 77, type: !71) -!234 = !DILocation(line: 77, column: 9, scope: !208) -!235 = !DILocalVariable(name: "cnt", scope: !208, file: !2, line: 77, type: !71) -!236 = !DILocation(line: 77, column: 12, scope: !208) -!237 = !DILocalVariable(name: "lr", scope: !208, file: !2, line: 78, type: !71) -!238 = !DILocation(line: 78, column: 6, scope: !208) -!239 = !DILocalVariable(name: "lc", scope: !208, file: !2, line: 78, type: !71) -!240 = !DILocation(line: 78, column: 10, scope: !208) -!241 = !DILocalVariable(name: "max", scope: !208, file: !2, line: 80, type: !74) -!242 = !DILocation(line: 80, column: 8, scope: !208) -!243 = !DILocalVariable(name: "mrow", scope: !208, file: !2, line: 81, type: !71) -!244 = !DILocation(line: 81, column: 6, scope: !208) -!245 = !DILocalVariable(name: "mcol", scope: !208, file: !2, line: 81, type: !71) -!246 = !DILocation(line: 81, column: 12, scope: !208) -!247 = !DILocalVariable(name: "sol", scope: !208, file: !2, line: 83, type: !66) -!248 = !DILocation(line: 83, column: 15, scope: !208) -!249 = !DILocation(line: 84, column: 21, scope: !208) -!250 = !DILocation(line: 84, column: 10, scope: !208) -!251 = !DILocation(line: 84, column: 8, scope: !208) -!252 = !DILocation(line: 85, column: 21, scope: !208) -!253 = !DILocation(line: 85, column: 10, scope: !208) -!254 = !DILocation(line: 85, column: 8, scope: !208) -!255 = !DILocation(line: 87, column: 8, scope: !208) -!256 = !DILocation(line: 87, column: 6, scope: !208) -!257 = !DILocation(line: 88, column: 9, scope: !258) -!258 = distinct !DILexicalBlock(scope: !208, file: !2, line: 88, column: 2) -!259 = !DILocation(line: 88, column: 7, scope: !258) -!260 = !DILocation(line: 88, column: 14, scope: !261) -!261 = distinct !DILexicalBlock(scope: !258, file: !2, line: 88, column: 2) -!262 = !DILocation(line: 88, column: 18, scope: !261) -!263 = !DILocation(line: 88, column: 16, scope: !261) -!264 = !DILocation(line: 88, column: 2, scope: !258) -!265 = !DILocation(line: 89, column: 10, scope: !266) -!266 = distinct !DILexicalBlock(scope: !261, file: !2, line: 89, column: 3) -!267 = !DILocation(line: 89, column: 8, scope: !266) -!268 = !DILocation(line: 89, column: 15, scope: !269) -!269 = distinct !DILexicalBlock(scope: !266, file: !2, line: 89, column: 3) -!270 = !DILocation(line: 89, column: 19, scope: !269) -!271 = !DILocation(line: 89, column: 17, scope: !269) -!272 = !DILocation(line: 89, column: 3, scope: !266) -!273 = !DILocation(line: 91, column: 18, scope: !274) -!274 = distinct !DILexicalBlock(scope: !269, file: !2, line: 90, column: 3) -!275 = !DILocation(line: 91, column: 4, scope: !274) -!276 = !DILocation(line: 91, column: 8, scope: !274) -!277 = !DILocation(line: 91, column: 11, scope: !274) -!278 = !DILocation(line: 91, column: 14, scope: !274) -!279 = !DILocation(line: 91, column: 16, scope: !274) -!280 = !DILocation(line: 92, column: 18, scope: !274) -!281 = !DILocation(line: 92, column: 4, scope: !274) -!282 = !DILocation(line: 92, column: 8, scope: !274) -!283 = !DILocation(line: 92, column: 11, scope: !274) -!284 = !DILocation(line: 92, column: 14, scope: !274) -!285 = !DILocation(line: 92, column: 16, scope: !274) -!286 = !DILocation(line: 93, column: 4, scope: !274) -!287 = !DILocation(line: 93, column: 8, scope: !274) -!288 = !DILocation(line: 93, column: 11, scope: !274) -!289 = !DILocation(line: 93, column: 14, scope: !274) -!290 = !DILocation(line: 93, column: 19, scope: !274) -!291 = !DILocation(line: 94, column: 3, scope: !274) -!292 = !DILocation(line: 89, column: 26, scope: !269) -!293 = !DILocation(line: 89, column: 3, scope: !269) -!294 = distinct !{!294, !272, !295, !193} -!295 = !DILocation(line: 94, column: 3, scope: !266) -!296 = !DILocation(line: 88, column: 25, scope: !261) -!297 = !DILocation(line: 88, column: 2, scope: !261) -!298 = distinct !{!298, !264, !299, !193} -!299 = !DILocation(line: 94, column: 3, scope: !258) -!300 = !DILocation(line: 96, column: 7, scope: !208) -!301 = !DILocation(line: 96, column: 5, scope: !208) -!302 = !DILocation(line: 97, column: 7, scope: !208) -!303 = !DILocation(line: 97, column: 5, scope: !208) -!304 = !DILocation(line: 100, column: 2, scope: !208) -!305 = !DILocation(line: 100, column: 9, scope: !208) -!306 = !DILocation(line: 100, column: 14, scope: !208) -!307 = !DILocation(line: 100, column: 12, scope: !208) -!308 = !DILocation(line: 100, column: 17, scope: !208) -!309 = !DILocation(line: 102, column: 7, scope: !310) -!310 = distinct !DILexicalBlock(scope: !208, file: !2, line: 101, column: 2) -!311 = !DILocation(line: 103, column: 15, scope: !310) -!312 = !DILocation(line: 103, column: 8, scope: !310) -!313 = !DILocation(line: 105, column: 10, scope: !314) -!314 = distinct !DILexicalBlock(scope: !310, file: !2, line: 105, column: 3) -!315 = !DILocation(line: 105, column: 8, scope: !314) -!316 = !DILocation(line: 105, column: 15, scope: !317) -!317 = distinct !DILexicalBlock(scope: !314, file: !2, line: 105, column: 3) -!318 = !DILocation(line: 105, column: 19, scope: !317) -!319 = !DILocation(line: 105, column: 17, scope: !317) -!320 = !DILocation(line: 105, column: 3, scope: !314) -!321 = !DILocation(line: 105, column: 35, scope: !322) -!322 = distinct !DILexicalBlock(scope: !317, file: !2, line: 105, column: 34) -!323 = !DILocation(line: 105, column: 34, scope: !317) -!324 = !DILocalVariable(name: "m1", scope: !325, file: !2, line: 107, type: !74) -!325 = distinct !DILexicalBlock(scope: !322, file: !2, line: 106, column: 3) -!326 = !DILocation(line: 107, column: 10, scope: !325) -!327 = !DILocalVariable(name: "m2", scope: !325, file: !2, line: 107, type: !74) -!328 = !DILocation(line: 107, column: 14, scope: !325) -!329 = !DILocalVariable(name: "m1_idx", scope: !325, file: !2, line: 108, type: !71) -!330 = !DILocation(line: 108, column: 8, scope: !325) -!331 = !DILocalVariable(name: "m2_idx", scope: !325, file: !2, line: 108, type: !71) -!332 = !DILocation(line: 108, column: 16, scope: !325) -!333 = !DILocation(line: 109, column: 12, scope: !325) -!334 = !DILocation(line: 109, column: 7, scope: !325) -!335 = !DILocation(line: 110, column: 20, scope: !325) -!336 = !DILocation(line: 110, column: 11, scope: !325) -!337 = !DILocation(line: 111, column: 11, scope: !338) -!338 = distinct !DILexicalBlock(scope: !325, file: !2, line: 111, column: 4) -!339 = !DILocation(line: 111, column: 9, scope: !338) -!340 = !DILocation(line: 111, column: 16, scope: !341) -!341 = distinct !DILexicalBlock(scope: !338, file: !2, line: 111, column: 4) -!342 = !DILocation(line: 111, column: 20, scope: !341) -!343 = !DILocation(line: 111, column: 18, scope: !341) -!344 = !DILocation(line: 111, column: 4, scope: !338) -!345 = !DILocation(line: 111, column: 36, scope: !346) -!346 = distinct !DILexicalBlock(scope: !341, file: !2, line: 111, column: 35) -!347 = !DILocation(line: 111, column: 35, scope: !341) -!348 = !DILocation(line: 113, column: 10, scope: !349) -!349 = distinct !DILexicalBlock(scope: !350, file: !2, line: 113, column: 9) -!350 = distinct !DILexicalBlock(scope: !346, file: !2, line: 112, column: 4) -!351 = !DILocation(line: 113, column: 17, scope: !349) -!352 = !DILocation(line: 113, column: 22, scope: !349) -!353 = !DILocation(line: 113, column: 26, scope: !349) -!354 = !DILocation(line: 113, column: 31, scope: !349) -!355 = !DILocation(line: 113, column: 34, scope: !349) -!356 = !DILocation(line: 113, column: 39, scope: !349) -!357 = !DILocation(line: 113, column: 37, scope: !349) -!358 = !DILocation(line: 113, column: 9, scope: !350) -!359 = !DILocation(line: 115, column: 11, scope: !360) -!360 = distinct !DILexicalBlock(scope: !361, file: !2, line: 115, column: 10) -!361 = distinct !DILexicalBlock(scope: !349, file: !2, line: 114, column: 5) -!362 = !DILocation(line: 115, column: 18, scope: !360) -!363 = !DILocation(line: 115, column: 23, scope: !360) -!364 = !DILocation(line: 115, column: 26, scope: !360) -!365 = !DILocation(line: 115, column: 31, scope: !360) -!366 = !DILocation(line: 115, column: 34, scope: !360) -!367 = !DILocation(line: 115, column: 39, scope: !360) -!368 = !DILocation(line: 115, column: 37, scope: !360) -!369 = !DILocation(line: 115, column: 10, scope: !361) -!370 = !DILocation(line: 117, column: 12, scope: !371) -!371 = distinct !DILexicalBlock(scope: !360, file: !2, line: 116, column: 6) -!372 = !DILocation(line: 117, column: 10, scope: !371) -!373 = !DILocation(line: 118, column: 16, scope: !371) -!374 = !DILocation(line: 118, column: 14, scope: !371) -!375 = !DILocation(line: 119, column: 12, scope: !371) -!376 = !DILocation(line: 119, column: 17, scope: !371) -!377 = !DILocation(line: 119, column: 20, scope: !371) -!378 = !DILocation(line: 119, column: 10, scope: !371) -!379 = !DILocation(line: 120, column: 16, scope: !371) -!380 = !DILocation(line: 120, column: 14, scope: !371) -!381 = !DILocation(line: 121, column: 6, scope: !371) -!382 = !DILocation(line: 124, column: 12, scope: !383) -!383 = distinct !DILexicalBlock(scope: !360, file: !2, line: 123, column: 6) -!384 = !DILocation(line: 124, column: 17, scope: !383) -!385 = !DILocation(line: 124, column: 20, scope: !383) -!386 = !DILocation(line: 124, column: 10, scope: !383) -!387 = !DILocation(line: 125, column: 16, scope: !383) -!388 = !DILocation(line: 125, column: 14, scope: !383) -!389 = !DILocation(line: 127, column: 5, scope: !361) -!390 = !DILocation(line: 128, column: 4, scope: !350) -!391 = !DILocation(line: 111, column: 27, scope: !341) -!392 = !DILocation(line: 111, column: 4, scope: !341) -!393 = distinct !{!393, !344, !394, !193} -!394 = !DILocation(line: 128, column: 4, scope: !338) -!395 = !DILocation(line: 130, column: 4, scope: !396) -!396 = distinct !DILexicalBlock(scope: !397, file: !2, line: 130, column: 4) -!397 = distinct !DILexicalBlock(scope: !325, file: !2, line: 130, column: 4) -!398 = !DILocation(line: 130, column: 4, scope: !397) -!399 = !DILocation(line: 131, column: 8, scope: !400) -!400 = distinct !DILexicalBlock(scope: !325, file: !2, line: 131, column: 8) -!401 = !DILocation(line: 131, column: 15, scope: !400) -!402 = !DILocation(line: 131, column: 8, scope: !325) -!403 = !DILocation(line: 131, column: 20, scope: !400) -!404 = !DILocation(line: 133, column: 9, scope: !405) -!405 = distinct !DILexicalBlock(scope: !325, file: !2, line: 133, column: 8) -!406 = !DILocation(line: 133, column: 14, scope: !405) -!407 = !DILocation(line: 133, column: 19, scope: !405) -!408 = !DILocation(line: 133, column: 23, scope: !405) -!409 = !DILocation(line: 133, column: 28, scope: !405) -!410 = !DILocation(line: 133, column: 26, scope: !405) -!411 = !DILocation(line: 133, column: 33, scope: !405) -!412 = !DILocation(line: 133, column: 31, scope: !405) -!413 = !DILocation(line: 133, column: 8, scope: !325) -!414 = !DILocation(line: 135, column: 11, scope: !415) -!415 = distinct !DILexicalBlock(scope: !405, file: !2, line: 134, column: 4) -!416 = !DILocation(line: 135, column: 16, scope: !415) -!417 = !DILocation(line: 135, column: 14, scope: !415) -!418 = !DILocation(line: 135, column: 9, scope: !415) -!419 = !DILocation(line: 136, column: 12, scope: !415) -!420 = !DILocation(line: 136, column: 10, scope: !415) -!421 = !DILocation(line: 137, column: 12, scope: !415) -!422 = !DILocation(line: 137, column: 10, scope: !415) -!423 = !DILocation(line: 138, column: 4, scope: !415) -!424 = !DILocation(line: 139, column: 3, scope: !325) -!425 = !DILocation(line: 105, column: 26, scope: !317) -!426 = !DILocation(line: 105, column: 3, scope: !317) -!427 = distinct !{!427, !320, !428, !193} -!428 = !DILocation(line: 139, column: 3, scope: !314) -!429 = !DILocation(line: 141, column: 10, scope: !430) -!430 = distinct !DILexicalBlock(scope: !310, file: !2, line: 141, column: 3) -!431 = !DILocation(line: 141, column: 8, scope: !430) -!432 = !DILocation(line: 141, column: 15, scope: !433) -!433 = distinct !DILexicalBlock(scope: !430, file: !2, line: 141, column: 3) -!434 = !DILocation(line: 141, column: 19, scope: !433) -!435 = !DILocation(line: 141, column: 17, scope: !433) -!436 = !DILocation(line: 141, column: 3, scope: !430) -!437 = !DILocation(line: 141, column: 35, scope: !438) -!438 = distinct !DILexicalBlock(scope: !433, file: !2, line: 141, column: 34) -!439 = !DILocation(line: 141, column: 34, scope: !433) -!440 = !DILocalVariable(name: "m1", scope: !441, file: !2, line: 143, type: !74) -!441 = distinct !DILexicalBlock(scope: !438, file: !2, line: 142, column: 3) -!442 = !DILocation(line: 143, column: 10, scope: !441) -!443 = !DILocalVariable(name: "m2", scope: !441, file: !2, line: 143, type: !74) -!444 = !DILocation(line: 143, column: 14, scope: !441) -!445 = !DILocalVariable(name: "m1_idx", scope: !441, file: !2, line: 144, type: !71) -!446 = !DILocation(line: 144, column: 8, scope: !441) -!447 = !DILocalVariable(name: "m2_idx", scope: !441, file: !2, line: 144, type: !71) -!448 = !DILocation(line: 144, column: 16, scope: !441) -!449 = !DILocation(line: 145, column: 12, scope: !441) -!450 = !DILocation(line: 145, column: 7, scope: !441) -!451 = !DILocation(line: 146, column: 20, scope: !441) -!452 = !DILocation(line: 146, column: 11, scope: !441) -!453 = !DILocation(line: 147, column: 11, scope: !454) -!454 = distinct !DILexicalBlock(scope: !441, file: !2, line: 147, column: 4) -!455 = !DILocation(line: 147, column: 9, scope: !454) -!456 = !DILocation(line: 147, column: 16, scope: !457) -!457 = distinct !DILexicalBlock(scope: !454, file: !2, line: 147, column: 4) -!458 = !DILocation(line: 147, column: 20, scope: !457) -!459 = !DILocation(line: 147, column: 18, scope: !457) -!460 = !DILocation(line: 147, column: 4, scope: !454) -!461 = !DILocation(line: 147, column: 36, scope: !462) -!462 = distinct !DILexicalBlock(scope: !457, file: !2, line: 147, column: 35) -!463 = !DILocation(line: 147, column: 35, scope: !457) -!464 = !DILocation(line: 149, column: 10, scope: !465) -!465 = distinct !DILexicalBlock(scope: !466, file: !2, line: 149, column: 9) -!466 = distinct !DILexicalBlock(scope: !462, file: !2, line: 148, column: 4) -!467 = !DILocation(line: 149, column: 17, scope: !465) -!468 = !DILocation(line: 149, column: 22, scope: !465) -!469 = !DILocation(line: 149, column: 26, scope: !465) -!470 = !DILocation(line: 149, column: 31, scope: !465) -!471 = !DILocation(line: 149, column: 34, scope: !465) -!472 = !DILocation(line: 149, column: 39, scope: !465) -!473 = !DILocation(line: 149, column: 37, scope: !465) -!474 = !DILocation(line: 149, column: 9, scope: !466) -!475 = !DILocation(line: 151, column: 11, scope: !476) -!476 = distinct !DILexicalBlock(scope: !477, file: !2, line: 151, column: 10) -!477 = distinct !DILexicalBlock(scope: !465, file: !2, line: 150, column: 5) -!478 = !DILocation(line: 151, column: 18, scope: !476) -!479 = !DILocation(line: 151, column: 23, scope: !476) -!480 = !DILocation(line: 151, column: 27, scope: !476) -!481 = !DILocation(line: 151, column: 32, scope: !476) -!482 = !DILocation(line: 151, column: 35, scope: !476) -!483 = !DILocation(line: 151, column: 40, scope: !476) -!484 = !DILocation(line: 151, column: 38, scope: !476) -!485 = !DILocation(line: 151, column: 10, scope: !477) -!486 = !DILocation(line: 153, column: 12, scope: !487) -!487 = distinct !DILexicalBlock(scope: !476, file: !2, line: 152, column: 6) -!488 = !DILocation(line: 153, column: 10, scope: !487) -!489 = !DILocation(line: 154, column: 16, scope: !487) -!490 = !DILocation(line: 154, column: 14, scope: !487) -!491 = !DILocation(line: 155, column: 12, scope: !487) -!492 = !DILocation(line: 155, column: 17, scope: !487) -!493 = !DILocation(line: 155, column: 20, scope: !487) -!494 = !DILocation(line: 155, column: 10, scope: !487) -!495 = !DILocation(line: 156, column: 16, scope: !487) -!496 = !DILocation(line: 156, column: 14, scope: !487) -!497 = !DILocation(line: 157, column: 6, scope: !487) -!498 = !DILocation(line: 160, column: 12, scope: !499) -!499 = distinct !DILexicalBlock(scope: !476, file: !2, line: 159, column: 6) -!500 = !DILocation(line: 160, column: 17, scope: !499) -!501 = !DILocation(line: 160, column: 20, scope: !499) -!502 = !DILocation(line: 160, column: 10, scope: !499) -!503 = !DILocation(line: 161, column: 16, scope: !499) -!504 = !DILocation(line: 161, column: 14, scope: !499) -!505 = !DILocation(line: 163, column: 5, scope: !477) -!506 = !DILocation(line: 164, column: 4, scope: !466) -!507 = !DILocation(line: 147, column: 27, scope: !457) -!508 = !DILocation(line: 147, column: 4, scope: !457) -!509 = distinct !{!509, !460, !510, !193} -!510 = !DILocation(line: 164, column: 4, scope: !454) -!511 = !DILocation(line: 166, column: 4, scope: !512) -!512 = distinct !DILexicalBlock(scope: !513, file: !2, line: 166, column: 4) -!513 = distinct !DILexicalBlock(scope: !441, file: !2, line: 166, column: 4) -!514 = !DILocation(line: 166, column: 4, scope: !513) -!515 = !DILocation(line: 167, column: 8, scope: !516) -!516 = distinct !DILexicalBlock(scope: !441, file: !2, line: 167, column: 8) -!517 = !DILocation(line: 167, column: 15, scope: !516) -!518 = !DILocation(line: 167, column: 8, scope: !441) -!519 = !DILocation(line: 167, column: 20, scope: !516) -!520 = !DILocation(line: 169, column: 9, scope: !521) -!521 = distinct !DILexicalBlock(scope: !441, file: !2, line: 169, column: 8) -!522 = !DILocation(line: 169, column: 14, scope: !521) -!523 = !DILocation(line: 169, column: 19, scope: !521) -!524 = !DILocation(line: 169, column: 23, scope: !521) -!525 = !DILocation(line: 169, column: 28, scope: !521) -!526 = !DILocation(line: 169, column: 26, scope: !521) -!527 = !DILocation(line: 169, column: 33, scope: !521) -!528 = !DILocation(line: 169, column: 31, scope: !521) -!529 = !DILocation(line: 169, column: 8, scope: !441) -!530 = !DILocation(line: 171, column: 11, scope: !531) -!531 = distinct !DILexicalBlock(scope: !521, file: !2, line: 170, column: 4) -!532 = !DILocation(line: 171, column: 16, scope: !531) -!533 = !DILocation(line: 171, column: 14, scope: !531) -!534 = !DILocation(line: 171, column: 9, scope: !531) -!535 = !DILocation(line: 172, column: 12, scope: !531) -!536 = !DILocation(line: 172, column: 10, scope: !531) -!537 = !DILocation(line: 173, column: 12, scope: !531) -!538 = !DILocation(line: 173, column: 10, scope: !531) -!539 = !DILocation(line: 174, column: 4, scope: !531) -!540 = !DILocation(line: 175, column: 3, scope: !441) -!541 = !DILocation(line: 141, column: 26, scope: !433) -!542 = !DILocation(line: 141, column: 3, scope: !433) -!543 = distinct !{!543, !436, !544, !193} -!544 = !DILocation(line: 175, column: 3, scope: !430) -!545 = !DILocation(line: 177, column: 3, scope: !546) -!546 = distinct !DILexicalBlock(scope: !547, file: !2, line: 177, column: 3) -!547 = distinct !DILexicalBlock(scope: !310, file: !2, line: 177, column: 3) -!548 = !DILocation(line: 177, column: 3, scope: !547) -!549 = !DILocation(line: 178, column: 3, scope: !550) -!550 = distinct !DILexicalBlock(scope: !551, file: !2, line: 178, column: 3) -!551 = distinct !DILexicalBlock(scope: !310, file: !2, line: 178, column: 3) -!552 = !DILocation(line: 178, column: 3, scope: !551) -!553 = !DILocation(line: 185, column: 3, scope: !554) -!554 = distinct !DILexicalBlock(scope: !555, file: !2, line: 185, column: 3) -!555 = distinct !DILexicalBlock(scope: !310, file: !2, line: 185, column: 3) -!556 = !DILocation(line: 185, column: 3, scope: !555) -!557 = !DILocation(line: 186, column: 3, scope: !558) -!558 = distinct !DILexicalBlock(scope: !559, file: !2, line: 186, column: 3) -!559 = distinct !DILexicalBlock(scope: !310, file: !2, line: 186, column: 3) -!560 = !DILocation(line: 186, column: 3, scope: !559) -!561 = !DILocation(line: 188, column: 8, scope: !562) -!562 = distinct !DILexicalBlock(scope: !310, file: !2, line: 188, column: 7) -!563 = !DILocation(line: 188, column: 11, scope: !562) -!564 = !DILocation(line: 188, column: 16, scope: !562) -!565 = !DILocation(line: 188, column: 21, scope: !562) -!566 = !DILocation(line: 188, column: 25, scope: !562) -!567 = !DILocation(line: 188, column: 34, scope: !562) -!568 = !DILocation(line: 188, column: 38, scope: !562) -!569 = !DILocation(line: 188, column: 31, scope: !562) -!570 = !DILocation(line: 188, column: 45, scope: !562) -!571 = !DILocation(line: 188, column: 49, scope: !562) -!572 = !DILocation(line: 188, column: 52, scope: !562) -!573 = !DILocation(line: 188, column: 7, scope: !310) -!574 = !DILocation(line: 190, column: 4, scope: !575) -!575 = distinct !DILexicalBlock(scope: !562, file: !2, line: 189, column: 3) -!576 = !DILocation(line: 190, column: 8, scope: !575) -!577 = !DILocation(line: 190, column: 14, scope: !575) -!578 = !DILocation(line: 190, column: 20, scope: !575) -!579 = !DILocation(line: 190, column: 25, scope: !575) -!580 = !DILocation(line: 191, column: 28, scope: !575) -!581 = !DILocation(line: 191, column: 32, scope: !575) -!582 = !DILocation(line: 191, column: 4, scope: !575) -!583 = !DILocation(line: 191, column: 8, scope: !575) -!584 = !DILocation(line: 191, column: 14, scope: !575) -!585 = !DILocation(line: 191, column: 20, scope: !575) -!586 = !DILocation(line: 191, column: 26, scope: !575) -!587 = !DILocation(line: 192, column: 17, scope: !575) -!588 = !DILocation(line: 192, column: 21, scope: !575) -!589 = !DILocation(line: 192, column: 4, scope: !575) -!590 = !DILocation(line: 192, column: 8, scope: !575) -!591 = !DILocation(line: 192, column: 14, scope: !575) -!592 = !DILocation(line: 193, column: 4, scope: !575) -!593 = !DILocation(line: 193, column: 8, scope: !575) -!594 = !DILocation(line: 193, column: 14, scope: !575) -!595 = !DILocation(line: 194, column: 8, scope: !596) -!596 = distinct !DILexicalBlock(scope: !575, file: !2, line: 194, column: 8) -!597 = !DILocation(line: 194, column: 12, scope: !596) -!598 = !DILocation(line: 194, column: 18, scope: !596) -!599 = !DILocation(line: 194, column: 8, scope: !575) -!600 = !DILocation(line: 194, column: 23, scope: !596) -!601 = !DILocation(line: 194, column: 27, scope: !596) -!602 = !DILocation(line: 194, column: 33, scope: !596) -!603 = !DILocation(line: 195, column: 4, scope: !575) -!604 = !DILocation(line: 195, column: 4, scope: !605) -!605 = distinct !DILexicalBlock(scope: !575, file: !2, line: 195, column: 4) -!606 = !DILocation(line: 196, column: 6, scope: !575) -!607 = !DILocation(line: 197, column: 3, scope: !575) -!608 = !DILocation(line: 200, column: 4, scope: !609) -!609 = distinct !DILexicalBlock(scope: !610, file: !2, line: 200, column: 4) -!610 = distinct !DILexicalBlock(scope: !611, file: !2, line: 200, column: 4) -!611 = distinct !DILexicalBlock(scope: !562, file: !2, line: 199, column: 3) -!612 = !DILocation(line: 200, column: 4, scope: !610) -!613 = !DILocation(line: 201, column: 4, scope: !611) -!614 = !DILocation(line: 201, column: 8, scope: !611) -!615 = !DILocation(line: 201, column: 14, scope: !611) -!616 = !DILocation(line: 201, column: 20, scope: !611) -!617 = !DILocation(line: 201, column: 25, scope: !611) -!618 = !DILocation(line: 202, column: 28, scope: !611) -!619 = !DILocation(line: 202, column: 32, scope: !611) -!620 = !DILocation(line: 202, column: 4, scope: !611) -!621 = !DILocation(line: 202, column: 8, scope: !611) -!622 = !DILocation(line: 202, column: 14, scope: !611) -!623 = !DILocation(line: 202, column: 20, scope: !611) -!624 = !DILocation(line: 202, column: 26, scope: !611) -!625 = !DILocation(line: 203, column: 17, scope: !611) -!626 = !DILocation(line: 203, column: 21, scope: !611) -!627 = !DILocation(line: 203, column: 4, scope: !611) -!628 = !DILocation(line: 203, column: 8, scope: !611) -!629 = !DILocation(line: 203, column: 14, scope: !611) -!630 = !DILocation(line: 204, column: 4, scope: !611) -!631 = !DILocation(line: 204, column: 8, scope: !611) -!632 = !DILocation(line: 204, column: 14, scope: !611) -!633 = !DILocation(line: 205, column: 4, scope: !611) -!634 = !DILocation(line: 205, column: 4, scope: !635) -!635 = distinct !DILexicalBlock(scope: !611, file: !2, line: 205, column: 4) -!636 = !DILocation(line: 206, column: 6, scope: !611) -!637 = distinct !{!637, !304, !638, !193} -!638 = !DILocation(line: 209, column: 2, scope: !208) -!639 = !DILocation(line: 211, column: 2, scope: !640) -!640 = distinct !DILexicalBlock(scope: !641, file: !2, line: 211, column: 2) -!641 = distinct !DILexicalBlock(scope: !208, file: !2, line: 211, column: 2) -!642 = !DILocation(line: 211, column: 2, scope: !641) -!643 = !DILocation(line: 212, column: 2, scope: !644) -!644 = distinct !DILexicalBlock(scope: !645, file: !2, line: 212, column: 2) -!645 = distinct !DILexicalBlock(scope: !208, file: !2, line: 212, column: 2) -!646 = !DILocation(line: 212, column: 2, scope: !645) -!647 = !DILocation(line: 214, column: 2, scope: !208) -!648 = !DILocation(line: 216, column: 8, scope: !649) -!649 = distinct !DILexicalBlock(scope: !650, file: !2, line: 215, column: 2) -!650 = distinct !DILexicalBlock(scope: !651, file: !2, line: 214, column: 2) -!651 = distinct !DILexicalBlock(scope: !208, file: !2, line: 214, column: 2) -!652 = !DILocation(line: 217, column: 10, scope: !653) -!653 = distinct !DILexicalBlock(scope: !649, file: !2, line: 217, column: 3) -!654 = !DILocation(line: 217, column: 8, scope: !653) -!655 = !DILocation(line: 217, column: 15, scope: !656) -!656 = distinct !DILexicalBlock(scope: !653, file: !2, line: 217, column: 3) -!657 = !DILocation(line: 217, column: 19, scope: !656) -!658 = !DILocation(line: 217, column: 17, scope: !656) -!659 = !DILocation(line: 217, column: 3, scope: !653) -!660 = !DILocation(line: 217, column: 35, scope: !661) -!661 = distinct !DILexicalBlock(scope: !656, file: !2, line: 217, column: 34) -!662 = !DILocation(line: 217, column: 34, scope: !656) -!663 = !DILocation(line: 219, column: 9, scope: !664) -!664 = distinct !DILexicalBlock(scope: !661, file: !2, line: 218, column: 3) -!665 = !DILocation(line: 220, column: 11, scope: !666) -!666 = distinct !DILexicalBlock(scope: !664, file: !2, line: 220, column: 4) -!667 = !DILocation(line: 220, column: 9, scope: !666) -!668 = !DILocation(line: 220, column: 16, scope: !669) -!669 = distinct !DILexicalBlock(scope: !666, file: !2, line: 220, column: 4) -!670 = !DILocation(line: 220, column: 20, scope: !669) -!671 = !DILocation(line: 220, column: 18, scope: !669) -!672 = !DILocation(line: 220, column: 4, scope: !666) -!673 = !DILocation(line: 220, column: 36, scope: !674) -!674 = distinct !DILexicalBlock(scope: !669, file: !2, line: 220, column: 35) -!675 = !DILocation(line: 220, column: 35, scope: !669) -!676 = !DILocation(line: 222, column: 12, scope: !677) -!677 = distinct !DILexicalBlock(scope: !674, file: !2, line: 221, column: 4) -!678 = !DILocation(line: 222, column: 10, scope: !677) -!679 = !DILocation(line: 223, column: 5, scope: !677) -!680 = !DILocation(line: 220, column: 27, scope: !669) -!681 = !DILocation(line: 220, column: 4, scope: !669) -!682 = distinct !{!682, !672, !683, !193} -!683 = !DILocation(line: 224, column: 4, scope: !666) -!684 = !DILocation(line: 225, column: 8, scope: !685) -!685 = distinct !DILexicalBlock(scope: !664, file: !2, line: 225, column: 8) -!686 = !DILocation(line: 225, column: 13, scope: !685) -!687 = !DILocation(line: 225, column: 8, scope: !664) -!688 = !DILocation(line: 227, column: 12, scope: !689) -!689 = distinct !DILexicalBlock(scope: !685, file: !2, line: 226, column: 4) -!690 = !DILocation(line: 227, column: 10, scope: !689) -!691 = !DILocation(line: 228, column: 5, scope: !689) -!692 = !DILocation(line: 230, column: 3, scope: !664) -!693 = !DILocation(line: 217, column: 26, scope: !656) -!694 = !DILocation(line: 217, column: 3, scope: !656) -!695 = distinct !{!695, !659, !696, !193} -!696 = !DILocation(line: 230, column: 3, scope: !653) -!697 = !DILocation(line: 231, column: 7, scope: !698) -!698 = distinct !DILexicalBlock(scope: !649, file: !2, line: 231, column: 7) -!699 = !DILocation(line: 231, column: 12, scope: !698) -!700 = !DILocation(line: 231, column: 16, scope: !698) -!701 = !DILocation(line: 231, column: 19, scope: !698) -!702 = !DILocation(line: 231, column: 24, scope: !698) -!703 = !DILocation(line: 231, column: 7, scope: !649) -!704 = !DILocation(line: 231, column: 29, scope: !698) -!705 = !DILocation(line: 232, column: 3, scope: !706) -!706 = distinct !DILexicalBlock(scope: !707, file: !2, line: 232, column: 3) -!707 = distinct !DILexicalBlock(scope: !649, file: !2, line: 232, column: 3) -!708 = !DILocation(line: 232, column: 3, scope: !707) -!709 = !DILocation(line: 233, column: 3, scope: !710) -!710 = distinct !DILexicalBlock(scope: !711, file: !2, line: 233, column: 3) -!711 = distinct !DILexicalBlock(scope: !649, file: !2, line: 233, column: 3) -!712 = !DILocation(line: 233, column: 3, scope: !711) -!713 = !DILocation(line: 235, column: 6, scope: !649) -!714 = !DILocation(line: 237, column: 7, scope: !715) -!715 = distinct !DILexicalBlock(scope: !649, file: !2, line: 237, column: 7) -!716 = !DILocation(line: 237, column: 11, scope: !715) -!717 = !DILocation(line: 237, column: 19, scope: !715) -!718 = !DILocation(line: 237, column: 23, scope: !715) -!719 = !DILocation(line: 237, column: 17, scope: !715) -!720 = !DILocation(line: 237, column: 7, scope: !649) -!721 = !DILocation(line: 239, column: 4, scope: !722) -!722 = distinct !DILexicalBlock(scope: !715, file: !2, line: 238, column: 3) -!723 = !DILocation(line: 239, column: 8, scope: !722) -!724 = !DILocation(line: 239, column: 14, scope: !722) -!725 = !DILocation(line: 239, column: 20, scope: !722) -!726 = !DILocation(line: 239, column: 25, scope: !722) -!727 = !DILocation(line: 240, column: 28, scope: !722) -!728 = !DILocation(line: 240, column: 32, scope: !722) -!729 = !DILocation(line: 240, column: 4, scope: !722) -!730 = !DILocation(line: 240, column: 8, scope: !722) -!731 = !DILocation(line: 240, column: 14, scope: !722) -!732 = !DILocation(line: 240, column: 20, scope: !722) -!733 = !DILocation(line: 240, column: 26, scope: !722) -!734 = !DILocation(line: 241, column: 17, scope: !722) -!735 = !DILocation(line: 241, column: 21, scope: !722) -!736 = !DILocation(line: 241, column: 4, scope: !722) -!737 = !DILocation(line: 241, column: 8, scope: !722) -!738 = !DILocation(line: 241, column: 14, scope: !722) -!739 = !DILocation(line: 242, column: 4, scope: !722) -!740 = !DILocation(line: 242, column: 8, scope: !722) -!741 = !DILocation(line: 242, column: 14, scope: !722) -!742 = !DILocation(line: 243, column: 4, scope: !722) -!743 = !DILocation(line: 243, column: 4, scope: !744) -!744 = distinct !DILexicalBlock(scope: !722, file: !2, line: 243, column: 4) -!745 = !DILocation(line: 244, column: 3, scope: !722) -!746 = !DILocation(line: 247, column: 4, scope: !747) -!747 = distinct !DILexicalBlock(scope: !715, file: !2, line: 246, column: 3) -!748 = !DILocation(line: 247, column: 8, scope: !747) -!749 = !DILocation(line: 247, column: 14, scope: !747) -!750 = !DILocation(line: 247, column: 20, scope: !747) -!751 = !DILocation(line: 247, column: 25, scope: !747) -!752 = !DILocation(line: 248, column: 28, scope: !747) -!753 = !DILocation(line: 248, column: 32, scope: !747) -!754 = !DILocation(line: 248, column: 4, scope: !747) -!755 = !DILocation(line: 248, column: 8, scope: !747) -!756 = !DILocation(line: 248, column: 14, scope: !747) -!757 = !DILocation(line: 248, column: 20, scope: !747) -!758 = !DILocation(line: 248, column: 26, scope: !747) -!759 = !DILocation(line: 249, column: 17, scope: !747) -!760 = !DILocation(line: 249, column: 21, scope: !747) -!761 = !DILocation(line: 249, column: 4, scope: !747) -!762 = !DILocation(line: 249, column: 8, scope: !747) -!763 = !DILocation(line: 249, column: 14, scope: !747) -!764 = !DILocation(line: 250, column: 4, scope: !747) -!765 = !DILocation(line: 250, column: 8, scope: !747) -!766 = !DILocation(line: 250, column: 14, scope: !747) -!767 = !DILocation(line: 251, column: 4, scope: !747) -!768 = !DILocation(line: 251, column: 4, scope: !769) -!769 = distinct !DILexicalBlock(scope: !747, file: !2, line: 251, column: 4) -!770 = !DILocation(line: 214, column: 2, scope: !650) -!771 = distinct !{!771, !772, !773} -!772 = !DILocation(line: 214, column: 2, scope: !651) -!773 = !DILocation(line: 253, column: 2, scope: !651) -!774 = !DILocation(line: 256, column: 2, scope: !208) -!775 = !DILocation(line: 257, column: 2, scope: !208) -!776 = !DILocation(line: 259, column: 10, scope: !208) -!777 = !DILocation(line: 259, column: 3, scope: !208) -!778 = !DILocation(line: 259, column: 8, scope: !208) -!779 = !DILocation(line: 260, column: 1, scope: !208) +!158 = !DILocation(line: 50, column: 21, scope: !135) +!159 = !DILocation(line: 50, column: 27, scope: !135) +!160 = !DILocation(line: 50, column: 25, scope: !135) +!161 = !DILocation(line: 50, column: 11, scope: !135) +!162 = !DILocation(line: 50, column: 2, scope: !135) +!163 = !DILocation(line: 50, column: 9, scope: !135) +!164 = !DILocation(line: 51, column: 2, scope: !165) +!165 = distinct !DILexicalBlock(scope: !166, file: !2, line: 51, column: 2) +!166 = distinct !DILexicalBlock(scope: !135, file: !2, line: 51, column: 2) +!167 = !DILocation(line: 52, column: 9, scope: !168) +!168 = distinct !DILexicalBlock(scope: !135, file: !2, line: 52, column: 2) +!169 = !DILocation(line: 52, column: 7, scope: !168) +!170 = !DILocation(line: 52, column: 14, scope: !171) +!171 = distinct !DILexicalBlock(scope: !168, file: !2, line: 52, column: 2) +!172 = !DILocation(line: 52, column: 19, scope: !171) +!173 = !DILocation(line: 52, column: 16, scope: !171) +!174 = !DILocation(line: 52, column: 2, scope: !168) +!175 = !DILocation(line: 54, column: 12, scope: !176) +!176 = distinct !DILexicalBlock(scope: !171, file: !2, line: 53, column: 2) +!177 = !DILocation(line: 54, column: 16, scope: !176) +!178 = !DILocation(line: 54, column: 17, scope: !176) +!179 = !DILocation(line: 54, column: 23, scope: !176) +!180 = !DILocation(line: 54, column: 29, scope: !176) +!181 = !DILocation(line: 54, column: 27, scope: !176) +!182 = !DILocation(line: 54, column: 21, scope: !176) +!183 = !DILocation(line: 54, column: 3, scope: !176) +!184 = !DILocation(line: 54, column: 7, scope: !176) +!185 = !DILocation(line: 54, column: 10, scope: !176) +!186 = !DILocation(line: 55, column: 2, scope: !176) +!187 = !DILocation(line: 52, column: 25, scope: !171) +!188 = !DILocation(line: 52, column: 2, scope: !171) +!189 = distinct !{!189, !174, !190, !191} +!190 = !DILocation(line: 55, column: 2, scope: !168) +!191 = !{!"llvm.loop.mustprogress"} +!192 = !DILocation(line: 56, column: 2, scope: !193) +!193 = distinct !DILexicalBlock(scope: !194, file: !2, line: 56, column: 2) +!194 = distinct !DILexicalBlock(scope: !135, file: !2, line: 56, column: 2) +!195 = !DILocation(line: 57, column: 2, scope: !135) +!196 = !DILocation(line: 57, column: 6, scope: !135) +!197 = !DILocation(line: 57, column: 11, scope: !135) +!198 = !DILocation(line: 58, column: 9, scope: !135) +!199 = !DILocation(line: 58, column: 2, scope: !135) +!200 = distinct !DISubprogram(name: "foo", scope: !2, file: !2, line: 261, type: !201, scopeLine: 261, spFlags: DISPFlagDefinition, unit: !61) +!201 = !DISubroutineType(types: !202) +!202 = !{!71} +!203 = !DILocation(line: 262, column: 2, scope: !200) +!204 = !DILocation(line: 263, column: 1, scope: !200) +!205 = distinct !DISubprogram(name: "tp_init_vogel", scope: !2, file: !2, line: 72, type: !206, scopeLine: 73, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !61, retainedNodes: !93) +!206 = !DISubroutineType(types: !207) +!207 = !{null, !71, !208, !71, !208, !209, !210} +!208 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !74, size: 64) +!209 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !208, size: 64) +!210 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !66, size: 64) +!211 = !DILocalVariable(name: "nrow", arg: 1, scope: !205, file: !2, line: 72, type: !71) +!212 = !DILocation(line: 72, column: 32, scope: !205) +!213 = !DILocalVariable(name: "row", arg: 2, scope: !205, file: !2, line: 72, type: !208) +!214 = !DILocation(line: 72, column: 45, scope: !205) +!215 = !DILocalVariable(name: "ncol", arg: 3, scope: !205, file: !2, line: 72, type: !71) +!216 = !DILocation(line: 72, column: 54, scope: !205) +!217 = !DILocalVariable(name: "col", arg: 4, scope: !205, file: !2, line: 72, type: !208) +!218 = !DILocation(line: 72, column: 67, scope: !205) +!219 = !DILocalVariable(name: "cost", arg: 5, scope: !205, file: !2, line: 72, type: !209) +!220 = !DILocation(line: 72, column: 80, scope: !205) +!221 = !DILocalVariable(name: "_sol", arg: 6, scope: !205, file: !2, line: 72, type: !210) +!222 = !DILocation(line: 72, column: 100, scope: !205) +!223 = !DILocalVariable(name: "r_del", scope: !205, file: !2, line: 74, type: !224) +!224 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!225 = !DILocation(line: 74, column: 11, scope: !205) +!226 = !DILocalVariable(name: "c_del", scope: !205, file: !2, line: 75, type: !224) +!227 = !DILocation(line: 75, column: 11, scope: !205) +!228 = !DILocalVariable(name: "i", scope: !205, file: !2, line: 77, type: !71) +!229 = !DILocation(line: 77, column: 6, scope: !205) +!230 = !DILocalVariable(name: "j", scope: !205, file: !2, line: 77, type: !71) +!231 = !DILocation(line: 77, column: 9, scope: !205) +!232 = !DILocalVariable(name: "cnt", scope: !205, file: !2, line: 77, type: !71) +!233 = !DILocation(line: 77, column: 12, scope: !205) +!234 = !DILocalVariable(name: "lr", scope: !205, file: !2, line: 78, type: !71) +!235 = !DILocation(line: 78, column: 6, scope: !205) +!236 = !DILocalVariable(name: "lc", scope: !205, file: !2, line: 78, type: !71) +!237 = !DILocation(line: 78, column: 10, scope: !205) +!238 = !DILocalVariable(name: "max", scope: !205, file: !2, line: 80, type: !74) +!239 = !DILocation(line: 80, column: 8, scope: !205) +!240 = !DILocalVariable(name: "mrow", scope: !205, file: !2, line: 81, type: !71) +!241 = !DILocation(line: 81, column: 6, scope: !205) +!242 = !DILocalVariable(name: "mcol", scope: !205, file: !2, line: 81, type: !71) +!243 = !DILocation(line: 81, column: 12, scope: !205) +!244 = !DILocalVariable(name: "sol", scope: !205, file: !2, line: 83, type: !66) +!245 = !DILocation(line: 83, column: 15, scope: !205) +!246 = !DILocation(line: 84, column: 21, scope: !205) +!247 = !DILocation(line: 84, column: 10, scope: !205) +!248 = !DILocation(line: 84, column: 8, scope: !205) +!249 = !DILocation(line: 85, column: 21, scope: !205) +!250 = !DILocation(line: 85, column: 10, scope: !205) +!251 = !DILocation(line: 85, column: 8, scope: !205) +!252 = !DILocation(line: 87, column: 8, scope: !205) +!253 = !DILocation(line: 87, column: 6, scope: !205) +!254 = !DILocation(line: 88, column: 9, scope: !255) +!255 = distinct !DILexicalBlock(scope: !205, file: !2, line: 88, column: 2) +!256 = !DILocation(line: 88, column: 7, scope: !255) +!257 = !DILocation(line: 88, column: 14, scope: !258) +!258 = distinct !DILexicalBlock(scope: !255, file: !2, line: 88, column: 2) +!259 = !DILocation(line: 88, column: 18, scope: !258) +!260 = !DILocation(line: 88, column: 16, scope: !258) +!261 = !DILocation(line: 88, column: 2, scope: !255) +!262 = !DILocation(line: 89, column: 10, scope: !263) +!263 = distinct !DILexicalBlock(scope: !258, file: !2, line: 89, column: 3) +!264 = !DILocation(line: 89, column: 8, scope: !263) +!265 = !DILocation(line: 89, column: 15, scope: !266) +!266 = distinct !DILexicalBlock(scope: !263, file: !2, line: 89, column: 3) +!267 = !DILocation(line: 89, column: 19, scope: !266) +!268 = !DILocation(line: 89, column: 17, scope: !266) +!269 = !DILocation(line: 89, column: 3, scope: !263) +!270 = !DILocation(line: 91, column: 18, scope: !271) +!271 = distinct !DILexicalBlock(scope: !266, file: !2, line: 90, column: 3) +!272 = !DILocation(line: 91, column: 4, scope: !271) +!273 = !DILocation(line: 91, column: 8, scope: !271) +!274 = !DILocation(line: 91, column: 11, scope: !271) +!275 = !DILocation(line: 91, column: 14, scope: !271) +!276 = !DILocation(line: 91, column: 16, scope: !271) +!277 = !DILocation(line: 92, column: 18, scope: !271) +!278 = !DILocation(line: 92, column: 4, scope: !271) +!279 = !DILocation(line: 92, column: 8, scope: !271) +!280 = !DILocation(line: 92, column: 11, scope: !271) +!281 = !DILocation(line: 92, column: 14, scope: !271) +!282 = !DILocation(line: 92, column: 16, scope: !271) +!283 = !DILocation(line: 93, column: 4, scope: !271) +!284 = !DILocation(line: 93, column: 8, scope: !271) +!285 = !DILocation(line: 93, column: 11, scope: !271) +!286 = !DILocation(line: 93, column: 14, scope: !271) +!287 = !DILocation(line: 93, column: 19, scope: !271) +!288 = !DILocation(line: 94, column: 3, scope: !271) +!289 = !DILocation(line: 89, column: 26, scope: !266) +!290 = !DILocation(line: 89, column: 3, scope: !266) +!291 = distinct !{!291, !269, !292, !191} +!292 = !DILocation(line: 94, column: 3, scope: !263) +!293 = !DILocation(line: 88, column: 25, scope: !258) +!294 = !DILocation(line: 88, column: 2, scope: !258) +!295 = distinct !{!295, !261, !296, !191} +!296 = !DILocation(line: 94, column: 3, scope: !255) +!297 = !DILocation(line: 96, column: 7, scope: !205) +!298 = !DILocation(line: 96, column: 5, scope: !205) +!299 = !DILocation(line: 97, column: 7, scope: !205) +!300 = !DILocation(line: 97, column: 5, scope: !205) +!301 = !DILocation(line: 100, column: 2, scope: !205) +!302 = !DILocation(line: 100, column: 9, scope: !205) +!303 = !DILocation(line: 100, column: 14, scope: !205) +!304 = !DILocation(line: 100, column: 12, scope: !205) +!305 = !DILocation(line: 100, column: 17, scope: !205) +!306 = !DILocation(line: 102, column: 7, scope: !307) +!307 = distinct !DILexicalBlock(scope: !205, file: !2, line: 101, column: 2) +!308 = !DILocation(line: 103, column: 15, scope: !307) +!309 = !DILocation(line: 103, column: 8, scope: !307) +!310 = !DILocation(line: 105, column: 10, scope: !311) +!311 = distinct !DILexicalBlock(scope: !307, file: !2, line: 105, column: 3) +!312 = !DILocation(line: 105, column: 8, scope: !311) +!313 = !DILocation(line: 105, column: 15, scope: !314) +!314 = distinct !DILexicalBlock(scope: !311, file: !2, line: 105, column: 3) +!315 = !DILocation(line: 105, column: 19, scope: !314) +!316 = !DILocation(line: 105, column: 17, scope: !314) +!317 = !DILocation(line: 105, column: 3, scope: !311) +!318 = !DILocation(line: 105, column: 35, scope: !319) +!319 = distinct !DILexicalBlock(scope: !314, file: !2, line: 105, column: 34) +!320 = !DILocation(line: 105, column: 34, scope: !319) +!321 = !DILocalVariable(name: "m1", scope: !322, file: !2, line: 107, type: !74) +!322 = distinct !DILexicalBlock(scope: !319, file: !2, line: 106, column: 3) +!323 = !DILocation(line: 107, column: 10, scope: !322) +!324 = !DILocalVariable(name: "m2", scope: !322, file: !2, line: 107, type: !74) +!325 = !DILocation(line: 107, column: 14, scope: !322) +!326 = !DILocalVariable(name: "m1_idx", scope: !322, file: !2, line: 108, type: !71) +!327 = !DILocation(line: 108, column: 8, scope: !322) +!328 = !DILocalVariable(name: "m2_idx", scope: !322, file: !2, line: 108, type: !71) +!329 = !DILocation(line: 108, column: 16, scope: !322) +!330 = !DILocation(line: 109, column: 12, scope: !322) +!331 = !DILocation(line: 109, column: 7, scope: !322) +!332 = !DILocation(line: 110, column: 20, scope: !322) +!333 = !DILocation(line: 110, column: 11, scope: !322) +!334 = !DILocation(line: 111, column: 11, scope: !335) +!335 = distinct !DILexicalBlock(scope: !322, file: !2, line: 111, column: 4) +!336 = !DILocation(line: 111, column: 9, scope: !335) +!337 = !DILocation(line: 111, column: 16, scope: !338) +!338 = distinct !DILexicalBlock(scope: !335, file: !2, line: 111, column: 4) +!339 = !DILocation(line: 111, column: 20, scope: !338) +!340 = !DILocation(line: 111, column: 18, scope: !338) +!341 = !DILocation(line: 111, column: 4, scope: !335) +!342 = !DILocation(line: 111, column: 36, scope: !343) +!343 = distinct !DILexicalBlock(scope: !338, file: !2, line: 111, column: 35) +!344 = !DILocation(line: 111, column: 35, scope: !343) +!345 = !DILocation(line: 113, column: 10, scope: !346) +!346 = distinct !DILexicalBlock(scope: !347, file: !2, line: 113, column: 9) +!347 = distinct !DILexicalBlock(scope: !343, file: !2, line: 112, column: 4) +!348 = !DILocation(line: 113, column: 17, scope: !346) +!349 = !DILocation(line: 113, column: 22, scope: !346) +!350 = !DILocation(line: 113, column: 26, scope: !346) +!351 = !DILocation(line: 113, column: 31, scope: !346) +!352 = !DILocation(line: 113, column: 34, scope: !346) +!353 = !DILocation(line: 113, column: 39, scope: !346) +!354 = !DILocation(line: 113, column: 37, scope: !346) +!355 = !DILocation(line: 115, column: 11, scope: !356) +!356 = distinct !DILexicalBlock(scope: !357, file: !2, line: 115, column: 10) +!357 = distinct !DILexicalBlock(scope: !346, file: !2, line: 114, column: 5) +!358 = !DILocation(line: 115, column: 18, scope: !356) +!359 = !DILocation(line: 115, column: 23, scope: !356) +!360 = !DILocation(line: 115, column: 26, scope: !356) +!361 = !DILocation(line: 115, column: 31, scope: !356) +!362 = !DILocation(line: 115, column: 34, scope: !356) +!363 = !DILocation(line: 115, column: 39, scope: !356) +!364 = !DILocation(line: 115, column: 37, scope: !356) +!365 = !DILocation(line: 117, column: 12, scope: !366) +!366 = distinct !DILexicalBlock(scope: !356, file: !2, line: 116, column: 6) +!367 = !DILocation(line: 117, column: 10, scope: !366) +!368 = !DILocation(line: 118, column: 16, scope: !366) +!369 = !DILocation(line: 118, column: 14, scope: !366) +!370 = !DILocation(line: 119, column: 12, scope: !366) +!371 = !DILocation(line: 119, column: 17, scope: !366) +!372 = !DILocation(line: 119, column: 20, scope: !366) +!373 = !DILocation(line: 119, column: 10, scope: !366) +!374 = !DILocation(line: 120, column: 16, scope: !366) +!375 = !DILocation(line: 120, column: 14, scope: !366) +!376 = !DILocation(line: 121, column: 6, scope: !366) +!377 = !DILocation(line: 124, column: 12, scope: !378) +!378 = distinct !DILexicalBlock(scope: !356, file: !2, line: 123, column: 6) +!379 = !DILocation(line: 124, column: 17, scope: !378) +!380 = !DILocation(line: 124, column: 20, scope: !378) +!381 = !DILocation(line: 124, column: 10, scope: !378) +!382 = !DILocation(line: 125, column: 16, scope: !378) +!383 = !DILocation(line: 125, column: 14, scope: !378) +!384 = !DILocation(line: 127, column: 5, scope: !357) +!385 = !DILocation(line: 128, column: 4, scope: !347) +!386 = !DILocation(line: 111, column: 27, scope: !338) +!387 = !DILocation(line: 111, column: 4, scope: !338) +!388 = distinct !{!388, !341, !389, !191} +!389 = !DILocation(line: 128, column: 4, scope: !335) +!390 = !DILocation(line: 130, column: 4, scope: !391) +!391 = distinct !DILexicalBlock(scope: !392, file: !2, line: 130, column: 4) +!392 = distinct !DILexicalBlock(scope: !322, file: !2, line: 130, column: 4) +!393 = !DILocation(line: 131, column: 8, scope: !394) +!394 = distinct !DILexicalBlock(scope: !322, file: !2, line: 131, column: 8) +!395 = !DILocation(line: 131, column: 15, scope: !394) +!396 = !DILocation(line: 131, column: 20, scope: !394) +!397 = !DILocation(line: 133, column: 9, scope: !398) +!398 = distinct !DILexicalBlock(scope: !322, file: !2, line: 133, column: 8) +!399 = !DILocation(line: 133, column: 14, scope: !398) +!400 = !DILocation(line: 133, column: 19, scope: !398) +!401 = !DILocation(line: 133, column: 23, scope: !398) +!402 = !DILocation(line: 133, column: 28, scope: !398) +!403 = !DILocation(line: 133, column: 26, scope: !398) +!404 = !DILocation(line: 133, column: 33, scope: !398) +!405 = !DILocation(line: 133, column: 31, scope: !398) +!406 = !DILocation(line: 135, column: 11, scope: !407) +!407 = distinct !DILexicalBlock(scope: !398, file: !2, line: 134, column: 4) +!408 = !DILocation(line: 135, column: 16, scope: !407) +!409 = !DILocation(line: 135, column: 14, scope: !407) +!410 = !DILocation(line: 135, column: 9, scope: !407) +!411 = !DILocation(line: 136, column: 12, scope: !407) +!412 = !DILocation(line: 136, column: 10, scope: !407) +!413 = !DILocation(line: 137, column: 12, scope: !407) +!414 = !DILocation(line: 137, column: 10, scope: !407) +!415 = !DILocation(line: 138, column: 4, scope: !407) +!416 = !DILocation(line: 139, column: 3, scope: !322) +!417 = !DILocation(line: 105, column: 26, scope: !314) +!418 = !DILocation(line: 105, column: 3, scope: !314) +!419 = distinct !{!419, !317, !420, !191} +!420 = !DILocation(line: 139, column: 3, scope: !311) +!421 = !DILocation(line: 141, column: 10, scope: !422) +!422 = distinct !DILexicalBlock(scope: !307, file: !2, line: 141, column: 3) +!423 = !DILocation(line: 141, column: 8, scope: !422) +!424 = !DILocation(line: 141, column: 15, scope: !425) +!425 = distinct !DILexicalBlock(scope: !422, file: !2, line: 141, column: 3) +!426 = !DILocation(line: 141, column: 19, scope: !425) +!427 = !DILocation(line: 141, column: 17, scope: !425) +!428 = !DILocation(line: 141, column: 3, scope: !422) +!429 = !DILocation(line: 141, column: 35, scope: !430) +!430 = distinct !DILexicalBlock(scope: !425, file: !2, line: 141, column: 34) +!431 = !DILocation(line: 141, column: 34, scope: !430) +!432 = !DILocalVariable(name: "m1", scope: !433, file: !2, line: 143, type: !74) +!433 = distinct !DILexicalBlock(scope: !430, file: !2, line: 142, column: 3) +!434 = !DILocation(line: 143, column: 10, scope: !433) +!435 = !DILocalVariable(name: "m2", scope: !433, file: !2, line: 143, type: !74) +!436 = !DILocation(line: 143, column: 14, scope: !433) +!437 = !DILocalVariable(name: "m1_idx", scope: !433, file: !2, line: 144, type: !71) +!438 = !DILocation(line: 144, column: 8, scope: !433) +!439 = !DILocalVariable(name: "m2_idx", scope: !433, file: !2, line: 144, type: !71) +!440 = !DILocation(line: 144, column: 16, scope: !433) +!441 = !DILocation(line: 145, column: 12, scope: !433) +!442 = !DILocation(line: 145, column: 7, scope: !433) +!443 = !DILocation(line: 146, column: 20, scope: !433) +!444 = !DILocation(line: 146, column: 11, scope: !433) +!445 = !DILocation(line: 147, column: 11, scope: !446) +!446 = distinct !DILexicalBlock(scope: !433, file: !2, line: 147, column: 4) +!447 = !DILocation(line: 147, column: 9, scope: !446) +!448 = !DILocation(line: 147, column: 16, scope: !449) +!449 = distinct !DILexicalBlock(scope: !446, file: !2, line: 147, column: 4) +!450 = !DILocation(line: 147, column: 20, scope: !449) +!451 = !DILocation(line: 147, column: 18, scope: !449) +!452 = !DILocation(line: 147, column: 4, scope: !446) +!453 = !DILocation(line: 147, column: 36, scope: !454) +!454 = distinct !DILexicalBlock(scope: !449, file: !2, line: 147, column: 35) +!455 = !DILocation(line: 147, column: 35, scope: !454) +!456 = !DILocation(line: 149, column: 10, scope: !457) +!457 = distinct !DILexicalBlock(scope: !458, file: !2, line: 149, column: 9) +!458 = distinct !DILexicalBlock(scope: !454, file: !2, line: 148, column: 4) +!459 = !DILocation(line: 149, column: 17, scope: !457) +!460 = !DILocation(line: 149, column: 22, scope: !457) +!461 = !DILocation(line: 149, column: 26, scope: !457) +!462 = !DILocation(line: 149, column: 31, scope: !457) +!463 = !DILocation(line: 149, column: 34, scope: !457) +!464 = !DILocation(line: 149, column: 39, scope: !457) +!465 = !DILocation(line: 149, column: 37, scope: !457) +!466 = !DILocation(line: 151, column: 11, scope: !467) +!467 = distinct !DILexicalBlock(scope: !468, file: !2, line: 151, column: 10) +!468 = distinct !DILexicalBlock(scope: !457, file: !2, line: 150, column: 5) +!469 = !DILocation(line: 151, column: 18, scope: !467) +!470 = !DILocation(line: 151, column: 23, scope: !467) +!471 = !DILocation(line: 151, column: 27, scope: !467) +!472 = !DILocation(line: 151, column: 32, scope: !467) +!473 = !DILocation(line: 151, column: 35, scope: !467) +!474 = !DILocation(line: 151, column: 40, scope: !467) +!475 = !DILocation(line: 151, column: 38, scope: !467) +!476 = !DILocation(line: 153, column: 12, scope: !477) +!477 = distinct !DILexicalBlock(scope: !467, file: !2, line: 152, column: 6) +!478 = !DILocation(line: 153, column: 10, scope: !477) +!479 = !DILocation(line: 154, column: 16, scope: !477) +!480 = !DILocation(line: 154, column: 14, scope: !477) +!481 = !DILocation(line: 155, column: 12, scope: !477) +!482 = !DILocation(line: 155, column: 17, scope: !477) +!483 = !DILocation(line: 155, column: 20, scope: !477) +!484 = !DILocation(line: 155, column: 10, scope: !477) +!485 = !DILocation(line: 156, column: 16, scope: !477) +!486 = !DILocation(line: 156, column: 14, scope: !477) +!487 = !DILocation(line: 157, column: 6, scope: !477) +!488 = !DILocation(line: 160, column: 12, scope: !489) +!489 = distinct !DILexicalBlock(scope: !467, file: !2, line: 159, column: 6) +!490 = !DILocation(line: 160, column: 17, scope: !489) +!491 = !DILocation(line: 160, column: 20, scope: !489) +!492 = !DILocation(line: 160, column: 10, scope: !489) +!493 = !DILocation(line: 161, column: 16, scope: !489) +!494 = !DILocation(line: 161, column: 14, scope: !489) +!495 = !DILocation(line: 163, column: 5, scope: !468) +!496 = !DILocation(line: 164, column: 4, scope: !458) +!497 = !DILocation(line: 147, column: 27, scope: !449) +!498 = !DILocation(line: 147, column: 4, scope: !449) +!499 = distinct !{!499, !452, !500, !191} +!500 = !DILocation(line: 164, column: 4, scope: !446) +!501 = !DILocation(line: 166, column: 4, scope: !502) +!502 = distinct !DILexicalBlock(scope: !503, file: !2, line: 166, column: 4) +!503 = distinct !DILexicalBlock(scope: !433, file: !2, line: 166, column: 4) +!504 = !DILocation(line: 167, column: 8, scope: !505) +!505 = distinct !DILexicalBlock(scope: !433, file: !2, line: 167, column: 8) +!506 = !DILocation(line: 167, column: 15, scope: !505) +!507 = !DILocation(line: 167, column: 20, scope: !505) +!508 = !DILocation(line: 169, column: 9, scope: !509) +!509 = distinct !DILexicalBlock(scope: !433, file: !2, line: 169, column: 8) +!510 = !DILocation(line: 169, column: 14, scope: !509) +!511 = !DILocation(line: 169, column: 19, scope: !509) +!512 = !DILocation(line: 169, column: 23, scope: !509) +!513 = !DILocation(line: 169, column: 28, scope: !509) +!514 = !DILocation(line: 169, column: 26, scope: !509) +!515 = !DILocation(line: 169, column: 33, scope: !509) +!516 = !DILocation(line: 169, column: 31, scope: !509) +!517 = !DILocation(line: 171, column: 11, scope: !518) +!518 = distinct !DILexicalBlock(scope: !509, file: !2, line: 170, column: 4) +!519 = !DILocation(line: 171, column: 16, scope: !518) +!520 = !DILocation(line: 171, column: 14, scope: !518) +!521 = !DILocation(line: 171, column: 9, scope: !518) +!522 = !DILocation(line: 172, column: 12, scope: !518) +!523 = !DILocation(line: 172, column: 10, scope: !518) +!524 = !DILocation(line: 173, column: 12, scope: !518) +!525 = !DILocation(line: 173, column: 10, scope: !518) +!526 = !DILocation(line: 174, column: 4, scope: !518) +!527 = !DILocation(line: 175, column: 3, scope: !433) +!528 = !DILocation(line: 141, column: 26, scope: !425) +!529 = !DILocation(line: 141, column: 3, scope: !425) +!530 = distinct !{!530, !428, !531, !191} +!531 = !DILocation(line: 175, column: 3, scope: !422) +!532 = !DILocation(line: 177, column: 3, scope: !533) +!533 = distinct !DILexicalBlock(scope: !534, file: !2, line: 177, column: 3) +!534 = distinct !DILexicalBlock(scope: !307, file: !2, line: 177, column: 3) +!535 = !DILocation(line: 178, column: 3, scope: !536) +!536 = distinct !DILexicalBlock(scope: !537, file: !2, line: 178, column: 3) +!537 = distinct !DILexicalBlock(scope: !307, file: !2, line: 178, column: 3) +!538 = !DILocation(line: 185, column: 3, scope: !539) +!539 = distinct !DILexicalBlock(scope: !540, file: !2, line: 185, column: 3) +!540 = distinct !DILexicalBlock(scope: !307, file: !2, line: 185, column: 3) +!541 = !DILocation(line: 186, column: 3, scope: !542) +!542 = distinct !DILexicalBlock(scope: !543, file: !2, line: 186, column: 3) +!543 = distinct !DILexicalBlock(scope: !307, file: !2, line: 186, column: 3) +!544 = !DILocation(line: 188, column: 8, scope: !545) +!545 = distinct !DILexicalBlock(scope: !307, file: !2, line: 188, column: 7) +!546 = !DILocation(line: 188, column: 11, scope: !545) +!547 = !DILocation(line: 188, column: 16, scope: !545) +!548 = !DILocation(line: 188, column: 21, scope: !545) +!549 = !DILocation(line: 188, column: 25, scope: !545) +!550 = !DILocation(line: 188, column: 34, scope: !545) +!551 = !DILocation(line: 188, column: 38, scope: !545) +!552 = !DILocation(line: 188, column: 31, scope: !545) +!553 = !DILocation(line: 188, column: 45, scope: !545) +!554 = !DILocation(line: 188, column: 49, scope: !545) +!555 = !DILocation(line: 188, column: 52, scope: !545) +!556 = !DILocation(line: 190, column: 4, scope: !557) +!557 = distinct !DILexicalBlock(scope: !545, file: !2, line: 189, column: 3) +!558 = !DILocation(line: 190, column: 8, scope: !557) +!559 = !DILocation(line: 190, column: 14, scope: !557) +!560 = !DILocation(line: 190, column: 20, scope: !557) +!561 = !DILocation(line: 190, column: 25, scope: !557) +!562 = !DILocation(line: 191, column: 28, scope: !557) +!563 = !DILocation(line: 191, column: 32, scope: !557) +!564 = !DILocation(line: 191, column: 4, scope: !557) +!565 = !DILocation(line: 191, column: 8, scope: !557) +!566 = !DILocation(line: 191, column: 14, scope: !557) +!567 = !DILocation(line: 191, column: 20, scope: !557) +!568 = !DILocation(line: 191, column: 26, scope: !557) +!569 = !DILocation(line: 192, column: 17, scope: !557) +!570 = !DILocation(line: 192, column: 21, scope: !557) +!571 = !DILocation(line: 192, column: 4, scope: !557) +!572 = !DILocation(line: 192, column: 8, scope: !557) +!573 = !DILocation(line: 192, column: 14, scope: !557) +!574 = !DILocation(line: 193, column: 4, scope: !557) +!575 = !DILocation(line: 193, column: 8, scope: !557) +!576 = !DILocation(line: 193, column: 14, scope: !557) +!577 = !DILocation(line: 194, column: 8, scope: !578) +!578 = distinct !DILexicalBlock(scope: !557, file: !2, line: 194, column: 8) +!579 = !DILocation(line: 194, column: 12, scope: !578) +!580 = !DILocation(line: 194, column: 18, scope: !578) +!581 = !DILocation(line: 194, column: 23, scope: !578) +!582 = !DILocation(line: 194, column: 27, scope: !578) +!583 = !DILocation(line: 194, column: 33, scope: !578) +!584 = !DILocation(line: 195, column: 4, scope: !557) +!585 = !DILocation(line: 195, column: 4, scope: !586) +!586 = distinct !DILexicalBlock(scope: !557, file: !2, line: 195, column: 4) +!587 = !DILocation(line: 196, column: 6, scope: !557) +!588 = !DILocation(line: 197, column: 3, scope: !557) +!589 = !DILocation(line: 200, column: 4, scope: !590) +!590 = distinct !DILexicalBlock(scope: !591, file: !2, line: 200, column: 4) +!591 = distinct !DILexicalBlock(scope: !592, file: !2, line: 200, column: 4) +!592 = distinct !DILexicalBlock(scope: !545, file: !2, line: 199, column: 3) +!593 = !DILocation(line: 201, column: 4, scope: !592) +!594 = !DILocation(line: 201, column: 8, scope: !592) +!595 = !DILocation(line: 201, column: 14, scope: !592) +!596 = !DILocation(line: 201, column: 20, scope: !592) +!597 = !DILocation(line: 201, column: 25, scope: !592) +!598 = !DILocation(line: 202, column: 28, scope: !592) +!599 = !DILocation(line: 202, column: 32, scope: !592) +!600 = !DILocation(line: 202, column: 4, scope: !592) +!601 = !DILocation(line: 202, column: 8, scope: !592) +!602 = !DILocation(line: 202, column: 14, scope: !592) +!603 = !DILocation(line: 202, column: 20, scope: !592) +!604 = !DILocation(line: 202, column: 26, scope: !592) +!605 = !DILocation(line: 203, column: 17, scope: !592) +!606 = !DILocation(line: 203, column: 21, scope: !592) +!607 = !DILocation(line: 203, column: 4, scope: !592) +!608 = !DILocation(line: 203, column: 8, scope: !592) +!609 = !DILocation(line: 203, column: 14, scope: !592) +!610 = !DILocation(line: 204, column: 4, scope: !592) +!611 = !DILocation(line: 204, column: 8, scope: !592) +!612 = !DILocation(line: 204, column: 14, scope: !592) +!613 = !DILocation(line: 205, column: 4, scope: !592) +!614 = !DILocation(line: 205, column: 4, scope: !615) +!615 = distinct !DILexicalBlock(scope: !592, file: !2, line: 205, column: 4) +!616 = !DILocation(line: 206, column: 6, scope: !592) +!617 = distinct !{!617, !301, !618, !191} +!618 = !DILocation(line: 209, column: 2, scope: !205) +!619 = !DILocation(line: 211, column: 2, scope: !620) +!620 = distinct !DILexicalBlock(scope: !621, file: !2, line: 211, column: 2) +!621 = distinct !DILexicalBlock(scope: !205, file: !2, line: 211, column: 2) +!622 = !DILocation(line: 212, column: 2, scope: !623) +!623 = distinct !DILexicalBlock(scope: !624, file: !2, line: 212, column: 2) +!624 = distinct !DILexicalBlock(scope: !205, file: !2, line: 212, column: 2) +!625 = !DILocation(line: 214, column: 2, scope: !205) +!626 = !DILocation(line: 216, column: 8, scope: !627) +!627 = distinct !DILexicalBlock(scope: !628, file: !2, line: 215, column: 2) +!628 = distinct !DILexicalBlock(scope: !629, file: !2, line: 214, column: 2) +!629 = distinct !DILexicalBlock(scope: !205, file: !2, line: 214, column: 2) +!630 = !DILocation(line: 217, column: 10, scope: !631) +!631 = distinct !DILexicalBlock(scope: !627, file: !2, line: 217, column: 3) +!632 = !DILocation(line: 217, column: 8, scope: !631) +!633 = !DILocation(line: 217, column: 15, scope: !634) +!634 = distinct !DILexicalBlock(scope: !631, file: !2, line: 217, column: 3) +!635 = !DILocation(line: 217, column: 19, scope: !634) +!636 = !DILocation(line: 217, column: 17, scope: !634) +!637 = !DILocation(line: 217, column: 3, scope: !631) +!638 = !DILocation(line: 217, column: 35, scope: !639) +!639 = distinct !DILexicalBlock(scope: !634, file: !2, line: 217, column: 34) +!640 = !DILocation(line: 217, column: 34, scope: !639) +!641 = !DILocation(line: 219, column: 9, scope: !642) +!642 = distinct !DILexicalBlock(scope: !639, file: !2, line: 218, column: 3) +!643 = !DILocation(line: 220, column: 11, scope: !644) +!644 = distinct !DILexicalBlock(scope: !642, file: !2, line: 220, column: 4) +!645 = !DILocation(line: 220, column: 9, scope: !644) +!646 = !DILocation(line: 220, column: 16, scope: !647) +!647 = distinct !DILexicalBlock(scope: !644, file: !2, line: 220, column: 4) +!648 = !DILocation(line: 220, column: 20, scope: !647) +!649 = !DILocation(line: 220, column: 18, scope: !647) +!650 = !DILocation(line: 220, column: 4, scope: !644) +!651 = !DILocation(line: 220, column: 36, scope: !652) +!652 = distinct !DILexicalBlock(scope: !647, file: !2, line: 220, column: 35) +!653 = !DILocation(line: 220, column: 35, scope: !652) +!654 = !DILocation(line: 222, column: 12, scope: !655) +!655 = distinct !DILexicalBlock(scope: !652, file: !2, line: 221, column: 4) +!656 = !DILocation(line: 222, column: 10, scope: !655) +!657 = !DILocation(line: 223, column: 5, scope: !655) +!658 = !DILocation(line: 220, column: 27, scope: !647) +!659 = !DILocation(line: 220, column: 4, scope: !647) +!660 = distinct !{!660, !650, !661, !191} +!661 = !DILocation(line: 224, column: 4, scope: !644) +!662 = !DILocation(line: 225, column: 8, scope: !663) +!663 = distinct !DILexicalBlock(scope: !642, file: !2, line: 225, column: 8) +!664 = !DILocation(line: 225, column: 13, scope: !663) +!665 = !DILocation(line: 227, column: 12, scope: !666) +!666 = distinct !DILexicalBlock(scope: !663, file: !2, line: 226, column: 4) +!667 = !DILocation(line: 227, column: 10, scope: !666) +!668 = !DILocation(line: 228, column: 5, scope: !666) +!669 = !DILocation(line: 230, column: 3, scope: !642) +!670 = !DILocation(line: 217, column: 26, scope: !634) +!671 = !DILocation(line: 217, column: 3, scope: !634) +!672 = distinct !{!672, !637, !673, !191} +!673 = !DILocation(line: 230, column: 3, scope: !631) +!674 = !DILocation(line: 231, column: 7, scope: !675) +!675 = distinct !DILexicalBlock(scope: !627, file: !2, line: 231, column: 7) +!676 = !DILocation(line: 231, column: 12, scope: !675) +!677 = !DILocation(line: 231, column: 16, scope: !675) +!678 = !DILocation(line: 231, column: 19, scope: !675) +!679 = !DILocation(line: 231, column: 24, scope: !675) +!680 = !DILocation(line: 231, column: 29, scope: !675) +!681 = !DILocation(line: 232, column: 3, scope: !682) +!682 = distinct !DILexicalBlock(scope: !683, file: !2, line: 232, column: 3) +!683 = distinct !DILexicalBlock(scope: !627, file: !2, line: 232, column: 3) +!684 = !DILocation(line: 233, column: 3, scope: !685) +!685 = distinct !DILexicalBlock(scope: !686, file: !2, line: 233, column: 3) +!686 = distinct !DILexicalBlock(scope: !627, file: !2, line: 233, column: 3) +!687 = !DILocation(line: 235, column: 6, scope: !627) +!688 = !DILocation(line: 237, column: 7, scope: !689) +!689 = distinct !DILexicalBlock(scope: !627, file: !2, line: 237, column: 7) +!690 = !DILocation(line: 237, column: 11, scope: !689) +!691 = !DILocation(line: 237, column: 19, scope: !689) +!692 = !DILocation(line: 237, column: 23, scope: !689) +!693 = !DILocation(line: 237, column: 17, scope: !689) +!694 = !DILocation(line: 239, column: 4, scope: !695) +!695 = distinct !DILexicalBlock(scope: !689, file: !2, line: 238, column: 3) +!696 = !DILocation(line: 239, column: 8, scope: !695) +!697 = !DILocation(line: 239, column: 14, scope: !695) +!698 = !DILocation(line: 239, column: 20, scope: !695) +!699 = !DILocation(line: 239, column: 25, scope: !695) +!700 = !DILocation(line: 240, column: 28, scope: !695) +!701 = !DILocation(line: 240, column: 32, scope: !695) +!702 = !DILocation(line: 240, column: 4, scope: !695) +!703 = !DILocation(line: 240, column: 8, scope: !695) +!704 = !DILocation(line: 240, column: 14, scope: !695) +!705 = !DILocation(line: 240, column: 20, scope: !695) +!706 = !DILocation(line: 240, column: 26, scope: !695) +!707 = !DILocation(line: 241, column: 17, scope: !695) +!708 = !DILocation(line: 241, column: 21, scope: !695) +!709 = !DILocation(line: 241, column: 4, scope: !695) +!710 = !DILocation(line: 241, column: 8, scope: !695) +!711 = !DILocation(line: 241, column: 14, scope: !695) +!712 = !DILocation(line: 242, column: 4, scope: !695) +!713 = !DILocation(line: 242, column: 8, scope: !695) +!714 = !DILocation(line: 242, column: 14, scope: !695) +!715 = !DILocation(line: 243, column: 4, scope: !695) +!716 = !DILocation(line: 243, column: 4, scope: !717) +!717 = distinct !DILexicalBlock(scope: !695, file: !2, line: 243, column: 4) +!718 = !DILocation(line: 244, column: 3, scope: !695) +!719 = !DILocation(line: 247, column: 4, scope: !720) +!720 = distinct !DILexicalBlock(scope: !689, file: !2, line: 246, column: 3) +!721 = !DILocation(line: 247, column: 8, scope: !720) +!722 = !DILocation(line: 247, column: 14, scope: !720) +!723 = !DILocation(line: 247, column: 20, scope: !720) +!724 = !DILocation(line: 247, column: 25, scope: !720) +!725 = !DILocation(line: 248, column: 28, scope: !720) +!726 = !DILocation(line: 248, column: 32, scope: !720) +!727 = !DILocation(line: 248, column: 4, scope: !720) +!728 = !DILocation(line: 248, column: 8, scope: !720) +!729 = !DILocation(line: 248, column: 14, scope: !720) +!730 = !DILocation(line: 248, column: 20, scope: !720) +!731 = !DILocation(line: 248, column: 26, scope: !720) +!732 = !DILocation(line: 249, column: 17, scope: !720) +!733 = !DILocation(line: 249, column: 21, scope: !720) +!734 = !DILocation(line: 249, column: 4, scope: !720) +!735 = !DILocation(line: 249, column: 8, scope: !720) +!736 = !DILocation(line: 249, column: 14, scope: !720) +!737 = !DILocation(line: 250, column: 4, scope: !720) +!738 = !DILocation(line: 250, column: 8, scope: !720) +!739 = !DILocation(line: 250, column: 14, scope: !720) +!740 = !DILocation(line: 251, column: 4, scope: !720) +!741 = !DILocation(line: 251, column: 4, scope: !742) +!742 = distinct !DILexicalBlock(scope: !720, file: !2, line: 251, column: 4) +!743 = !DILocation(line: 214, column: 2, scope: !628) +!744 = distinct !{!744, !745, !746} +!745 = !DILocation(line: 214, column: 2, scope: !629) +!746 = !DILocation(line: 253, column: 2, scope: !629) +!747 = !DILocation(line: 256, column: 2, scope: !205) +!748 = !DILocation(line: 257, column: 2, scope: !205) +!749 = !DILocation(line: 259, column: 10, scope: !205) +!750 = !DILocation(line: 259, column: 3, scope: !205) +!751 = !DILocation(line: 259, column: 8, scope: !205) +!752 = !DILocation(line: 260, column: 1, scope: !205) diff --git a/test_cases_bc/mem_leak/malloc7.c.bc b/test_cases_bc/mem_leak/malloc7.c.bc index 5836b7e35..eb0ec0fff 100644 --- a/test_cases_bc/mem_leak/malloc7.c.bc +++ b/test_cases_bc/mem_leak/malloc7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc7.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @g = dso_local global ptr null, align 8, !dbg !0 @.str = private unnamed_addr constant [6 x i8] c"%d,%d\00", align 1, !dbg !5 @@ -11,28 +11,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !28, metadata !DIExpression()), !dbg !29 + #dbg_declare(ptr %n.addr, !28, !DIExpression(), !29) %0 = load i32, ptr %n.addr, align 4, !dbg !30 %conv = sext i32 %0 to i64, !dbg !30 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !31 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !31 ret ptr %call, !dbg !32 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !33 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !34, metadata !DIExpression()), !dbg !35 + #dbg_declare(ptr %n.addr, !34, !DIExpression(), !35) %0 = load i32, ptr %n.addr, align 4, !dbg !36 %conv = sext i32 %0 to i64, !dbg !36 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !37 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !37 ret ptr %call, !dbg !38 } @@ -41,10 +38,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !39 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !40, metadata !DIExpression()), !dbg !41 + #dbg_declare(ptr %n.addr, !40, !DIExpression(), !41) %0 = load i32, ptr %n.addr, align 4, !dbg !42 %conv = sext i32 %0 to i64, !dbg !42 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !43 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !43 ret ptr %call, !dbg !44 } @@ -53,10 +50,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !45 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !46, metadata !DIExpression()), !dbg !47 + #dbg_declare(ptr %n.addr, !46, !DIExpression(), !47) %0 = load i32, ptr %n.addr, align 4, !dbg !48 %conv = sext i32 %0 to i64, !dbg !48 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !49 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !49 ret ptr %call, !dbg !50 } @@ -65,10 +62,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !51 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !52, metadata !DIExpression()), !dbg !53 + #dbg_declare(ptr %n.addr, !52, !DIExpression(), !53) %0 = load i32, ptr %n.addr, align 4, !dbg !54 %conv = sext i32 %0 to i64, !dbg !54 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !55 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !55 ret ptr %call, !dbg !56 } @@ -77,10 +74,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !57 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !58, metadata !DIExpression()), !dbg !59 + #dbg_declare(ptr %n.addr, !58, !DIExpression(), !59) %0 = load i32, ptr %n.addr, align 4, !dbg !60 %conv = sext i32 %0 to i64, !dbg !60 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !61 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !61 ret ptr %call, !dbg !62 } @@ -89,10 +86,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !63 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !64, metadata !DIExpression()), !dbg !65 + #dbg_declare(ptr %n.addr, !64, !DIExpression(), !65) %0 = load i32, ptr %n.addr, align 4, !dbg !66 %conv = sext i32 %0 to i64, !dbg !66 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !67 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !67 ret ptr %call, !dbg !68 } @@ -100,7 +97,7 @@ entry: define dso_local i32 @main() #0 !dbg !69 { entry: %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %p, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %p, !72, !DIExpression(), !73) %call = call ptr @SAFEMALLOC(i32 noundef 1), !dbg !74 store ptr %call, ptr %p, align 8, !dbg !73 %0 = load ptr, ptr %p, align 8, !dbg !75 @@ -111,13 +108,12 @@ entry: ret i32 0, !dbg !80 } -declare i32 @printf(ptr noundef, ...) #3 +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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0) } +attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 = { "frame-pointer"="all" "no-trapping-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.dbg.cu = !{!2} !llvm.module.flags = !{!14, !15, !16, !17, !18, !19, !20} @@ -125,12 +121,12 @@ attributes #4 = { nounwind allocsize(0) } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "g", scope: !2, file: !7, line: 10, type: !12, 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/mem_leak/malloc7.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "82974254a31bb29f249f16832832665c") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc7.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "82974254a31bb29f249f16832832665c") !4 = !{!5, !0} !5 = !DIGlobalVariableExpression(var: !6, expr: !DIExpression()) !6 = distinct !DIGlobalVariable(scope: null, file: !7, line: 15, type: !8, isLocal: true, isDefinition: true) -!7 = !DIFile(filename: "src/mem_leak/malloc7.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "82974254a31bb29f249f16832832665c") +!7 = !DIFile(filename: "src/mem_leak/malloc7.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "82974254a31bb29f249f16832832665c") !8 = !DICompositeType(tag: DW_TAG_array_type, baseType: !9, size: 48, elements: !10) !9 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !10 = !{!11} @@ -144,9 +140,9 @@ attributes #4 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !22 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !23, file: !23, line: 5, type: !24, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !27) -!23 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!23 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !24 = !DISubroutineType(types: !25) !25 = !{!26, !13} !26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/malloc8.c.bc b/test_cases_bc/mem_leak/malloc8.c.bc index 94da976f4..de7a9ab33 100644 --- a/test_cases_bc/mem_leak/malloc8.c.bc +++ b/test_cases_bc/mem_leak/malloc8.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc8.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc8.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc8.c" +target datalayout = "e-m:e-p270:32:32-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 [45 x i8] c"Error: Unable to malloc memory. Aborting.\0A\00", align 1, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !36 ret ptr %call, !dbg !37 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !42 ret ptr %call, !dbg !43 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !48 ret ptr %call, !dbg !49 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !54 ret ptr %call, !dbg !55 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !60 ret ptr %call, !dbg !61 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !66 ret ptr %call, !dbg !67 } @@ -101,53 +98,52 @@ entry: %size.addr = alloca i32, align 4 %ret = alloca ptr, align 8 store i32 %size, ptr %size.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %size.addr, metadata !69, metadata !DIExpression()), !dbg !70 - call void @llvm.dbg.declare(metadata ptr %ret, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %size.addr, !69, !DIExpression(), !70) + #dbg_declare(ptr %ret, !71, !DIExpression(), !72) %0 = load i32, ptr %size.addr, align 4, !dbg !73 %call = call ptr @SAFEMALLOC(i32 noundef %0), !dbg !75 store ptr %call, ptr %ret, align 8, !dbg !76 %cmp = icmp eq ptr %call, null, !dbg !77 - br i1 %cmp, label %if.then, label %if.end, !dbg !78 + br i1 %cmp, label %if.then, label %if.end, !dbg !77 if.then: ; preds = %entry - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str), !dbg !79 - call void @exit(i32 noundef 1) #7, !dbg !81 - unreachable, !dbg !81 + %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str), !dbg !78 + call void @exit(i32 noundef 1) #6, !dbg !80 + unreachable, !dbg !80 if.end: ; preds = %entry - %1 = load ptr, ptr %ret, align 8, !dbg !82 - ret ptr %1, !dbg !83 + %1 = load ptr, ptr %ret, align 8, !dbg !81 + ret ptr %1, !dbg !82 } -declare i32 @printf(ptr noundef, ...) #3 +declare i32 @printf(ptr noundef, ...) #2 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #4 +declare void @exit(i32 noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !84 { +define dso_local i32 @main() #0 !dbg !83 { entry: %side_ordering = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %side_ordering, metadata !87, metadata !DIExpression()), !dbg !88 - %call = call ptr @my_malloc(i32 noundef 40), !dbg !89 - store ptr %call, ptr %side_ordering, align 8, !dbg !88 - %0 = load ptr, ptr %side_ordering, align 8, !dbg !90 - call void @free(ptr noundef %0) #8, !dbg !91 - ret i32 0, !dbg !92 + #dbg_declare(ptr %side_ordering, !86, !DIExpression(), !87) + %call = call ptr @my_malloc(i32 noundef 40), !dbg !88 + store ptr %call, ptr %side_ordering, align 8, !dbg !87 + %0 = load ptr, ptr %side_ordering, align 8, !dbg !89 + call void @free(ptr noundef %0) #7, !dbg !90 + ret i32 0, !dbg !91 } ; Function Attrs: nounwind -declare void @free(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 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-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 } +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"="+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 = { "frame-pointer"="all" "no-trapping-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 = { 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 #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 = { noreturn nounwind } +attributes #7 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} @@ -155,13 +151,13 @@ attributes #8 = { nounwind } !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/mem_leak/malloc8.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4ff05b411e2382e9b06b46bb557de701") +!2 = !DIFile(filename: "src/mem_leak/malloc8.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "4ff05b411e2382e9b06b46bb557de701") !3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 360, elements: !5) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) !5 = !{!6} !6 = !DISubrange(count: 45) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc8.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4ff05b411e2382e9b06b46bb557de701") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc8.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "4ff05b411e2382e9b06b46bb557de701") !9 = !{!10} !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64) !11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -173,9 +169,9 @@ attributes #8 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!25, !11} !25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -231,18 +227,17 @@ attributes #8 = { nounwind } !75 = !DILocation(line: 15, column: 15, scope: !74) !76 = !DILocation(line: 15, column: 13, scope: !74) !77 = !DILocation(line: 15, column: 34, scope: !74) -!78 = !DILocation(line: 15, column: 8, scope: !68) -!79 = !DILocation(line: 16, column: 9, scope: !80) -!80 = distinct !DILexicalBlock(scope: !74, file: !2, line: 15, column: 40) -!81 = !DILocation(line: 17, column: 10, scope: !80) -!82 = !DILocation(line: 19, column: 13, scope: !68) -!83 = !DILocation(line: 19, column: 5, scope: !68) -!84 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 22, type: !85, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!85 = !DISubroutineType(types: !86) -!86 = !{!11} -!87 = !DILocalVariable(name: "side_ordering", scope: !84, file: !2, line: 25, type: !10) -!88 = !DILocation(line: 25, column: 8, scope: !84) -!89 = !DILocation(line: 25, column: 32, scope: !84) -!90 = !DILocation(line: 27, column: 7, scope: !84) -!91 = !DILocation(line: 27, column: 2, scope: !84) -!92 = !DILocation(line: 28, column: 1, scope: !84) +!78 = !DILocation(line: 16, column: 9, scope: !79) +!79 = distinct !DILexicalBlock(scope: !74, file: !2, line: 15, column: 40) +!80 = !DILocation(line: 17, column: 10, scope: !79) +!81 = !DILocation(line: 19, column: 13, scope: !68) +!82 = !DILocation(line: 19, column: 5, scope: !68) +!83 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 22, type: !84, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) +!84 = !DISubroutineType(types: !85) +!85 = !{!11} +!86 = !DILocalVariable(name: "side_ordering", scope: !83, file: !2, line: 25, type: !10) +!87 = !DILocation(line: 25, column: 8, scope: !83) +!88 = !DILocation(line: 25, column: 32, scope: !83) +!89 = !DILocation(line: 27, column: 7, scope: !83) +!90 = !DILocation(line: 27, column: 2, scope: !83) +!91 = !DILocation(line: 28, column: 1, scope: !83) diff --git a/test_cases_bc/mem_leak/malloc9.c.bc b/test_cases_bc/mem_leak/malloc9.c.bc index 953372cb3..367902fd6 100644 --- a/test_cases_bc/mem_leak/malloc9.c.bc +++ b/test_cases_bc/mem_leak/malloc9.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/malloc9.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/malloc9.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/malloc9.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc9.c" +target datalayout = "e-m:e-p270:32:32-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_rr_node = type { i16, i16, i16, i16, i16, i16, ptr, ptr, float, float } @@ -12,28 +12,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !41 ret ptr %call, !dbg !42 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !47 ret ptr %call, !dbg !48 } @@ -42,10 +39,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !53 ret ptr %call, !dbg !54 } @@ -54,10 +51,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !59 ret ptr %call, !dbg !60 } @@ -66,10 +63,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !61 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !62, metadata !DIExpression()), !dbg !63 + #dbg_declare(ptr %n.addr, !62, !DIExpression(), !63) %0 = load i32, ptr %n.addr, align 4, !dbg !64 %conv = sext i32 %0 to i64, !dbg !64 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !65 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !65 ret ptr %call, !dbg !66 } @@ -78,10 +75,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !67 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !68, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %n.addr, !68, !DIExpression(), !69) %0 = load i32, ptr %n.addr, align 4, !dbg !70 %conv = sext i32 %0 to i64, !dbg !70 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !71 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !71 ret ptr %call, !dbg !72 } @@ -90,10 +87,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !73 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !74, metadata !DIExpression()), !dbg !75 + #dbg_declare(ptr %n.addr, !74, !DIExpression(), !75) %0 = load i32, ptr %n.addr, align 4, !dbg !76 %conv = sext i32 %0 to i64, !dbg !76 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !77 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !77 ret ptr %call, !dbg !78 } @@ -108,21 +105,20 @@ entry: define dso_local i32 @main() #0 !dbg !84 { entry: %i = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !87, metadata !DIExpression()), !dbg !88 + #dbg_declare(ptr %i, !87, !DIExpression(), !88) %call = call ptr @alloc(), !dbg !89 %0 = load ptr, ptr @rr_node, align 8, !dbg !90 %1 = load i32, ptr %i, align 4, !dbg !91 %idxprom = sext i32 %1 to i64, !dbg !90 %arrayidx = getelementptr inbounds %struct.s_rr_node, ptr %0, i64 %idxprom, !dbg !90 - %edges = getelementptr inbounds %struct.s_rr_node, ptr %arrayidx, i32 0, i32 6, !dbg !92 + %edges = getelementptr inbounds nuw %struct.s_rr_node, ptr %arrayidx, i32 0, i32 6, !dbg !92 store ptr %call, ptr %edges, align 8, !dbg !93 ret i32 0, !dbg !94 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 allocsize(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"="+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.dbg.cu = !{!2} !llvm.module.flags = !{!24, !25, !26, !27, !28, !29, !30} @@ -130,10 +126,10 @@ attributes #3 = { nounwind allocsize(0) } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "rr_node", scope: !2, file: !5, line: 17, 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/mem_leak/malloc9.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "77ee16257947527d385aa7999c44a788") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/malloc9.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "77ee16257947527d385aa7999c44a788") !4 = !{!0} -!5 = !DIFile(filename: "src/mem_leak/malloc9.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "77ee16257947527d385aa7999c44a788") +!5 = !DIFile(filename: "src/mem_leak/malloc9.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "77ee16257947527d385aa7999c44a788") !6 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64) !7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "s_rr_node", file: !5, line: 10, size: 320, elements: !8) !8 = !{!9, !11, !12, !13, !14, !15, !16, !19, !21, !23} @@ -159,9 +155,9 @@ attributes #3 = { nounwind allocsize(0) } !28 = !{i32 7, !"PIE Level", i32 2} !29 = !{i32 7, !"uwtable", i32 2} !30 = !{i32 7, !"frame-pointer", i32 2} -!31 = !{!"clang version 16.0.0"} +!31 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !32 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !33, file: !33, line: 5, type: !34, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !37) -!33 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!33 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !34 = !DISubroutineType(types: !35) !35 = !{!36, !18} !36 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -207,7 +203,7 @@ attributes #3 = { nounwind allocsize(0) } !76 = !DILocation(line: 30, column: 17, scope: !73) !77 = !DILocation(line: 30, column: 10, scope: !73) !78 = !DILocation(line: 30, column: 3, scope: !73) -!79 = distinct !DISubprogram(name: "alloc", scope: !5, file: !5, line: 19, type: !80, scopeLine: 19, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !37) +!79 = distinct !DISubprogram(name: "alloc", scope: !5, file: !5, line: 19, type: !80, scopeLine: 19, spFlags: DISPFlagDefinition, unit: !2) !80 = !DISubroutineType(types: !81) !81 = !{!17} !82 = !DILocation(line: 21, column: 9, scope: !79) diff --git a/test_cases_bc/mem_leak/sp1.c.bc b/test_cases_bc/mem_leak/sp1.c.bc index db76adc86..1cff1c156 100644 --- a/test_cases_bc/mem_leak/sp1.c.bc +++ b/test_cases_bc/mem_leak/sp1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp1.c" +target datalayout = "e-m:e-p270:32:32-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.ResourceLeak_TC01.str = private unnamed_addr constant [10 x i8] c"STRING\00\00\00\00", align 1 @.str = private unnamed_addr constant [6 x i8] c" %s \0A\00", align 1, !dbg !0 @@ -11,28 +11,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !20 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !29 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !29 ret ptr %call, !dbg !30 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !35 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !35 ret ptr %call, !dbg !36 } @@ -41,10 +38,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !41 ret ptr %call, !dbg !42 } @@ -53,10 +50,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !47 ret ptr %call, !dbg !48 } @@ -65,10 +62,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !53 ret ptr %call, !dbg !54 } @@ -77,10 +74,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !59 ret ptr %call, !dbg !60 } @@ -89,10 +86,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !61 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !62, metadata !DIExpression()), !dbg !63 + #dbg_declare(ptr %n.addr, !62, !DIExpression(), !63) %0 = load i32, ptr %n.addr, align 4, !dbg !64 %conv = sext i32 %0 to i64, !dbg !64 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !65 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !65 ret ptr %call, !dbg !66 } @@ -103,65 +100,65 @@ entry: %p.addr = alloca ptr, align 8 %str = alloca [10 x i8], align 1 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %str, metadata !73, metadata !DIExpression()), !dbg !77 + #dbg_declare(ptr %p.addr, !71, !DIExpression(), !72) + #dbg_declare(ptr %str, !73, !DIExpression(), !77) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str, ptr align 1 @__const.ResourceLeak_TC01.str, i64 10, i1 false), !dbg !77 %0 = load ptr, ptr %p.addr, align 8, !dbg !78 %cmp = icmp eq ptr %0, null, !dbg !80 - br i1 %cmp, label %if.then, label %if.end, !dbg !81 + br i1 %cmp, label %if.then, label %if.end, !dbg !80 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !82 - br label %return, !dbg !82 + store i32 -1, ptr %retval, align 4, !dbg !81 + br label %return, !dbg !81 if.end: ; preds = %entry - %1 = load ptr, ptr %p.addr, align 8, !dbg !83 - %arraydecay = getelementptr inbounds [10 x i8], ptr %str, i64 0, i64 0, !dbg !84 - %call = call ptr @strcat(ptr noundef %1, ptr noundef %arraydecay), !dbg !85 - %2 = load ptr, ptr %p.addr, align 8, !dbg !86 - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %2), !dbg !87 - %3 = load ptr, ptr %p.addr, align 8, !dbg !88 - call void @free(ptr noundef %3) #7, !dbg !89 - store i32 0, ptr %retval, align 4, !dbg !90 - br label %return, !dbg !90 + %1 = load ptr, ptr %p.addr, align 8, !dbg !82 + %arraydecay = getelementptr inbounds [10 x i8], ptr %str, i64 0, i64 0, !dbg !83 + %call = call ptr @strcat(ptr noundef %1, ptr noundef %arraydecay) #6, !dbg !84 + %2 = load ptr, ptr %p.addr, align 8, !dbg !85 + %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %2), !dbg !86 + %3 = load ptr, ptr %p.addr, align 8, !dbg !87 + call void @free(ptr noundef %3) #6, !dbg !88 + store i32 0, ptr %retval, align 4, !dbg !89 + br label %return, !dbg !89 return: ; preds = %if.end, %if.then - %4 = load i32, ptr %retval, align 4, !dbg !91 - ret i32 %4, !dbg !91 + %4 = load i32, ptr %retval, align 4, !dbg !90 + ret i32 %4, !dbg !90 } ; 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 ptr @strcat(ptr noundef, ptr noundef) #4 +; Function Attrs: nounwind +declare ptr @strcat(ptr noundef, ptr noundef) #3 declare i32 @printf(ptr noundef, ...) #4 ; Function Attrs: nounwind -declare void @free(ptr noundef) #5 +declare void @free(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !92 { +define dso_local i32 @main() #0 !dbg !91 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !95, metadata !DIExpression()), !dbg !97 - %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !98 - store ptr %call, ptr %p, align 8, !dbg !99 - %0 = load ptr, ptr %p, align 8, !dbg !100 - %call1 = call i32 @ResourceLeak_TC01(ptr noundef %0), !dbg !101 - ret i32 0, !dbg !102 + #dbg_declare(ptr %p, !94, !DIExpression(), !96) + %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !97 + store ptr %call, ptr %p, align 8, !dbg !98 + %0 = load ptr, ptr %p, align 8, !dbg !99 + %call1 = call i32 @ResourceLeak_TC01(ptr noundef %0), !dbg !100 + ret i32 0, !dbg !101 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 = { "frame-pointer"="all" "no-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 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 = !{!7} !llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} @@ -169,13 +166,13 @@ attributes #7 = { nounwind } !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/mem_leak/sp1.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ea92a2c024e32eee5e212630b4e2a5e4") +!2 = !DIFile(filename: "src/mem_leak/sp1.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "ea92a2c024e32eee5e212630b4e2a5e4") !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, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp1.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ea92a2c024e32eee5e212630b4e2a5e4") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp1.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "ea92a2c024e32eee5e212630b4e2a5e4") !9 = !{!10} !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) !11 = !{!0} @@ -186,9 +183,9 @@ attributes #7 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !20 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !21, file: !21, line: 5, type: !22, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) -!21 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!21 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !22 = !DISubroutineType(types: !23) !23 = !{!10, !24} !24 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -248,25 +245,24 @@ attributes #7 = { nounwind } !78 = !DILocation(line: 12, column: 6, scope: !79) !79 = distinct !DILexicalBlock(scope: !67, file: !2, line: 12, column: 6) !80 = !DILocation(line: 12, column: 8, scope: !79) -!81 = !DILocation(line: 12, column: 6, scope: !67) -!82 = !DILocation(line: 13, column: 3, scope: !79) -!83 = !DILocation(line: 15, column: 9, scope: !67) -!84 = !DILocation(line: 15, column: 12, scope: !67) -!85 = !DILocation(line: 15, column: 2, scope: !67) -!86 = !DILocation(line: 16, column: 19, scope: !67) -!87 = !DILocation(line: 16, column: 2, scope: !67) -!88 = !DILocation(line: 17, column: 7, scope: !67) -!89 = !DILocation(line: 17, column: 2, scope: !67) -!90 = !DILocation(line: 18, column: 2, scope: !67) -!91 = !DILocation(line: 19, column: 1, scope: !67) -!92 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 21, type: !93, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) -!93 = !DISubroutineType(types: !94) -!94 = !{!24} -!95 = !DILocalVariable(name: "p", scope: !92, file: !2, line: 22, type: !96) -!96 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!97 = !DILocation(line: 22, column: 8, scope: !92) -!98 = !DILocation(line: 23, column: 6, scope: !92) -!99 = !DILocation(line: 23, column: 4, scope: !92) -!100 = !DILocation(line: 24, column: 20, scope: !92) -!101 = !DILocation(line: 24, column: 2, scope: !92) -!102 = !DILocation(line: 25, column: 2, scope: !92) +!81 = !DILocation(line: 13, column: 3, scope: !79) +!82 = !DILocation(line: 15, column: 9, scope: !67) +!83 = !DILocation(line: 15, column: 12, scope: !67) +!84 = !DILocation(line: 15, column: 2, scope: !67) +!85 = !DILocation(line: 16, column: 19, scope: !67) +!86 = !DILocation(line: 16, column: 2, scope: !67) +!87 = !DILocation(line: 17, column: 7, scope: !67) +!88 = !DILocation(line: 17, column: 2, scope: !67) +!89 = !DILocation(line: 18, column: 2, scope: !67) +!90 = !DILocation(line: 19, column: 1, scope: !67) +!91 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 21, type: !92, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) +!92 = !DISubroutineType(types: !93) +!93 = !{!24} +!94 = !DILocalVariable(name: "p", scope: !91, file: !2, line: 22, type: !95) +!95 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!96 = !DILocation(line: 22, column: 8, scope: !91) +!97 = !DILocation(line: 23, column: 6, scope: !91) +!98 = !DILocation(line: 23, column: 4, scope: !91) +!99 = !DILocation(line: 24, column: 20, scope: !91) +!100 = !DILocation(line: 24, column: 2, scope: !91) +!101 = !DILocation(line: 25, column: 2, scope: !91) diff --git a/test_cases_bc/mem_leak/sp10.c.bc b/test_cases_bc/mem_leak/sp10.c.bc index 4594c5544..55f67ac50 100644 --- a/test_cases_bc/mem_leak/sp10.c.bc +++ b/test_cases_bc/mem_leak/sp10.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp10.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp10.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp10.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp10.c" +target datalayout = "e-m:e-p270:32:32-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, ptr, ptr } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !28, metadata !DIExpression()), !dbg !29 + #dbg_declare(ptr %n.addr, !28, !DIExpression(), !29) %0 = load i32, ptr %n.addr, align 4, !dbg !30 %conv = sext i32 %0 to i64, !dbg !30 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !31 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !31 ret ptr %call, !dbg !32 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !33 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !34, metadata !DIExpression()), !dbg !35 + #dbg_declare(ptr %n.addr, !34, !DIExpression(), !35) %0 = load i32, ptr %n.addr, align 4, !dbg !36 %conv = sext i32 %0 to i64, !dbg !36 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !37 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !37 ret ptr %call, !dbg !38 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !39 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !40, metadata !DIExpression()), !dbg !41 + #dbg_declare(ptr %n.addr, !40, !DIExpression(), !41) %0 = load i32, ptr %n.addr, align 4, !dbg !42 %conv = sext i32 %0 to i64, !dbg !42 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !43 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !43 ret ptr %call, !dbg !44 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !45 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !46, metadata !DIExpression()), !dbg !47 + #dbg_declare(ptr %n.addr, !46, !DIExpression(), !47) %0 = load i32, ptr %n.addr, align 4, !dbg !48 %conv = sext i32 %0 to i64, !dbg !48 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !49 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !49 ret ptr %call, !dbg !50 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !51 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !52, metadata !DIExpression()), !dbg !53 + #dbg_declare(ptr %n.addr, !52, !DIExpression(), !53) %0 = load i32, ptr %n.addr, align 4, !dbg !54 %conv = sext i32 %0 to i64, !dbg !54 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !55 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !55 ret ptr %call, !dbg !56 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !57 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !58, metadata !DIExpression()), !dbg !59 + #dbg_declare(ptr %n.addr, !58, !DIExpression(), !59) %0 = load i32, ptr %n.addr, align 4, !dbg !60 %conv = sext i32 %0 to i64, !dbg !60 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !61 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !61 ret ptr %call, !dbg !62 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !63 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !64, metadata !DIExpression()), !dbg !65 + #dbg_declare(ptr %n.addr, !64, !DIExpression(), !65) %0 = load i32, ptr %n.addr, align 4, !dbg !66 %conv = sext i32 %0 to i64, !dbg !66 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !67 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !67 ret ptr %call, !dbg !68 } @@ -99,12 +96,12 @@ entry: define dso_local ptr @newNode() #0 !dbg !69 { entry: %node = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %node, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %node, !72, !DIExpression(), !73) %call = call ptr @SAFEMALLOC(i32 noundef 24), !dbg !74 store ptr %call, ptr %node, align 8, !dbg !75 %call1 = call ptr @SAFEMALLOC(i32 noundef 4), !dbg !76 %0 = load ptr, ptr %node, align 8, !dbg !77 - %a = getelementptr inbounds %struct.List, ptr %0, i32 0, i32 2, !dbg !78 + %a = getelementptr inbounds nuw %struct.List, ptr %0, i32 0, i32 2, !dbg !78 store ptr %call1, ptr %a, align 8, !dbg !79 %1 = load ptr, ptr %node, align 8, !dbg !80 ret ptr %1, !dbg !81 @@ -116,36 +113,36 @@ entry: %retval = alloca i32, align 4 %node.addr = alloca ptr, align 8 store ptr %node, ptr %node.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %node.addr, metadata !85, metadata !DIExpression()), !dbg !86 + #dbg_declare(ptr %node.addr, !85, !DIExpression(), !86) %0 = load ptr, ptr %node.addr, align 8, !dbg !87 - call void @free(ptr noundef %0) #5, !dbg !88 + call void @free(ptr noundef %0) #4, !dbg !88 %1 = load ptr, ptr %node.addr, align 8, !dbg !89 - %a = getelementptr inbounds %struct.List, ptr %1, i32 0, i32 2, !dbg !90 + %a = getelementptr inbounds nuw %struct.List, ptr %1, i32 0, i32 2, !dbg !90 %2 = load ptr, ptr %a, align 8, !dbg !90 - call void @free(ptr noundef %2) #5, !dbg !91 + call void @free(ptr noundef %2) #4, !dbg !91 %3 = load i32, ptr %retval, align 4, !dbg !92 ret i32 %3, !dbg !92 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @foo() #0 !dbg !93 { entry: %root = alloca ptr, align 8 %a = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %root, metadata !96, metadata !DIExpression()), !dbg !97 - call void @llvm.dbg.declare(metadata ptr %a, metadata !98, metadata !DIExpression()), !dbg !99 + #dbg_declare(ptr %root, !96, !DIExpression(), !97) + #dbg_declare(ptr %a, !98, !DIExpression(), !99) store i32 10, ptr %a, align 4, !dbg !99 %call = call ptr @newNode(), !dbg !100 store ptr %call, ptr %root, align 8, !dbg !101 %call1 = call ptr @newNode(), !dbg !102 %0 = load ptr, ptr %root, align 8, !dbg !103 - %next = getelementptr inbounds %struct.List, ptr %0, i32 0, i32 0, !dbg !104 + %next = getelementptr inbounds nuw %struct.List, ptr %0, i32 0, i32 0, !dbg !104 store ptr %call1, ptr %next, align 8, !dbg !105 %1 = load ptr, ptr %root, align 8, !dbg !106 - %next2 = getelementptr inbounds %struct.List, ptr %1, i32 0, i32 0, !dbg !107 + %next2 = getelementptr inbounds nuw %struct.List, ptr %1, i32 0, i32 0, !dbg !107 %2 = load ptr, ptr %next2, align 8, !dbg !107 %call3 = call i32 @freeNode(ptr noundef %2), !dbg !108 %3 = load ptr, ptr %root, align 8, !dbg !109 @@ -158,15 +155,15 @@ define dso_local void @buffer_free(ptr noundef %m) #0 !dbg !112 { entry: %m.addr = alloca ptr, align 8 store ptr %m, ptr %m.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %m.addr, metadata !116, metadata !DIExpression()), !dbg !117 + #dbg_declare(ptr %m.addr, !116, !DIExpression(), !117) %0 = load ptr, ptr %m.addr, align 8, !dbg !118 %1 = load ptr, ptr %0, align 8, !dbg !119 - %buf = getelementptr inbounds %struct.List, ptr %1, i32 0, i32 1, !dbg !120 + %buf = getelementptr inbounds nuw %struct.List, ptr %1, i32 0, i32 1, !dbg !120 %2 = load ptr, ptr %buf, align 8, !dbg !120 - call void @free(ptr noundef %2) #5, !dbg !121 + call void @free(ptr noundef %2) #4, !dbg !121 %3 = load ptr, ptr %m.addr, align 8, !dbg !122 %4 = load ptr, ptr %3, align 8, !dbg !123 - call void @free(ptr noundef %4) #5, !dbg !124 + call void @free(ptr noundef %4) #4, !dbg !124 ret void, !dbg !125 } @@ -175,11 +172,11 @@ define dso_local void @buffer_init(ptr noundef %x) #0 !dbg !126 { 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 !127, metadata !DIExpression()), !dbg !128 + #dbg_declare(ptr %x.addr, !127, !DIExpression(), !128) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !129 %0 = load ptr, ptr %x.addr, align 8, !dbg !130 %1 = load ptr, ptr %0, align 8, !dbg !131 - %buf = getelementptr inbounds %struct.List, ptr %1, i32 0, i32 1, !dbg !132 + %buf = getelementptr inbounds nuw %struct.List, ptr %1, i32 0, i32 1, !dbg !132 store ptr %call, ptr %buf, align 8, !dbg !133 ret void, !dbg !134 } @@ -188,7 +185,7 @@ entry: define dso_local void @main() #0 !dbg !135 { entry: %m = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %m, metadata !136, metadata !DIExpression()), !dbg !137 + #dbg_declare(ptr %m, !136, !DIExpression(), !137) %call = call ptr @SAFEMALLOC(i32 noundef 24), !dbg !138 store ptr %call, ptr %m, align 8, !dbg !139 call void @buffer_init(ptr noundef %m), !dbg !140 @@ -196,23 +193,22 @@ entry: ret void, !dbg !142 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!14, !15, !16, !17, !18, !19, !20} !llvm.ident = !{!21} -!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/mem_leak/sp10.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "33cfe96f0f2147d2a86090e885d1ee77") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp10.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "33cfe96f0f2147d2a86090e885d1ee77") !2 = !{!3, !12, !9} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "List", file: !5, line: 11, size: 192, elements: !6) -!5 = !DIFile(filename: "src/mem_leak/sp10.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "33cfe96f0f2147d2a86090e885d1ee77") +!5 = !DIFile(filename: "src/mem_leak/sp10.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "33cfe96f0f2147d2a86090e885d1ee77") !6 = !{!7, !8, !11} !7 = !DIDerivedType(tag: DW_TAG_member, name: "next", scope: !4, file: !5, line: 12, baseType: !3, size: 64) !8 = !DIDerivedType(tag: DW_TAG_member, name: "buf", scope: !4, file: !5, line: 13, baseType: !9, size: 64, offset: 64) @@ -228,9 +224,9 @@ attributes #5 = { nounwind } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !22 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !23, file: !23, line: 5, type: !24, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !27) -!23 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!23 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !24 = !DISubroutineType(types: !25) !25 = !{!26, !13} !26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/sp11.c.bc b/test_cases_bc/mem_leak/sp11.c.bc index 6bd04fcdd..0df808f16 100644 --- a/test_cases_bc/mem_leak/sp11.c.bc +++ b/test_cases_bc/mem_leak/sp11.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp11.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp11.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp11.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp11.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !12 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !18, metadata !DIExpression()), !dbg !19 + #dbg_declare(ptr %n.addr, !18, !DIExpression(), !19) %0 = load i32, ptr %n.addr, align 4, !dbg !20 %conv = sext i32 %0 to i64, !dbg !20 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !21 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !21 ret ptr %call, !dbg !22 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !23 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !24, metadata !DIExpression()), !dbg !25 + #dbg_declare(ptr %n.addr, !24, !DIExpression(), !25) %0 = load i32, ptr %n.addr, align 4, !dbg !26 %conv = sext i32 %0 to i64, !dbg !26 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !27 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !27 ret ptr %call, !dbg !28 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !29 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !30, metadata !DIExpression()), !dbg !31 + #dbg_declare(ptr %n.addr, !30, !DIExpression(), !31) %0 = load i32, ptr %n.addr, align 4, !dbg !32 %conv = sext i32 %0 to i64, !dbg !32 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !33 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !33 ret ptr %call, !dbg !34 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !35 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !36, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %n.addr, !36, !DIExpression(), !37) %0 = load i32, ptr %n.addr, align 4, !dbg !38 %conv = sext i32 %0 to i64, !dbg !38 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !39 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !39 ret ptr %call, !dbg !40 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !41 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !42, metadata !DIExpression()), !dbg !43 + #dbg_declare(ptr %n.addr, !42, !DIExpression(), !43) %0 = load i32, ptr %n.addr, align 4, !dbg !44 %conv = sext i32 %0 to i64, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !45 ret ptr %call, !dbg !46 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !47 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !48, metadata !DIExpression()), !dbg !49 + #dbg_declare(ptr %n.addr, !48, !DIExpression(), !49) %0 = load i32, ptr %n.addr, align 4, !dbg !50 %conv = sext i32 %0 to i64, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !51 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !51 ret ptr %call, !dbg !52 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !53 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !54, metadata !DIExpression()), !dbg !55 + #dbg_declare(ptr %n.addr, !54, !DIExpression(), !55) %0 = load i32, ptr %n.addr, align 4, !dbg !56 %conv = sext i32 %0 to i64, !dbg !56 - %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !57 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !57 ret ptr %call, !dbg !58 } @@ -98,7 +95,7 @@ define dso_local ptr @aliasing(ptr noundef %p) #0 !dbg !59 { 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 !65, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %p.addr, !65, !DIExpression(), !66) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !67 %0 = load ptr, ptr %p.addr, align 8, !dbg !68 store ptr %call, ptr %0, align 8, !dbg !69 @@ -114,48 +111,47 @@ entry: %pp = alloca ptr, align 8 %t = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %pp, metadata !76, metadata !DIExpression()), !dbg !77 - call void @llvm.dbg.declare(metadata ptr %t, metadata !78, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %pp, !76, !DIExpression(), !77) + #dbg_declare(ptr %t, !78, !DIExpression(), !79) %call = call ptr @aliasing(ptr noundef %pp), !dbg !80 store ptr %call, ptr %t, align 8, !dbg !81 %0 = load ptr, ptr %t, align 8, !dbg !82 %cmp = icmp ne ptr %0, null, !dbg !84 - br i1 %cmp, label %if.then, label %if.else, !dbg !85 + br i1 %cmp, label %if.then, label %if.else, !dbg !84 if.then: ; preds = %entry - %1 = load ptr, ptr %t, align 8, !dbg !86 - call void @free(ptr noundef %1) #6, !dbg !88 - br label %if.end, !dbg !89 + %1 = load ptr, ptr %t, align 8, !dbg !85 + call void @free(ptr noundef %1) #5, !dbg !87 + br label %if.end, !dbg !88 if.else: ; preds = %entry - call void @exit(i32 noundef 0) #7, !dbg !90 - unreachable, !dbg !90 + call void @exit(i32 noundef 0) #6, !dbg !89 + unreachable, !dbg !89 if.end: ; preds = %if.then - ret i32 1, !dbg !92 + ret i32 1, !dbg !91 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #4 +declare void @exit(i32 noundef) #3 -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { 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 "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0) } -attributes #6 = { nounwind } -attributes #7 = { 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 = { 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 "frame-pointer"="all" "no-trapping-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 = { 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 #4 = { nounwind allocsize(0) } +attributes #5 = { nounwind } +attributes #6 = { noreturn nounwind } !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/mem_leak/sp11.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fd6e4641285f1e2a9caa656bdce5efda") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp11.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "fd6e4641285f1e2a9caa656bdce5efda") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) !4 = !{i32 7, !"Dwarf Version", i32 5} @@ -165,9 +161,9 @@ attributes #7 = { noreturn nounwind } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !12 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !13, file: !13, line: 5, type: !14, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!13 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !14 = !DISubroutineType(types: !15) !15 = !{!3, !16} !16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -214,7 +210,7 @@ attributes #7 = { noreturn nounwind } !57 = !DILocation(line: 30, column: 10, scope: !53) !58 = !DILocation(line: 30, column: 3, scope: !53) !59 = distinct !DISubprogram(name: "aliasing", scope: !60, file: !60, line: 11, type: !61, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!60 = !DIFile(filename: "src/mem_leak/sp11.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fd6e4641285f1e2a9caa656bdce5efda") +!60 = !DIFile(filename: "src/mem_leak/sp11.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "fd6e4641285f1e2a9caa656bdce5efda") !61 = !DISubroutineType(types: !62) !62 = !{!63, !64} !63 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) @@ -239,11 +235,10 @@ attributes #7 = { noreturn nounwind } !82 = !DILocation(line: 19, column: 6, scope: !83) !83 = distinct !DILexicalBlock(scope: !73, file: !60, line: 19, column: 6) !84 = !DILocation(line: 19, column: 8, scope: !83) -!85 = !DILocation(line: 19, column: 6, scope: !73) -!86 = !DILocation(line: 20, column: 8, scope: !87) -!87 = distinct !DILexicalBlock(scope: !83, file: !60, line: 19, column: 23) -!88 = !DILocation(line: 20, column: 3, scope: !87) -!89 = !DILocation(line: 21, column: 2, scope: !87) -!90 = !DILocation(line: 22, column: 3, scope: !91) -!91 = distinct !DILexicalBlock(scope: !83, file: !60, line: 21, column: 9) -!92 = !DILocation(line: 24, column: 2, scope: !73) +!85 = !DILocation(line: 20, column: 8, scope: !86) +!86 = distinct !DILexicalBlock(scope: !83, file: !60, line: 19, column: 23) +!87 = !DILocation(line: 20, column: 3, scope: !86) +!88 = !DILocation(line: 21, column: 2, scope: !86) +!89 = !DILocation(line: 22, column: 3, scope: !90) +!90 = distinct !DILexicalBlock(scope: !83, file: !60, line: 21, column: 9) +!91 = !DILocation(line: 24, column: 2, scope: !73) diff --git a/test_cases_bc/mem_leak/sp12.c.bc b/test_cases_bc/mem_leak/sp12.c.bc index 304fa9e52..9f93b33b1 100644 --- a/test_cases_bc/mem_leak/sp12.c.bc +++ b/test_cases_bc/mem_leak/sp12.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp12.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp12.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp12.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp12.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @G = dso_local global i32 0, align 4, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !15 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !21, metadata !DIExpression()), !dbg !22 + #dbg_declare(ptr %n.addr, !21, !DIExpression(), !22) %0 = load i32, ptr %n.addr, align 4, !dbg !23 %conv = sext i32 %0 to i64, !dbg !23 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !24 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !24 ret ptr %call, !dbg !25 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !26 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !30 ret ptr %call, !dbg !31 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !36 ret ptr %call, !dbg !37 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !42 ret ptr %call, !dbg !43 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !48 ret ptr %call, !dbg !49 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !54 ret ptr %call, !dbg !55 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !60 ret ptr %call, !dbg !61 } @@ -100,8 +97,8 @@ define dso_local void @main() #0 !dbg !62 { entry: %i = alloca i32, align 4 %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %i, metadata !65, metadata !DIExpression()), !dbg !66 - call void @llvm.dbg.declare(metadata ptr %p, metadata !67, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %i, !65, !DIExpression(), !66) + #dbg_declare(ptr %p, !67, !DIExpression(), !69) %call = call ptr @PLKMALLOC(i32 noundef 100), !dbg !70 store ptr %call, ptr %p, align 8, !dbg !69 store i32 0, ptr %i, align 4, !dbg !71 @@ -115,35 +112,34 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %1 = load i32, ptr @G, align 4, !dbg !78 %tobool = icmp ne i32 %1, 0, !dbg !78 - br i1 %tobool, label %if.then, label %if.end, !dbg !81 + br i1 %tobool, label %if.then, label %if.end, !dbg !78 if.then: ; preds = %for.body - %2 = load ptr, ptr %p, align 8, !dbg !82 - call void @free(ptr noundef %2) #5, !dbg !84 - br label %for.end, !dbg !85 + %2 = load ptr, ptr %p, align 8, !dbg !81 + call void @free(ptr noundef %2) #4, !dbg !83 + br label %for.end, !dbg !84 if.end: ; preds = %for.body - br label %for.inc, !dbg !86 + br label %for.inc, !dbg !85 for.inc: ; preds = %if.end - %3 = load i32, ptr %i, align 4, !dbg !87 - %inc = add nsw i32 %3, 1, !dbg !87 - store i32 %inc, ptr %i, align 4, !dbg !87 - br label %for.cond, !dbg !88, !llvm.loop !89 + %3 = load i32, ptr %i, align 4, !dbg !86 + %inc = add nsw i32 %3, 1, !dbg !86 + store i32 %inc, ptr %i, align 4, !dbg !86 + br label %for.cond, !dbg !87, !llvm.loop !88 for.end: ; preds = %if.then, %for.cond - ret void, !dbg !92 + ret void, !dbg !91 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} @@ -151,10 +147,10 @@ attributes #5 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "G", scope: !2, file: !5, line: 11, 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/mem_leak/sp12.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "47ef3cc0a78dbf2cf1bc5d6199c11ffb") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp12.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "47ef3cc0a78dbf2cf1bc5d6199c11ffb") !4 = !{!0} -!5 = !DIFile(filename: "src/mem_leak/sp12.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "47ef3cc0a78dbf2cf1bc5d6199c11ffb") +!5 = !DIFile(filename: "src/mem_leak/sp12.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "47ef3cc0a78dbf2cf1bc5d6199c11ffb") !6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) !7 = !{i32 7, !"Dwarf Version", i32 5} !8 = !{i32 2, !"Debug Info Version", i32 3} @@ -163,9 +159,9 @@ attributes #5 = { nounwind } !11 = !{i32 7, !"PIE Level", i32 2} !12 = !{i32 7, !"uwtable", i32 2} !13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} +!14 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !15 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !16, file: !16, line: 5, type: !17, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) -!16 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!16 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !17 = !DISubroutineType(types: !18) !18 = !{!19, !6} !19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -230,15 +226,14 @@ attributes #5 = { nounwind } !78 = !DILocation(line: 15, column: 8, scope: !79) !79 = distinct !DILexicalBlock(scope: !80, file: !5, line: 15, column: 8) !80 = distinct !DILexicalBlock(scope: !75, file: !5, line: 14, column: 23) -!81 = !DILocation(line: 15, column: 8, scope: !80) -!82 = !DILocation(line: 16, column: 10, scope: !83) -!83 = distinct !DILexicalBlock(scope: !79, file: !5, line: 15, column: 10) -!84 = !DILocation(line: 16, column: 5, scope: !83) -!85 = !DILocation(line: 17, column: 5, scope: !83) -!86 = !DILocation(line: 19, column: 6, scope: !80) -!87 = !DILocation(line: 14, column: 20, scope: !75) -!88 = !DILocation(line: 14, column: 6, scope: !75) -!89 = distinct !{!89, !77, !90, !91} -!90 = !DILocation(line: 19, column: 6, scope: !72) -!91 = !{!"llvm.loop.mustprogress"} -!92 = !DILocation(line: 20, column: 1, scope: !62) +!81 = !DILocation(line: 16, column: 10, scope: !82) +!82 = distinct !DILexicalBlock(scope: !79, file: !5, line: 15, column: 10) +!83 = !DILocation(line: 16, column: 5, scope: !82) +!84 = !DILocation(line: 17, column: 5, scope: !82) +!85 = !DILocation(line: 19, column: 6, scope: !80) +!86 = !DILocation(line: 14, column: 20, scope: !75) +!87 = !DILocation(line: 14, column: 6, scope: !75) +!88 = distinct !{!88, !77, !89, !90} +!89 = !DILocation(line: 19, column: 6, scope: !72) +!90 = !{!"llvm.loop.mustprogress"} +!91 = !DILocation(line: 20, column: 1, scope: !62) diff --git a/test_cases_bc/mem_leak/sp12a.c.bc b/test_cases_bc/mem_leak/sp12a.c.bc index 2f6168142..0d9250281 100644 --- a/test_cases_bc/mem_leak/sp12a.c.bc +++ b/test_cases_bc/mem_leak/sp12a.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp12a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp12a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp12a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp12a.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @G = dso_local global i32 0, align 4, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !15 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !21, metadata !DIExpression()), !dbg !22 + #dbg_declare(ptr %n.addr, !21, !DIExpression(), !22) %0 = load i32, ptr %n.addr, align 4, !dbg !23 %conv = sext i32 %0 to i64, !dbg !23 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !24 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !24 ret ptr %call, !dbg !25 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !26 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !30 ret ptr %call, !dbg !31 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !36 ret ptr %call, !dbg !37 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !42 ret ptr %call, !dbg !43 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !48 ret ptr %call, !dbg !49 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !54 ret ptr %call, !dbg !55 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !60 ret ptr %call, !dbg !61 } @@ -100,8 +97,8 @@ define dso_local void @main() #0 !dbg !62 { entry: %i = alloca i32, align 4 %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %i, metadata !65, metadata !DIExpression()), !dbg !66 - call void @llvm.dbg.declare(metadata ptr %p, metadata !67, metadata !DIExpression()), !dbg !69 + #dbg_declare(ptr %i, !65, !DIExpression(), !66) + #dbg_declare(ptr %p, !67, !DIExpression(), !69) %call = call ptr @PLKMALLOC(i32 noundef 100), !dbg !70 store ptr %call, ptr %p, align 8, !dbg !69 store i32 0, ptr %i, align 4, !dbg !71 @@ -115,35 +112,34 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %1 = load i32, ptr @G, align 4, !dbg !78 %tobool = icmp ne i32 %1, 0, !dbg !78 - br i1 %tobool, label %if.then, label %if.end, !dbg !81 + br i1 %tobool, label %if.then, label %if.end, !dbg !78 if.then: ; preds = %for.body - %2 = load ptr, ptr %p, align 8, !dbg !82 - call void @free(ptr noundef %2) #5, !dbg !84 - br label %for.end, !dbg !85 + %2 = load ptr, ptr %p, align 8, !dbg !81 + call void @free(ptr noundef %2) #4, !dbg !83 + br label %for.end, !dbg !84 if.end: ; preds = %for.body - br label %for.inc, !dbg !86 + br label %for.inc, !dbg !85 for.inc: ; preds = %if.end - %3 = load i32, ptr %i, align 4, !dbg !87 - %inc = add nsw i32 %3, 1, !dbg !87 - store i32 %inc, ptr %i, align 4, !dbg !87 - br label %for.cond, !dbg !88, !llvm.loop !89 + %3 = load i32, ptr %i, align 4, !dbg !86 + %inc = add nsw i32 %3, 1, !dbg !86 + store i32 %inc, ptr %i, align 4, !dbg !86 + br label %for.cond, !dbg !87, !llvm.loop !88 for.end: ; preds = %if.then, %for.cond - ret void, !dbg !92 + ret void, !dbg !91 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} @@ -151,10 +147,10 @@ attributes #5 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "G", scope: !2, file: !5, line: 10, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp12a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "852fc22f9fe99bf188e188d35f6b478b") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp12a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "852fc22f9fe99bf188e188d35f6b478b") !4 = !{!0} -!5 = !DIFile(filename: "src/mem_leak/sp12a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "852fc22f9fe99bf188e188d35f6b478b") +!5 = !DIFile(filename: "src/mem_leak/sp12a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "852fc22f9fe99bf188e188d35f6b478b") !6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) !7 = !{i32 7, !"Dwarf Version", i32 5} !8 = !{i32 2, !"Debug Info Version", i32 3} @@ -163,9 +159,9 @@ attributes #5 = { nounwind } !11 = !{i32 7, !"PIE Level", i32 2} !12 = !{i32 7, !"uwtable", i32 2} !13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} +!14 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !15 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !16, file: !16, line: 5, type: !17, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) -!16 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!16 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !17 = !DISubroutineType(types: !18) !18 = !{!19, !6} !19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -230,15 +226,14 @@ attributes #5 = { nounwind } !78 = !DILocation(line: 14, column: 7, scope: !79) !79 = distinct !DILexicalBlock(scope: !80, file: !5, line: 14, column: 7) !80 = distinct !DILexicalBlock(scope: !75, file: !5, line: 13, column: 28) -!81 = !DILocation(line: 14, column: 7, scope: !80) -!82 = !DILocation(line: 15, column: 9, scope: !83) -!83 = distinct !DILexicalBlock(scope: !79, file: !5, line: 14, column: 10) -!84 = !DILocation(line: 15, column: 4, scope: !83) -!85 = !DILocation(line: 16, column: 4, scope: !83) -!86 = !DILocation(line: 18, column: 2, scope: !80) -!87 = !DILocation(line: 13, column: 24, scope: !75) -!88 = !DILocation(line: 13, column: 2, scope: !75) -!89 = distinct !{!89, !77, !90, !91} -!90 = !DILocation(line: 18, column: 2, scope: !72) -!91 = !{!"llvm.loop.mustprogress"} -!92 = !DILocation(line: 19, column: 1, scope: !62) +!81 = !DILocation(line: 15, column: 9, scope: !82) +!82 = distinct !DILexicalBlock(scope: !79, file: !5, line: 14, column: 10) +!83 = !DILocation(line: 15, column: 4, scope: !82) +!84 = !DILocation(line: 16, column: 4, scope: !82) +!85 = !DILocation(line: 18, column: 2, scope: !80) +!86 = !DILocation(line: 13, column: 24, scope: !75) +!87 = !DILocation(line: 13, column: 2, scope: !75) +!88 = distinct !{!88, !77, !89, !90} +!89 = !DILocation(line: 18, column: 2, scope: !72) +!90 = !{!"llvm.loop.mustprogress"} +!91 = !DILocation(line: 19, column: 1, scope: !62) diff --git a/test_cases_bc/mem_leak/sp13.c.bc b/test_cases_bc/mem_leak/sp13.c.bc index 853b7bc24..e3dcc18d3 100644 --- a/test_cases_bc/mem_leak/sp13.c.bc +++ b/test_cases_bc/mem_leak/sp13.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp13.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp13.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp13.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp13.c" +target datalayout = "e-m:e-p270:32:32-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, ptr } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !19 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !29 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !29 ret ptr %call, !dbg !30 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !35 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !35 ret ptr %call, !dbg !36 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !41 ret ptr %call, !dbg !42 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !47 ret ptr %call, !dbg !48 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !53 ret ptr %call, !dbg !54 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !59 ret ptr %call, !dbg !60 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !61 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !62, metadata !DIExpression()), !dbg !63 + #dbg_declare(ptr %n.addr, !62, !DIExpression(), !63) %0 = load i32, ptr %n.addr, align 4, !dbg !64 %conv = sext i32 %0 to i64, !dbg !64 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !65 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !65 ret ptr %call, !dbg !66 } @@ -102,19 +99,19 @@ entry: %src.addr = alloca ptr, align 8 %p = alloca ptr, align 8 store ptr %dst, ptr %dst.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %dst.addr, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %dst.addr, !70, !DIExpression(), !71) store ptr %src, ptr %src.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %src.addr, metadata !72, metadata !DIExpression()), !dbg !73 - call void @llvm.dbg.declare(metadata ptr %p, metadata !74, metadata !DIExpression()), !dbg !75 + #dbg_declare(ptr %src.addr, !72, !DIExpression(), !73) + #dbg_declare(ptr %p, !74, !DIExpression(), !75) %call = call ptr @NFRMALLOC(i32 noundef 16), !dbg !76 store ptr %call, ptr %p, align 8, !dbg !77 %0 = load ptr, ptr %dst.addr, align 8, !dbg !78 %1 = load ptr, ptr %p, align 8, !dbg !79 - %x = getelementptr inbounds %struct.List, ptr %1, i32 0, i32 0, !dbg !80 + %x = getelementptr inbounds nuw %struct.List, ptr %1, i32 0, i32 0, !dbg !80 store ptr %0, ptr %x, align 8, !dbg !81 %2 = load ptr, ptr %src.addr, align 8, !dbg !82 %3 = load ptr, ptr %p, align 8, !dbg !83 - %y = getelementptr inbounds %struct.List, ptr %3, i32 0, i32 1, !dbg !84 + %y = getelementptr inbounds nuw %struct.List, ptr %3, i32 0, i32 1, !dbg !84 store ptr %2, ptr %y, align 8, !dbg !85 %4 = load ptr, ptr %p, align 8, !dbg !86 ret ptr %4, !dbg !87 @@ -128,13 +125,13 @@ entry: %q = alloca ptr, align 8 %pp = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !91, metadata !DIExpression()), !dbg !92 + #dbg_declare(ptr %p, !91, !DIExpression(), !92) %call = call ptr @NFRMALLOC(i32 noundef 10), !dbg !93 store ptr %call, ptr %p, align 8, !dbg !92 - call void @llvm.dbg.declare(metadata ptr %q, metadata !94, metadata !DIExpression()), !dbg !95 + #dbg_declare(ptr %q, !94, !DIExpression(), !95) %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !96 store ptr %call1, ptr %q, align 8, !dbg !95 - call void @llvm.dbg.declare(metadata ptr %pp, metadata !97, metadata !DIExpression()), !dbg !98 + #dbg_declare(ptr %pp, !97, !DIExpression(), !98) %0 = load ptr, ptr %p, align 8, !dbg !99 %1 = load ptr, ptr %q, align 8, !dbg !100 %call2 = call ptr @ra(ptr noundef %0, ptr noundef %1), !dbg !101 @@ -144,21 +141,20 @@ entry: ret i32 %3, !dbg !104 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 allocsize(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"="+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.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/mem_leak/sp13.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "37fa4102dcf4fbc2603d67d81f563cd3") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp13.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "37fa4102dcf4fbc2603d67d81f563cd3") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "List", file: !5, line: 11, size: 128, elements: !6) -!5 = !DIFile(filename: "src/mem_leak/sp13.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "37fa4102dcf4fbc2603d67d81f563cd3") +!5 = !DIFile(filename: "src/mem_leak/sp13.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "37fa4102dcf4fbc2603d67d81f563cd3") !6 = !{!7, !10} !7 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !4, file: !5, line: 12, baseType: !8, size: 64) !8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64) @@ -171,9 +167,9 @@ attributes #3 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !19 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !20, file: !20, line: 5, type: !21, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !25) -!20 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!20 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !21 = !DISubroutineType(types: !22) !22 = !{!23, !24} !23 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/sp13a.c.bc b/test_cases_bc/mem_leak/sp13a.c.bc index c5bb39c7a..2a4f8cac3 100644 --- a/test_cases_bc/mem_leak/sp13a.c.bc +++ b/test_cases_bc/mem_leak/sp13a.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp13a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp13a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp13a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp13a.c" +target datalayout = "e-m:e-p270:32:32-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, ptr } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !19 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !29 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !29 ret ptr %call, !dbg !30 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !35 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !35 ret ptr %call, !dbg !36 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !41 ret ptr %call, !dbg !42 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !47 ret ptr %call, !dbg !48 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !53 ret ptr %call, !dbg !54 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !59 ret ptr %call, !dbg !60 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !61 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !62, metadata !DIExpression()), !dbg !63 + #dbg_declare(ptr %n.addr, !62, !DIExpression(), !63) %0 = load i32, ptr %n.addr, align 4, !dbg !64 %conv = sext i32 %0 to i64, !dbg !64 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !65 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !65 ret ptr %call, !dbg !66 } @@ -102,15 +99,15 @@ entry: %src.addr = alloca ptr, align 8 %p = alloca ptr, align 8 store ptr %dst, ptr %dst.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %dst.addr, metadata !70, metadata !DIExpression()), !dbg !71 + #dbg_declare(ptr %dst.addr, !70, !DIExpression(), !71) store ptr %src, ptr %src.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %src.addr, metadata !72, metadata !DIExpression()), !dbg !73 - call void @llvm.dbg.declare(metadata ptr %p, metadata !74, metadata !DIExpression()), !dbg !75 + #dbg_declare(ptr %src.addr, !72, !DIExpression(), !73) + #dbg_declare(ptr %p, !74, !DIExpression(), !75) %call = call ptr @SAFEMALLOC(i32 noundef 16), !dbg !76 store ptr %call, ptr %p, align 8, !dbg !77 %0 = load ptr, ptr %dst.addr, align 8, !dbg !78 %1 = load ptr, ptr %p, align 8, !dbg !79 - %x = getelementptr inbounds %struct.List, ptr %1, i32 0, i32 0, !dbg !80 + %x = getelementptr inbounds nuw %struct.List, ptr %1, i32 0, i32 0, !dbg !80 store ptr %0, ptr %x, align 8, !dbg !81 %2 = load ptr, ptr %p, align 8, !dbg !82 ret ptr %2, !dbg !83 @@ -124,52 +121,51 @@ entry: %q = alloca ptr, align 8 %pp = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !87, metadata !DIExpression()), !dbg !88 + #dbg_declare(ptr %p, !87, !DIExpression(), !88) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !89 store ptr %call, ptr %p, align 8, !dbg !88 - call void @llvm.dbg.declare(metadata ptr %q, metadata !90, metadata !DIExpression()), !dbg !91 + #dbg_declare(ptr %q, !90, !DIExpression(), !91) %call1 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !92 store ptr %call1, ptr %q, align 8, !dbg !91 - call void @llvm.dbg.declare(metadata ptr %pp, metadata !93, metadata !DIExpression()), !dbg !94 + #dbg_declare(ptr %pp, !93, !DIExpression(), !94) %0 = load ptr, ptr %p, align 8, !dbg !95 %1 = load ptr, ptr %q, align 8, !dbg !96 %call2 = call ptr @ra(ptr noundef %0, ptr noundef %1), !dbg !97 store ptr %call2, ptr %pp, align 8, !dbg !98 %2 = load ptr, ptr %pp, align 8, !dbg !99 - call void @free(ptr noundef %2) #5, !dbg !100 + call void @free(ptr noundef %2) #4, !dbg !100 %3 = load ptr, ptr %pp, align 8, !dbg !101 - %x = getelementptr inbounds %struct.List, ptr %3, i32 0, i32 0, !dbg !102 + %x = getelementptr inbounds nuw %struct.List, ptr %3, i32 0, i32 0, !dbg !102 %4 = load ptr, ptr %x, align 8, !dbg !102 - call void @free(ptr noundef %4) #5, !dbg !103 + call void @free(ptr noundef %4) #4, !dbg !103 %5 = load ptr, ptr %pp, align 8, !dbg !104 - %y = getelementptr inbounds %struct.List, ptr %5, i32 0, i32 1, !dbg !105 + %y = getelementptr inbounds nuw %struct.List, ptr %5, i32 0, i32 1, !dbg !105 %6 = load ptr, ptr %y, align 8, !dbg !105 - call void @free(ptr noundef %6) #5, !dbg !106 + call void @free(ptr noundef %6) #4, !dbg !106 %7 = load ptr, ptr %pp, align 8, !dbg !107 %8 = ptrtoint ptr %7 to i32, !dbg !107 ret i32 %8, !dbg !108 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !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/mem_leak/sp13a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "21024a9950774fb0c2f8b263173f82ab") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp13a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "21024a9950774fb0c2f8b263173f82ab") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "List", file: !5, line: 11, size: 128, elements: !6) -!5 = !DIFile(filename: "src/mem_leak/sp13a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "21024a9950774fb0c2f8b263173f82ab") +!5 = !DIFile(filename: "src/mem_leak/sp13a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "21024a9950774fb0c2f8b263173f82ab") !6 = !{!7, !10} !7 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !4, file: !5, line: 12, baseType: !8, size: 64) !8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64) @@ -182,9 +178,9 @@ attributes #5 = { nounwind } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !19 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !20, file: !20, line: 5, type: !21, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !25) -!20 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!20 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !21 = !DISubroutineType(types: !22) !22 = !{!23, !24} !23 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/sp14.c.bc b/test_cases_bc/mem_leak/sp14.c.bc index ced2ec5ef..39ab32f96 100644 --- a/test_cases_bc/mem_leak/sp14.c.bc +++ b/test_cases_bc/mem_leak/sp14.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp14.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp14.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp14.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp14.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -100,63 +97,62 @@ entry: %n.addr = alloca i32, align 4 %y = alloca ptr, align 8 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 - call void @llvm.dbg.declare(metadata ptr %y, metadata !65, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) + #dbg_declare(ptr %y, !65, !DIExpression(), !66) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !67 store ptr %call, ptr %y, align 8, !dbg !66 %0 = load i32, ptr %n.addr, align 4, !dbg !68 %cmp = icmp sgt i32 %0, 0, !dbg !70 - br i1 %cmp, label %if.then, label %if.else, !dbg !71 + br i1 %cmp, label %if.then, label %if.else, !dbg !70 if.then: ; preds = %entry - %1 = load ptr, ptr %y, align 8, !dbg !72 - call void @free(ptr noundef %1) #5, !dbg !74 - %2 = load i32, ptr %n.addr, align 4, !dbg !75 - %sub = sub nsw i32 %2, 1, !dbg !76 - %call1 = call ptr @make(i32 noundef %sub), !dbg !77 - store ptr %call1, ptr %retval, align 8, !dbg !78 - br label %return, !dbg !78 + %1 = load ptr, ptr %y, align 8, !dbg !71 + call void @free(ptr noundef %1) #4, !dbg !73 + %2 = load i32, ptr %n.addr, align 4, !dbg !74 + %sub = sub nsw i32 %2, 1, !dbg !75 + %call1 = call ptr @make(i32 noundef %sub), !dbg !76 + store ptr %call1, ptr %retval, align 8, !dbg !77 + br label %return, !dbg !77 if.else: ; preds = %entry - %3 = load ptr, ptr %y, align 8, !dbg !79 - call void @free(ptr noundef %3) #5, !dbg !81 - %call2 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !82 - store ptr %call2, ptr %retval, align 8, !dbg !83 - br label %return, !dbg !83 + %3 = load ptr, ptr %y, align 8, !dbg !78 + call void @free(ptr noundef %3) #4, !dbg !80 + %call2 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !81 + store ptr %call2, ptr %retval, align 8, !dbg !82 + br label %return, !dbg !82 return: ; preds = %if.else, %if.then - %4 = load ptr, ptr %retval, align 8, !dbg !84 - ret ptr %4, !dbg !84 + %4 = load ptr, ptr %retval, align 8, !dbg !83 + ret ptr %4, !dbg !83 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @main() #0 !dbg !85 { +define dso_local void @main() #0 !dbg !84 { entry: %x = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %x, metadata !88, metadata !DIExpression()), !dbg !89 - %call = call ptr @make(i32 noundef 10), !dbg !90 - store ptr %call, ptr %x, align 8, !dbg !89 - %0 = load ptr, ptr %x, align 8, !dbg !91 - call void @free(ptr noundef %0) #5, !dbg !92 - ret void, !dbg !93 + #dbg_declare(ptr %x, !87, !DIExpression(), !88) + %call = call ptr @make(i32 noundef 10), !dbg !89 + store ptr %call, ptr %x, align 8, !dbg !88 + %0 = load ptr, ptr %x, align 8, !dbg !90 + call void @free(ptr noundef %0) #4, !dbg !91 + ret void, !dbg !92 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp14.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a6b85096f2aaf8d63bd4a087cf278a17") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp14.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a6b85096f2aaf8d63bd4a087cf278a17") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -164,9 +160,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -214,7 +210,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "make", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/sp14.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a6b85096f2aaf8d63bd4a087cf278a17") +!59 = !DIFile(filename: "src/mem_leak/sp14.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a6b85096f2aaf8d63bd4a087cf278a17") !60 = !DISubroutineType(types: !61) !61 = !{!62, !15} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -226,26 +222,25 @@ attributes #5 = { nounwind } !68 = !DILocation(line: 13, column: 6, scope: !69) !69 = distinct !DILexicalBlock(scope: !58, file: !59, line: 13, column: 6) !70 = !DILocation(line: 13, column: 8, scope: !69) -!71 = !DILocation(line: 13, column: 6, scope: !58) -!72 = !DILocation(line: 14, column: 8, scope: !73) -!73 = distinct !DILexicalBlock(scope: !69, file: !59, line: 13, column: 13) -!74 = !DILocation(line: 14, column: 3, scope: !73) -!75 = !DILocation(line: 15, column: 15, scope: !73) -!76 = !DILocation(line: 15, column: 17, scope: !73) -!77 = !DILocation(line: 15, column: 10, scope: !73) -!78 = !DILocation(line: 15, column: 3, scope: !73) -!79 = !DILocation(line: 17, column: 8, scope: !80) -!80 = distinct !DILexicalBlock(scope: !69, file: !59, line: 16, column: 9) -!81 = !DILocation(line: 17, column: 3, scope: !80) -!82 = !DILocation(line: 18, column: 10, scope: !80) -!83 = !DILocation(line: 18, column: 3, scope: !80) -!84 = !DILocation(line: 20, column: 1, scope: !58) -!85 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 22, type: !86, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!86 = !DISubroutineType(types: !87) -!87 = !{null} -!88 = !DILocalVariable(name: "x", scope: !85, file: !59, line: 23, type: !62) -!89 = !DILocation(line: 23, column: 7, scope: !85) -!90 = !DILocation(line: 23, column: 11, scope: !85) -!91 = !DILocation(line: 24, column: 7, scope: !85) -!92 = !DILocation(line: 24, column: 2, scope: !85) -!93 = !DILocation(line: 25, column: 1, scope: !85) +!71 = !DILocation(line: 14, column: 8, scope: !72) +!72 = distinct !DILexicalBlock(scope: !69, file: !59, line: 13, column: 13) +!73 = !DILocation(line: 14, column: 3, scope: !72) +!74 = !DILocation(line: 15, column: 15, scope: !72) +!75 = !DILocation(line: 15, column: 17, scope: !72) +!76 = !DILocation(line: 15, column: 10, scope: !72) +!77 = !DILocation(line: 15, column: 3, scope: !72) +!78 = !DILocation(line: 17, column: 8, scope: !79) +!79 = distinct !DILexicalBlock(scope: !69, file: !59, line: 16, column: 9) +!80 = !DILocation(line: 17, column: 3, scope: !79) +!81 = !DILocation(line: 18, column: 10, scope: !79) +!82 = !DILocation(line: 18, column: 3, scope: !79) +!83 = !DILocation(line: 20, column: 1, scope: !58) +!84 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 22, type: !85, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!85 = !DISubroutineType(types: !86) +!86 = !{null} +!87 = !DILocalVariable(name: "x", scope: !84, file: !59, line: 23, type: !62) +!88 = !DILocation(line: 23, column: 7, scope: !84) +!89 = !DILocation(line: 23, column: 11, scope: !84) +!90 = !DILocation(line: 24, column: 7, scope: !84) +!91 = !DILocation(line: 24, column: 2, scope: !84) +!92 = !DILocation(line: 25, column: 1, scope: !84) diff --git a/test_cases_bc/mem_leak/sp14a.c.bc b/test_cases_bc/mem_leak/sp14a.c.bc index 8074d16dd..7550756ad 100644 --- a/test_cases_bc/mem_leak/sp14a.c.bc +++ b/test_cases_bc/mem_leak/sp14a.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp14a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp14a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp14a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp14a.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !10 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !17, metadata !DIExpression()), !dbg !18 + #dbg_declare(ptr %n.addr, !17, !DIExpression(), !18) %0 = load i32, ptr %n.addr, align 4, !dbg !19 %conv = sext i32 %0 to i64, !dbg !19 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !20 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !20 ret ptr %call, !dbg !21 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !22 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 ret ptr %call, !dbg !27 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 ret ptr %call, !dbg !33 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 ret ptr %call, !dbg !39 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 ret ptr %call, !dbg !45 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 ret ptr %call, !dbg !51 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 ret ptr %call, !dbg !57 } @@ -100,59 +97,58 @@ entry: %n.addr = alloca i32, align 4 %y = alloca ptr, align 8 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 - call void @llvm.dbg.declare(metadata ptr %y, metadata !65, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) + #dbg_declare(ptr %y, !65, !DIExpression(), !66) %call = call ptr @PLKMALLOC(i32 noundef 10), !dbg !67 store ptr %call, ptr %y, align 8, !dbg !66 %0 = load i32, ptr %n.addr, align 4, !dbg !68 %cmp = icmp sgt i32 %0, 0, !dbg !70 - br i1 %cmp, label %if.then, label %if.else, !dbg !71 + br i1 %cmp, label %if.then, label %if.else, !dbg !70 if.then: ; preds = %entry - %1 = load i32, ptr %n.addr, align 4, !dbg !72 - %sub = sub nsw i32 %1, 1, !dbg !74 - %call1 = call ptr @make(i32 noundef %sub), !dbg !75 - store ptr %call1, ptr %retval, align 8, !dbg !76 - br label %return, !dbg !76 + %1 = load i32, ptr %n.addr, align 4, !dbg !71 + %sub = sub nsw i32 %1, 1, !dbg !73 + %call1 = call ptr @make(i32 noundef %sub), !dbg !74 + store ptr %call1, ptr %retval, align 8, !dbg !75 + br label %return, !dbg !75 if.else: ; preds = %entry - %2 = load ptr, ptr %y, align 8, !dbg !77 - call void @free(ptr noundef %2) #5, !dbg !79 - %call2 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !80 - store ptr %call2, ptr %retval, align 8, !dbg !81 - br label %return, !dbg !81 + %2 = load ptr, ptr %y, align 8, !dbg !76 + call void @free(ptr noundef %2) #4, !dbg !78 + %call2 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !79 + store ptr %call2, ptr %retval, align 8, !dbg !80 + br label %return, !dbg !80 return: ; preds = %if.else, %if.then - %3 = load ptr, ptr %retval, align 8, !dbg !82 - ret ptr %3, !dbg !82 + %3 = load ptr, ptr %retval, align 8, !dbg !81 + ret ptr %3, !dbg !81 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @main() #0 !dbg !83 { +define dso_local void @main() #0 !dbg !82 { entry: %x = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %x, metadata !86, metadata !DIExpression()), !dbg !87 - %call = call ptr @make(i32 noundef 10), !dbg !88 - store ptr %call, ptr %x, align 8, !dbg !87 - ret void, !dbg !89 + #dbg_declare(ptr %x, !85, !DIExpression(), !86) + %call = call ptr @make(i32 noundef 10), !dbg !87 + store ptr %call, ptr %x, align 8, !dbg !86 + ret void, !dbg !88 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} !llvm.ident = !{!9} -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp14a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a1d5409e5966396df44293b01a919070") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp14a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a1d5409e5966396df44293b01a919070") !2 = !{i32 7, !"Dwarf Version", i32 5} !3 = !{i32 2, !"Debug Info Version", i32 3} !4 = !{i32 1, !"wchar_size", i32 4} @@ -160,9 +156,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !10 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!11 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !12 = !DISubroutineType(types: !13) !13 = !{!14, !15} !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -210,7 +206,7 @@ attributes #5 = { nounwind } !56 = !DILocation(line: 30, column: 10, scope: !52) !57 = !DILocation(line: 30, column: 3, scope: !52) !58 = distinct !DISubprogram(name: "make", scope: !59, file: !59, line: 11, type: !60, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!59 = !DIFile(filename: "src/mem_leak/sp14a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a1d5409e5966396df44293b01a919070") +!59 = !DIFile(filename: "src/mem_leak/sp14a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "a1d5409e5966396df44293b01a919070") !60 = !DISubroutineType(types: !61) !61 = !{!62, !15} !62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) @@ -222,22 +218,21 @@ attributes #5 = { nounwind } !68 = !DILocation(line: 13, column: 6, scope: !69) !69 = distinct !DILexicalBlock(scope: !58, file: !59, line: 13, column: 6) !70 = !DILocation(line: 13, column: 8, scope: !69) -!71 = !DILocation(line: 13, column: 6, scope: !58) -!72 = !DILocation(line: 15, column: 15, scope: !73) -!73 = distinct !DILexicalBlock(scope: !69, file: !59, line: 13, column: 13) -!74 = !DILocation(line: 15, column: 17, scope: !73) -!75 = !DILocation(line: 15, column: 10, scope: !73) -!76 = !DILocation(line: 15, column: 3, scope: !73) -!77 = !DILocation(line: 17, column: 8, scope: !78) -!78 = distinct !DILexicalBlock(scope: !69, file: !59, line: 16, column: 9) -!79 = !DILocation(line: 17, column: 3, scope: !78) -!80 = !DILocation(line: 18, column: 10, scope: !78) -!81 = !DILocation(line: 18, column: 3, scope: !78) -!82 = !DILocation(line: 20, column: 1, scope: !58) -!83 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 22, type: !84, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!84 = !DISubroutineType(types: !85) -!85 = !{null} -!86 = !DILocalVariable(name: "x", scope: !83, file: !59, line: 23, type: !62) -!87 = !DILocation(line: 23, column: 7, scope: !83) -!88 = !DILocation(line: 23, column: 11, scope: !83) -!89 = !DILocation(line: 25, column: 1, scope: !83) +!71 = !DILocation(line: 15, column: 15, scope: !72) +!72 = distinct !DILexicalBlock(scope: !69, file: !59, line: 13, column: 13) +!73 = !DILocation(line: 15, column: 17, scope: !72) +!74 = !DILocation(line: 15, column: 10, scope: !72) +!75 = !DILocation(line: 15, column: 3, scope: !72) +!76 = !DILocation(line: 17, column: 8, scope: !77) +!77 = distinct !DILexicalBlock(scope: !69, file: !59, line: 16, column: 9) +!78 = !DILocation(line: 17, column: 3, scope: !77) +!79 = !DILocation(line: 18, column: 10, scope: !77) +!80 = !DILocation(line: 18, column: 3, scope: !77) +!81 = !DILocation(line: 20, column: 1, scope: !58) +!82 = distinct !DISubprogram(name: "main", scope: !59, file: !59, line: 22, type: !83, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) +!83 = !DISubroutineType(types: !84) +!84 = !{null} +!85 = !DILocalVariable(name: "x", scope: !82, file: !59, line: 23, type: !62) +!86 = !DILocation(line: 23, column: 7, scope: !82) +!87 = !DILocation(line: 23, column: 11, scope: !82) +!88 = !DILocation(line: 25, column: 1, scope: !82) diff --git a/test_cases_bc/mem_leak/sp15.c.bc b/test_cases_bc/mem_leak/sp15.c.bc index 97e36d52f..3ecf60d4a 100644 --- a/test_cases_bc/mem_leak/sp15.c.bc +++ b/test_cases_bc/mem_leak/sp15.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp15.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp15.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp15.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp15.c" +target datalayout = "e-m:e-p270:32:32-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, i32 } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !24, metadata !DIExpression()), !dbg !25 + #dbg_declare(ptr %n.addr, !24, !DIExpression(), !25) %0 = load i32, ptr %n.addr, align 4, !dbg !26 %conv = sext i32 %0 to i64, !dbg !26 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !27 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !27 ret ptr %call, !dbg !28 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !29 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !30, metadata !DIExpression()), !dbg !31 + #dbg_declare(ptr %n.addr, !30, !DIExpression(), !31) %0 = load i32, ptr %n.addr, align 4, !dbg !32 %conv = sext i32 %0 to i64, !dbg !32 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !33 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !33 ret ptr %call, !dbg !34 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !35 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !36, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %n.addr, !36, !DIExpression(), !37) %0 = load i32, ptr %n.addr, align 4, !dbg !38 %conv = sext i32 %0 to i64, !dbg !38 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !39 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !39 ret ptr %call, !dbg !40 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !41 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !42, metadata !DIExpression()), !dbg !43 + #dbg_declare(ptr %n.addr, !42, !DIExpression(), !43) %0 = load i32, ptr %n.addr, align 4, !dbg !44 %conv = sext i32 %0 to i64, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !45 ret ptr %call, !dbg !46 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !47 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !48, metadata !DIExpression()), !dbg !49 + #dbg_declare(ptr %n.addr, !48, !DIExpression(), !49) %0 = load i32, ptr %n.addr, align 4, !dbg !50 %conv = sext i32 %0 to i64, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !51 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !51 ret ptr %call, !dbg !52 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !53 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !54, metadata !DIExpression()), !dbg !55 + #dbg_declare(ptr %n.addr, !54, !DIExpression(), !55) %0 = load i32, ptr %n.addr, align 4, !dbg !56 %conv = sext i32 %0 to i64, !dbg !56 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !57 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !57 ret ptr %call, !dbg !58 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !59 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !60, metadata !DIExpression()), !dbg !61 + #dbg_declare(ptr %n.addr, !60, !DIExpression(), !61) %0 = load i32, ptr %n.addr, align 4, !dbg !62 %conv = sext i32 %0 to i64, !dbg !62 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !63 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !63 ret ptr %call, !dbg !64 } @@ -102,15 +99,15 @@ entry: %y = alloca ptr, align 8 %t = alloca ptr, align 8 store ptr %x, ptr %x.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !68, metadata !DIExpression()), !dbg !69 - call void @llvm.dbg.declare(metadata ptr %y, metadata !70, metadata !DIExpression()), !dbg !71 - call void @llvm.dbg.declare(metadata ptr %t, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %x.addr, !68, !DIExpression(), !69) + #dbg_declare(ptr %y, !70, !DIExpression(), !71) + #dbg_declare(ptr %t, !72, !DIExpression(), !73) %0 = load ptr, ptr %x.addr, align 8, !dbg !74 - %next = getelementptr inbounds %struct.List, ptr %0, i32 0, i32 0, !dbg !75 + %next = getelementptr inbounds nuw %struct.List, ptr %0, i32 0, i32 0, !dbg !75 %1 = load ptr, ptr %next, align 8, !dbg !75 store ptr %1, ptr %y, align 8, !dbg !76 %2 = load ptr, ptr %x.addr, align 8, !dbg !77 - call void @free(ptr noundef %2) #5, !dbg !78 + call void @free(ptr noundef %2) #4, !dbg !78 %3 = load ptr, ptr %y, align 8, !dbg !79 store ptr %3, ptr %x.addr, align 8, !dbg !80 br label %while.cond, !dbg !81 @@ -122,12 +119,12 @@ while.cond: ; preds = %while.body, %entry while.body: ; preds = %while.cond %5 = load ptr, ptr %x.addr, align 8, !dbg !84 - %next1 = getelementptr inbounds %struct.List, ptr %5, i32 0, i32 0, !dbg !86 + %next1 = getelementptr inbounds nuw %struct.List, ptr %5, i32 0, i32 0, !dbg !86 %6 = load ptr, ptr %next1, align 8, !dbg !86 store ptr %6, ptr %t, align 8, !dbg !87 %7 = load ptr, ptr %y, align 8, !dbg !88 %8 = load ptr, ptr %x.addr, align 8, !dbg !89 - %next2 = getelementptr inbounds %struct.List, ptr %8, i32 0, i32 0, !dbg !90 + %next2 = getelementptr inbounds nuw %struct.List, ptr %8, i32 0, i32 0, !dbg !90 store ptr %7, ptr %next2, align 8, !dbg !91 %9 = load ptr, ptr %x.addr, align 8, !dbg !92 store ptr %9, ptr %y, align 8, !dbg !93 @@ -136,58 +133,57 @@ while.body: ; preds = %while.cond br label %while.cond, !dbg !81, !llvm.loop !96 while.end: ; preds = %while.cond - %call = call noalias ptr @malloc(i64 noundef 8) #4, !dbg !99 + %call = call noalias ptr @malloc(i64 noundef 8) #3, !dbg !99 store ptr %call, ptr %t, align 8, !dbg !100 %11 = load ptr, ptr %y, align 8, !dbg !101 %12 = load ptr, ptr %t, align 8, !dbg !102 - %next3 = getelementptr inbounds %struct.List, ptr %12, i32 0, i32 0, !dbg !103 + %next3 = getelementptr inbounds nuw %struct.List, ptr %12, i32 0, i32 0, !dbg !103 store ptr %11, ptr %next3, align 8, !dbg !104 %13 = load ptr, ptr %t, align 8, !dbg !105 ret ptr %13, !dbg !106 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @main() #0 !dbg !107 { entry: %node = alloca ptr, align 8 %ret_val = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %node, metadata !109, metadata !DIExpression()), !dbg !110 - call void @llvm.dbg.declare(metadata ptr %ret_val, metadata !111, metadata !DIExpression()), !dbg !112 - %call = call noalias ptr @malloc(i64 noundef 8) #4, !dbg !113 + #dbg_declare(ptr %node, !109, !DIExpression(), !110) + #dbg_declare(ptr %ret_val, !111, !DIExpression(), !112) + %call = call noalias ptr @malloc(i64 noundef 8) #3, !dbg !113 store ptr %call, ptr %node, align 8, !dbg !114 %0 = load ptr, ptr %node, align 8, !dbg !115 %call1 = call ptr @reverse(ptr noundef %0), !dbg !116 store ptr %call1, ptr %ret_val, align 8, !dbg !117 %1 = load ptr, ptr %ret_val, align 8, !dbg !118 - call void @free(ptr noundef %1) #5, !dbg !119 + call void @free(ptr noundef %1) #4, !dbg !119 %2 = load ptr, ptr %ret_val, align 8, !dbg !120 - %next = getelementptr inbounds %struct.List, ptr %2, i32 0, i32 0, !dbg !121 + %next = getelementptr inbounds nuw %struct.List, ptr %2, i32 0, i32 0, !dbg !121 %3 = load ptr, ptr %next, align 8, !dbg !121 - call void @free(ptr noundef %3) #5, !dbg !122 + call void @free(ptr noundef %3) #4, !dbg !122 %4 = load ptr, ptr %ret_val, align 8, !dbg !123 ret ptr %4, !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 = { 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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} !llvm.ident = !{!17} -!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/mem_leak/sp15.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "17b8f7010b3005ccefff5377bfedd8a1") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp15.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "17b8f7010b3005ccefff5377bfedd8a1") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "List", file: !5, line: 11, size: 128, elements: !6) -!5 = !DIFile(filename: "src/mem_leak/sp15.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "17b8f7010b3005ccefff5377bfedd8a1") +!5 = !DIFile(filename: "src/mem_leak/sp15.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "17b8f7010b3005ccefff5377bfedd8a1") !6 = !{!7, !8} !7 = !DIDerivedType(tag: DW_TAG_member, name: "next", scope: !4, file: !5, line: 12, baseType: !3, size: 64) !8 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !4, file: !5, line: 13, baseType: !9, size: 32, offset: 64) @@ -199,9 +195,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !23) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !9} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/sp15a.c.bc b/test_cases_bc/mem_leak/sp15a.c.bc index 296def565..75fe83eb0 100644 --- a/test_cases_bc/mem_leak/sp15a.c.bc +++ b/test_cases_bc/mem_leak/sp15a.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp15a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp15a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp15a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp15a.c" +target datalayout = "e-m:e-p270:32:32-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, i32 } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !24, metadata !DIExpression()), !dbg !25 + #dbg_declare(ptr %n.addr, !24, !DIExpression(), !25) %0 = load i32, ptr %n.addr, align 4, !dbg !26 %conv = sext i32 %0 to i64, !dbg !26 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !27 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !27 ret ptr %call, !dbg !28 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !29 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !30, metadata !DIExpression()), !dbg !31 + #dbg_declare(ptr %n.addr, !30, !DIExpression(), !31) %0 = load i32, ptr %n.addr, align 4, !dbg !32 %conv = sext i32 %0 to i64, !dbg !32 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !33 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !33 ret ptr %call, !dbg !34 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !35 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !36, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %n.addr, !36, !DIExpression(), !37) %0 = load i32, ptr %n.addr, align 4, !dbg !38 %conv = sext i32 %0 to i64, !dbg !38 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !39 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !39 ret ptr %call, !dbg !40 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !41 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !42, metadata !DIExpression()), !dbg !43 + #dbg_declare(ptr %n.addr, !42, !DIExpression(), !43) %0 = load i32, ptr %n.addr, align 4, !dbg !44 %conv = sext i32 %0 to i64, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !45 ret ptr %call, !dbg !46 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !47 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !48, metadata !DIExpression()), !dbg !49 + #dbg_declare(ptr %n.addr, !48, !DIExpression(), !49) %0 = load i32, ptr %n.addr, align 4, !dbg !50 %conv = sext i32 %0 to i64, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !51 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !51 ret ptr %call, !dbg !52 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !53 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !54, metadata !DIExpression()), !dbg !55 + #dbg_declare(ptr %n.addr, !54, !DIExpression(), !55) %0 = load i32, ptr %n.addr, align 4, !dbg !56 %conv = sext i32 %0 to i64, !dbg !56 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !57 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !57 ret ptr %call, !dbg !58 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !59 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !60, metadata !DIExpression()), !dbg !61 + #dbg_declare(ptr %n.addr, !60, !DIExpression(), !61) %0 = load i32, ptr %n.addr, align 4, !dbg !62 %conv = sext i32 %0 to i64, !dbg !62 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !63 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !63 ret ptr %call, !dbg !64 } @@ -102,15 +99,15 @@ entry: %y = alloca ptr, align 8 %t = alloca ptr, align 8 store ptr %x, ptr %x.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !68, metadata !DIExpression()), !dbg !69 - call void @llvm.dbg.declare(metadata ptr %y, metadata !70, metadata !DIExpression()), !dbg !71 - call void @llvm.dbg.declare(metadata ptr %t, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %x.addr, !68, !DIExpression(), !69) + #dbg_declare(ptr %y, !70, !DIExpression(), !71) + #dbg_declare(ptr %t, !72, !DIExpression(), !73) %0 = load ptr, ptr %x.addr, align 8, !dbg !74 - %next = getelementptr inbounds %struct.List, ptr %0, i32 0, i32 0, !dbg !75 + %next = getelementptr inbounds nuw %struct.List, ptr %0, i32 0, i32 0, !dbg !75 %1 = load ptr, ptr %next, align 8, !dbg !75 store ptr %1, ptr %y, align 8, !dbg !76 %2 = load ptr, ptr %x.addr, align 8, !dbg !77 - call void @free(ptr noundef %2) #5, !dbg !78 + call void @free(ptr noundef %2) #4, !dbg !78 %3 = load ptr, ptr %y, align 8, !dbg !79 store ptr %3, ptr %x.addr, align 8, !dbg !80 br label %while.cond, !dbg !81 @@ -122,12 +119,12 @@ while.cond: ; preds = %while.body, %entry while.body: ; preds = %while.cond %5 = load ptr, ptr %x.addr, align 8, !dbg !84 - %next1 = getelementptr inbounds %struct.List, ptr %5, i32 0, i32 0, !dbg !86 + %next1 = getelementptr inbounds nuw %struct.List, ptr %5, i32 0, i32 0, !dbg !86 %6 = load ptr, ptr %next1, align 8, !dbg !86 store ptr %6, ptr %t, align 8, !dbg !87 %7 = load ptr, ptr %y, align 8, !dbg !88 %8 = load ptr, ptr %x.addr, align 8, !dbg !89 - %next2 = getelementptr inbounds %struct.List, ptr %8, i32 0, i32 0, !dbg !90 + %next2 = getelementptr inbounds nuw %struct.List, ptr %8, i32 0, i32 0, !dbg !90 store ptr %7, ptr %next2, align 8, !dbg !91 %9 = load ptr, ptr %x.addr, align 8, !dbg !92 store ptr %9, ptr %y, align 8, !dbg !93 @@ -140,14 +137,14 @@ while.end: ; preds = %while.cond store ptr %call, ptr %t, align 8, !dbg !100 %11 = load ptr, ptr %y, align 8, !dbg !101 %12 = load ptr, ptr %t, align 8, !dbg !102 - %next3 = getelementptr inbounds %struct.List, ptr %12, i32 0, i32 0, !dbg !103 + %next3 = getelementptr inbounds nuw %struct.List, ptr %12, i32 0, i32 0, !dbg !103 store ptr %11, ptr %next3, align 8, !dbg !104 %13 = load ptr, ptr %y, align 8, !dbg !105 ret ptr %13, !dbg !106 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 !dbg !107 { @@ -156,8 +153,8 @@ entry: %node = alloca ptr, align 8 %ret_val = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %node, metadata !110, metadata !DIExpression()), !dbg !111 - call void @llvm.dbg.declare(metadata ptr %ret_val, metadata !112, metadata !DIExpression()), !dbg !113 + #dbg_declare(ptr %node, !110, !DIExpression(), !111) + #dbg_declare(ptr %ret_val, !112, !DIExpression(), !113) %call = call ptr @SAFEMALLOC(i32 noundef 8), !dbg !114 store ptr %call, ptr %node, align 8, !dbg !115 %call1 = call ptr @NFRMALLOC(i32 noundef 8), !dbg !116 @@ -170,23 +167,22 @@ entry: ret i32 %2, !dbg !122 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} !llvm.ident = !{!17} -!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/mem_leak/sp15a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7cb7d7d25f560e25ca2a5cdefd05b0f7") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp15a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7cb7d7d25f560e25ca2a5cdefd05b0f7") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "List", file: !5, line: 11, size: 128, elements: !6) -!5 = !DIFile(filename: "src/mem_leak/sp15a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7cb7d7d25f560e25ca2a5cdefd05b0f7") +!5 = !DIFile(filename: "src/mem_leak/sp15a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "7cb7d7d25f560e25ca2a5cdefd05b0f7") !6 = !{!7, !8} !7 = !DIDerivedType(tag: DW_TAG_member, name: "next", scope: !4, file: !5, line: 12, baseType: !3, size: 64) !8 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !4, file: !5, line: 13, baseType: !9, size: 32, offset: 64) @@ -198,9 +194,9 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !23) -!19 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !20 = !DISubroutineType(types: !21) !21 = !{!22, !9} !22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/sp1a.c.bc b/test_cases_bc/mem_leak/sp1a.c.bc index adc65aca3..dfb925182 100644 --- a/test_cases_bc/mem_leak/sp1a.c.bc +++ b/test_cases_bc/mem_leak/sp1a.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp1a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp1a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp1a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp1a.c" +target datalayout = "e-m:e-p270:32:32-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.ResourceLeak_TC01.str = private unnamed_addr constant [10 x i8] c"STRING\00\00\00\00", align 1 @.str = private unnamed_addr constant [6 x i8] c" %s \0A\00", align 1, !dbg !0 @@ -11,25 +11,22 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !20 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !29 ret ptr %call, !dbg !30 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !35 @@ -41,7 +38,7 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !41 @@ -53,7 +50,7 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !47 @@ -65,7 +62,7 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !53 @@ -77,7 +74,7 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !59 @@ -89,7 +86,7 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !61 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !62, metadata !DIExpression()), !dbg !63 + #dbg_declare(ptr %n.addr, !62, !DIExpression(), !63) %0 = load i32, ptr %n.addr, align 4, !dbg !64 %conv = sext i32 %0 to i64, !dbg !64 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !65 @@ -103,58 +100,60 @@ entry: %p.addr = alloca ptr, align 8 %str = alloca [10 x i8], align 1 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %str, metadata !73, metadata !DIExpression()), !dbg !77 + #dbg_declare(ptr %p.addr, !71, !DIExpression(), !72) + #dbg_declare(ptr %str, !73, !DIExpression(), !77) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str, ptr align 1 @__const.ResourceLeak_TC01.str, i64 10, i1 false), !dbg !77 %0 = load ptr, ptr %p.addr, align 8, !dbg !78 %cmp = icmp eq ptr %0, null, !dbg !80 - br i1 %cmp, label %if.then, label %if.end, !dbg !81 + br i1 %cmp, label %if.then, label %if.end, !dbg !80 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !82 - br label %return, !dbg !82 + store i32 -1, ptr %retval, align 4, !dbg !81 + br label %return, !dbg !81 if.end: ; preds = %entry - %1 = load ptr, ptr %p.addr, align 8, !dbg !83 - %arraydecay = getelementptr inbounds [10 x i8], ptr %str, i64 0, i64 0, !dbg !84 - %call = call ptr @strcat(ptr noundef %1, ptr noundef %arraydecay), !dbg !85 - %2 = load ptr, ptr %p.addr, align 8, !dbg !86 - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %2), !dbg !87 - store i32 0, ptr %retval, align 4, !dbg !88 - br label %return, !dbg !88 + %1 = load ptr, ptr %p.addr, align 8, !dbg !82 + %arraydecay = getelementptr inbounds [10 x i8], ptr %str, i64 0, i64 0, !dbg !83 + %call = call ptr @strcat(ptr noundef %1, ptr noundef %arraydecay) #6, !dbg !84 + %2 = load ptr, ptr %p.addr, align 8, !dbg !85 + %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %2), !dbg !86 + store i32 0, ptr %retval, align 4, !dbg !87 + br label %return, !dbg !87 return: ; preds = %if.end, %if.then - %3 = load i32, ptr %retval, align 4, !dbg !89 - ret i32 %3, !dbg !89 + %3 = load i32, ptr %retval, align 4, !dbg !88 + ret i32 %3, !dbg !88 } ; 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 ptr @strcat(ptr noundef, ptr noundef) #4 +; Function Attrs: nounwind +declare ptr @strcat(ptr noundef, ptr noundef) #3 declare i32 @printf(ptr noundef, ...) #4 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !90 { +define dso_local i32 @main() #0 !dbg !89 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !93, metadata !DIExpression()), !dbg !95 - %call = call ptr @NFRMALLOC(i32 noundef 10), !dbg !96 - store ptr %call, ptr %p, align 8, !dbg !97 - %0 = load ptr, ptr %p, align 8, !dbg !98 - %call1 = call i32 @ResourceLeak_TC01(ptr noundef %0), !dbg !99 - ret i32 0, !dbg !100 + #dbg_declare(ptr %p, !92, !DIExpression(), !94) + %call = call ptr @NFRMALLOC(i32 noundef 10), !dbg !95 + store ptr %call, ptr %p, align 8, !dbg !96 + %0 = load ptr, ptr %p, align 8, !dbg !97 + %call1 = call i32 @ResourceLeak_TC01(ptr noundef %0), !dbg !98 + ret i32 0, !dbg !99 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 = { "frame-pointer"="all" "no-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 = { 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 = !{!7} !llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} @@ -162,13 +161,13 @@ attributes #5 = { nounwind allocsize(0) } !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/mem_leak/sp1a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c292dfaf78161c1e1b4449f877c7ad26") +!2 = !DIFile(filename: "src/mem_leak/sp1a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "c292dfaf78161c1e1b4449f877c7ad26") !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, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp1a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c292dfaf78161c1e1b4449f877c7ad26") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp1a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "c292dfaf78161c1e1b4449f877c7ad26") !9 = !{!10} !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) !11 = !{!0} @@ -179,9 +178,9 @@ attributes #5 = { nounwind allocsize(0) } !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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !20 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !21, file: !21, line: 5, type: !22, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) -!21 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!21 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !22 = !DISubroutineType(types: !23) !23 = !{!10, !24} !24 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -241,23 +240,22 @@ attributes #5 = { nounwind allocsize(0) } !78 = !DILocation(line: 15, column: 6, scope: !79) !79 = distinct !DILexicalBlock(scope: !67, file: !2, line: 15, column: 6) !80 = !DILocation(line: 15, column: 8, scope: !79) -!81 = !DILocation(line: 15, column: 6, scope: !67) -!82 = !DILocation(line: 16, column: 3, scope: !79) -!83 = !DILocation(line: 18, column: 9, scope: !67) -!84 = !DILocation(line: 18, column: 12, scope: !67) -!85 = !DILocation(line: 18, column: 2, scope: !67) -!86 = !DILocation(line: 19, column: 19, scope: !67) -!87 = !DILocation(line: 19, column: 2, scope: !67) -!88 = !DILocation(line: 20, column: 2, scope: !67) -!89 = !DILocation(line: 21, column: 1, scope: !67) -!90 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 23, type: !91, scopeLine: 23, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) -!91 = !DISubroutineType(types: !92) -!92 = !{!24} -!93 = !DILocalVariable(name: "p", scope: !90, file: !2, line: 24, type: !94) -!94 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!95 = !DILocation(line: 24, column: 8, scope: !90) -!96 = !DILocation(line: 25, column: 6, scope: !90) -!97 = !DILocation(line: 25, column: 4, scope: !90) -!98 = !DILocation(line: 26, column: 20, scope: !90) -!99 = !DILocation(line: 26, column: 2, scope: !90) -!100 = !DILocation(line: 27, column: 2, scope: !90) +!81 = !DILocation(line: 16, column: 3, scope: !79) +!82 = !DILocation(line: 18, column: 9, scope: !67) +!83 = !DILocation(line: 18, column: 12, scope: !67) +!84 = !DILocation(line: 18, column: 2, scope: !67) +!85 = !DILocation(line: 19, column: 19, scope: !67) +!86 = !DILocation(line: 19, column: 2, scope: !67) +!87 = !DILocation(line: 20, column: 2, scope: !67) +!88 = !DILocation(line: 21, column: 1, scope: !67) +!89 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 23, type: !90, scopeLine: 23, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) +!90 = !DISubroutineType(types: !91) +!91 = !{!24} +!92 = !DILocalVariable(name: "p", scope: !89, file: !2, line: 24, type: !93) +!93 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) +!94 = !DILocation(line: 24, column: 8, scope: !89) +!95 = !DILocation(line: 25, column: 6, scope: !89) +!96 = !DILocation(line: 25, column: 4, scope: !89) +!97 = !DILocation(line: 26, column: 20, scope: !89) +!98 = !DILocation(line: 26, column: 2, scope: !89) +!99 = !DILocation(line: 27, column: 2, scope: !89) diff --git a/test_cases_bc/mem_leak/sp2.c.bc b/test_cases_bc/mem_leak/sp2.c.bc index c718bc145..344731f8e 100644 --- a/test_cases_bc/mem_leak/sp2.c.bc +++ b/test_cases_bc/mem_leak/sp2.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp2.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !13 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !20, metadata !DIExpression()), !dbg !21 + #dbg_declare(ptr %n.addr, !20, !DIExpression(), !21) %0 = load i32, ptr %n.addr, align 4, !dbg !22 %conv = sext i32 %0 to i64, !dbg !22 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !23 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !23 ret ptr %call, !dbg !24 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !25 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !29 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !29 ret ptr %call, !dbg !30 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !35 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !35 ret ptr %call, !dbg !36 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !41 ret ptr %call, !dbg !42 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !47 ret ptr %call, !dbg !48 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !53 ret ptr %call, !dbg !54 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !59 ret ptr %call, !dbg !60 } @@ -103,73 +100,72 @@ entry: %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !65, metadata !DIExpression()), !dbg !66 - call void @llvm.dbg.declare(metadata ptr %p1, metadata !67, metadata !DIExpression()), !dbg !68 - call void @llvm.dbg.declare(metadata ptr %p2, metadata !69, metadata !DIExpression()), !dbg !70 - call void @llvm.dbg.declare(metadata ptr %y, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %arg1.addr, !65, !DIExpression(), !66) + #dbg_declare(ptr %p1, !67, !DIExpression(), !68) + #dbg_declare(ptr %p2, !69, !DIExpression(), !70) + #dbg_declare(ptr %y, !71, !DIExpression(), !72) store i32 10, ptr %y, align 4, !dbg !72 %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !73 store ptr %call, ptr %p1, align 8, !dbg !74 %0 = load ptr, ptr %p1, align 8, !dbg !75 %cmp = icmp eq ptr %0, null, !dbg !77 - br i1 %cmp, label %if.then, label %if.end, !dbg !78 + br i1 %cmp, label %if.then, label %if.end, !dbg !77 if.then: ; preds = %entry - store i32 1, ptr %retval, align 4, !dbg !79 - br label %return, !dbg !79 + store i32 1, ptr %retval, align 4, !dbg !78 + br label %return, !dbg !78 if.end: ; preds = %entry - %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !80 - store ptr %call1, ptr %p2, align 8, !dbg !81 - %1 = load ptr, ptr %p2, align 8, !dbg !82 - %cmp2 = icmp eq ptr %1, null, !dbg !84 - br i1 %cmp2, label %if.then3, label %if.end7, !dbg !85 + %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !79 + store ptr %call1, ptr %p2, align 8, !dbg !80 + %1 = load ptr, ptr %p2, align 8, !dbg !81 + %cmp2 = icmp eq ptr %1, null, !dbg !83 + br i1 %cmp2, label %if.then3, label %if.end7, !dbg !83 if.then3: ; preds = %if.end - %2 = load ptr, ptr %p1, align 8, !dbg !86 - %cmp4 = icmp ne ptr %2, null, !dbg !89 - br i1 %cmp4, label %if.then5, label %if.end6, !dbg !90 + %2 = load ptr, ptr %p1, align 8, !dbg !84 + %cmp4 = icmp ne ptr %2, null, !dbg !87 + br i1 %cmp4, label %if.then5, label %if.end6, !dbg !87 if.then5: ; preds = %if.then3 - %3 = load ptr, ptr %p1, align 8, !dbg !91 - call void @free(ptr noundef %3) #5, !dbg !93 - br label %if.end6, !dbg !94 + %3 = load ptr, ptr %p1, align 8, !dbg !88 + call void @free(ptr noundef %3) #4, !dbg !90 + br label %if.end6, !dbg !91 if.end6: ; preds = %if.then5, %if.then3 - store i32 2, ptr %retval, align 4, !dbg !95 - br label %return, !dbg !95 + store i32 2, ptr %retval, align 4, !dbg !92 + br label %return, !dbg !92 if.end7: ; preds = %if.end - %4 = load ptr, ptr %p1, align 8, !dbg !96 - call void @free(ptr noundef %4) #5, !dbg !97 - %5 = load ptr, ptr %p2, align 8, !dbg !98 - store ptr %5, ptr %p1, align 8, !dbg !99 - %6 = load ptr, ptr %p1, align 8, !dbg !100 - call void @free(ptr noundef %6) #5, !dbg !101 - store i32 0, ptr %retval, align 4, !dbg !102 - br label %return, !dbg !102 + %4 = load ptr, ptr %p1, align 8, !dbg !93 + call void @free(ptr noundef %4) #4, !dbg !94 + %5 = load ptr, ptr %p2, align 8, !dbg !95 + store ptr %5, ptr %p1, align 8, !dbg !96 + %6 = load ptr, ptr %p1, align 8, !dbg !97 + call void @free(ptr noundef %6) #4, !dbg !98 + store i32 0, ptr %retval, align 4, !dbg !99 + br label %return, !dbg !99 return: ; preds = %if.end7, %if.end6, %if.then - %7 = load i32, ptr %retval, align 4, !dbg !103 - ret i32 %7, !dbg !103 + %7 = load i32, ptr %retval, align 4, !dbg !100 + ret i32 %7, !dbg !100 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +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/mem_leak/sp2.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cde5ac0473251c9ab3556e5bd2a5ef43") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp2.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "cde5ac0473251c9ab3556e5bd2a5ef43") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) @@ -180,9 +176,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !13 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !14, file: !14, line: 5, type: !15, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!14 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!14 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !15 = !DISubroutineType(types: !16) !16 = !{!17, !18} !17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -230,7 +226,7 @@ attributes #5 = { nounwind } !59 = !DILocation(line: 30, column: 10, scope: !55) !60 = !DILocation(line: 30, column: 3, scope: !55) !61 = distinct !DISubprogram(name: "main", scope: !62, file: !62, line: 11, type: !63, scopeLine: 12, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!62 = !DIFile(filename: "src/mem_leak/sp2.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cde5ac0473251c9ab3556e5bd2a5ef43") +!62 = !DIFile(filename: "src/mem_leak/sp2.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "cde5ac0473251c9ab3556e5bd2a5ef43") !63 = !DISubroutineType(types: !64) !64 = !{!18, !18} !65 = !DILocalVariable(name: "arg1", arg: 1, scope: !61, file: !62, line: 11, type: !18) @@ -246,29 +242,26 @@ attributes #5 = { nounwind } !75 = !DILocation(line: 18, column: 7, scope: !76) !76 = distinct !DILexicalBlock(scope: !61, file: !62, line: 18, column: 7) !77 = !DILocation(line: 18, column: 10, scope: !76) -!78 = !DILocation(line: 18, column: 7, scope: !61) -!79 = !DILocation(line: 19, column: 6, scope: !76) -!80 = !DILocation(line: 21, column: 16, scope: !61) -!81 = !DILocation(line: 21, column: 6, scope: !61) -!82 = !DILocation(line: 22, column: 7, scope: !83) -!83 = distinct !DILexicalBlock(scope: !61, file: !62, line: 22, column: 7) -!84 = !DILocation(line: 22, column: 10, scope: !83) -!85 = !DILocation(line: 22, column: 7, scope: !61) -!86 = !DILocation(line: 23, column: 9, scope: !87) -!87 = distinct !DILexicalBlock(scope: !88, file: !62, line: 23, column: 9) -!88 = distinct !DILexicalBlock(scope: !83, file: !62, line: 22, column: 16) -!89 = !DILocation(line: 23, column: 12, scope: !87) -!90 = !DILocation(line: 23, column: 9, scope: !88) -!91 = !DILocation(line: 24, column: 14, scope: !92) -!92 = distinct !DILexicalBlock(scope: !87, file: !62, line: 23, column: 17) -!93 = !DILocation(line: 24, column: 9, scope: !92) -!94 = !DILocation(line: 25, column: 6, scope: !92) -!95 = !DILocation(line: 26, column: 6, scope: !88) -!96 = !DILocation(line: 28, column: 8, scope: !61) -!97 = !DILocation(line: 28, column: 3, scope: !61) -!98 = !DILocation(line: 29, column: 10, scope: !61) -!99 = !DILocation(line: 29, column: 8, scope: !61) -!100 = !DILocation(line: 30, column: 8, scope: !61) -!101 = !DILocation(line: 30, column: 3, scope: !61) -!102 = !DILocation(line: 31, column: 3, scope: !61) -!103 = !DILocation(line: 32, column: 1, scope: !61) +!78 = !DILocation(line: 19, column: 6, scope: !76) +!79 = !DILocation(line: 21, column: 16, scope: !61) +!80 = !DILocation(line: 21, column: 6, scope: !61) +!81 = !DILocation(line: 22, column: 7, scope: !82) +!82 = distinct !DILexicalBlock(scope: !61, file: !62, line: 22, column: 7) +!83 = !DILocation(line: 22, column: 10, scope: !82) +!84 = !DILocation(line: 23, column: 9, scope: !85) +!85 = distinct !DILexicalBlock(scope: !86, file: !62, line: 23, column: 9) +!86 = distinct !DILexicalBlock(scope: !82, file: !62, line: 22, column: 16) +!87 = !DILocation(line: 23, column: 12, scope: !85) +!88 = !DILocation(line: 24, column: 14, scope: !89) +!89 = distinct !DILexicalBlock(scope: !85, file: !62, line: 23, column: 17) +!90 = !DILocation(line: 24, column: 9, scope: !89) +!91 = !DILocation(line: 25, column: 6, scope: !89) +!92 = !DILocation(line: 26, column: 6, scope: !86) +!93 = !DILocation(line: 28, column: 8, scope: !61) +!94 = !DILocation(line: 28, column: 3, scope: !61) +!95 = !DILocation(line: 29, column: 10, scope: !61) +!96 = !DILocation(line: 29, column: 8, scope: !61) +!97 = !DILocation(line: 30, column: 8, scope: !61) +!98 = !DILocation(line: 30, column: 3, scope: !61) +!99 = !DILocation(line: 31, column: 3, scope: !61) +!100 = !DILocation(line: 32, column: 1, scope: !61) diff --git a/test_cases_bc/mem_leak/sp22.c.bc b/test_cases_bc/mem_leak/sp22.c.bc index 7d20a3260..93260b34f 100644 --- a/test_cases_bc/mem_leak/sp22.c.bc +++ b/test_cases_bc/mem_leak/sp22.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp22.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp22.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp22.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp22.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !13 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !20, metadata !DIExpression()), !dbg !21 + #dbg_declare(ptr %n.addr, !20, !DIExpression(), !21) %0 = load i32, ptr %n.addr, align 4, !dbg !22 %conv = sext i32 %0 to i64, !dbg !22 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !23 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !23 ret ptr %call, !dbg !24 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !25 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !29 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !29 ret ptr %call, !dbg !30 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !35 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !35 ret ptr %call, !dbg !36 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !41 ret ptr %call, !dbg !42 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !47 ret ptr %call, !dbg !48 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !53 ret ptr %call, !dbg !54 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !59 ret ptr %call, !dbg !60 } @@ -103,52 +100,51 @@ entry: %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !65, metadata !DIExpression()), !dbg !66 - call void @llvm.dbg.declare(metadata ptr %p1, metadata !67, metadata !DIExpression()), !dbg !68 - call void @llvm.dbg.declare(metadata ptr %p2, metadata !69, metadata !DIExpression()), !dbg !70 - call void @llvm.dbg.declare(metadata ptr %y, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %arg1.addr, !65, !DIExpression(), !66) + #dbg_declare(ptr %p1, !67, !DIExpression(), !68) + #dbg_declare(ptr %p2, !69, !DIExpression(), !70) + #dbg_declare(ptr %y, !71, !DIExpression(), !72) store i32 10, ptr %y, align 4, !dbg !72 %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !73 store ptr %call, ptr %p1, align 8, !dbg !74 %0 = load i32, ptr %y, align 4, !dbg !75 %tobool = icmp ne i32 %0, 0, !dbg !75 - br i1 %tobool, label %if.then, label %if.end2, !dbg !77 + br i1 %tobool, label %if.then, label %if.end2, !dbg !75 if.then: ; preds = %entry - %1 = load ptr, ptr %p1, align 8, !dbg !78 - %cmp = icmp ne ptr %1, null, !dbg !81 - br i1 %cmp, label %if.then1, label %if.end, !dbg !82 + %1 = load ptr, ptr %p1, align 8, !dbg !77 + %cmp = icmp ne ptr %1, null, !dbg !80 + br i1 %cmp, label %if.then1, label %if.end, !dbg !80 if.then1: ; preds = %if.then - %2 = load ptr, ptr %p1, align 8, !dbg !83 - call void @free(ptr noundef %2) #5, !dbg !85 - br label %if.end, !dbg !86 + %2 = load ptr, ptr %p1, align 8, !dbg !81 + call void @free(ptr noundef %2) #4, !dbg !83 + br label %if.end, !dbg !84 if.end: ; preds = %if.then1, %if.then - br label %if.end2, !dbg !87 + br label %if.end2, !dbg !85 if.end2: ; preds = %if.end, %entry - %3 = load ptr, ptr %p1, align 8, !dbg !88 - call void @free(ptr noundef %3) #5, !dbg !89 - ret i32 0, !dbg !90 + %3 = load ptr, ptr %p1, align 8, !dbg !86 + call void @free(ptr noundef %3) #4, !dbg !87 + ret i32 0, !dbg !88 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +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/mem_leak/sp22.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "647e5f3e77d9c1efbd04ef98c046132b") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp22.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "647e5f3e77d9c1efbd04ef98c046132b") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) @@ -159,9 +155,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !13 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !14, file: !14, line: 5, type: !15, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!14 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!14 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !15 = !DISubroutineType(types: !16) !16 = !{!17, !18} !17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -209,7 +205,7 @@ attributes #5 = { nounwind } !59 = !DILocation(line: 30, column: 10, scope: !55) !60 = !DILocation(line: 30, column: 3, scope: !55) !61 = distinct !DISubprogram(name: "main", scope: !62, file: !62, line: 12, type: !63, scopeLine: 13, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!62 = !DIFile(filename: "src/mem_leak/sp22.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "647e5f3e77d9c1efbd04ef98c046132b") +!62 = !DIFile(filename: "src/mem_leak/sp22.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "647e5f3e77d9c1efbd04ef98c046132b") !63 = !DISubroutineType(types: !64) !64 = !{!18, !18} !65 = !DILocalVariable(name: "arg1", arg: 1, scope: !61, file: !62, line: 12, type: !18) @@ -224,17 +220,15 @@ attributes #5 = { nounwind } !74 = !DILocation(line: 17, column: 6, scope: !61) !75 = !DILocation(line: 20, column: 6, scope: !76) !76 = distinct !DILexicalBlock(scope: !61, file: !62, line: 20, column: 6) -!77 = !DILocation(line: 20, column: 6, scope: !61) -!78 = !DILocation(line: 21, column: 9, scope: !79) -!79 = distinct !DILexicalBlock(scope: !80, file: !62, line: 21, column: 9) -!80 = distinct !DILexicalBlock(scope: !76, file: !62, line: 20, column: 8) -!81 = !DILocation(line: 21, column: 12, scope: !79) -!82 = !DILocation(line: 21, column: 9, scope: !80) -!83 = !DILocation(line: 22, column: 14, scope: !84) -!84 = distinct !DILexicalBlock(scope: !79, file: !62, line: 21, column: 17) -!85 = !DILocation(line: 22, column: 9, scope: !84) -!86 = !DILocation(line: 23, column: 6, scope: !84) -!87 = !DILocation(line: 25, column: 3, scope: !80) -!88 = !DILocation(line: 27, column: 8, scope: !61) -!89 = !DILocation(line: 27, column: 3, scope: !61) -!90 = !DILocation(line: 28, column: 3, scope: !61) +!77 = !DILocation(line: 21, column: 9, scope: !78) +!78 = distinct !DILexicalBlock(scope: !79, file: !62, line: 21, column: 9) +!79 = distinct !DILexicalBlock(scope: !76, file: !62, line: 20, column: 8) +!80 = !DILocation(line: 21, column: 12, scope: !78) +!81 = !DILocation(line: 22, column: 14, scope: !82) +!82 = distinct !DILexicalBlock(scope: !78, file: !62, line: 21, column: 17) +!83 = !DILocation(line: 22, column: 9, scope: !82) +!84 = !DILocation(line: 23, column: 6, scope: !82) +!85 = !DILocation(line: 25, column: 3, scope: !79) +!86 = !DILocation(line: 27, column: 8, scope: !61) +!87 = !DILocation(line: 27, column: 3, scope: !61) +!88 = !DILocation(line: 28, column: 3, scope: !61) diff --git a/test_cases_bc/mem_leak/sp2a.c.bc b/test_cases_bc/mem_leak/sp2a.c.bc index 6965b4734..7e6406dc4 100644 --- a/test_cases_bc/mem_leak/sp2a.c.bc +++ b/test_cases_bc/mem_leak/sp2a.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp2a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp2a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp2a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp2a.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !13 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !20, metadata !DIExpression()), !dbg !21 + #dbg_declare(ptr %n.addr, !20, !DIExpression(), !21) %0 = load i32, ptr %n.addr, align 4, !dbg !22 %conv = sext i32 %0 to i64, !dbg !22 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !23 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !23 ret ptr %call, !dbg !24 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !25 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !29 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !29 ret ptr %call, !dbg !30 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !35 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !35 ret ptr %call, !dbg !36 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !41 ret ptr %call, !dbg !42 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !47 ret ptr %call, !dbg !48 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !53 ret ptr %call, !dbg !54 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !59 ret ptr %call, !dbg !60 } @@ -103,71 +100,70 @@ entry: %y = alloca i32, align 4 store i32 0, ptr %retval, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !65, metadata !DIExpression()), !dbg !66 - call void @llvm.dbg.declare(metadata ptr %p1, metadata !67, metadata !DIExpression()), !dbg !68 - call void @llvm.dbg.declare(metadata ptr %p2, metadata !69, metadata !DIExpression()), !dbg !70 - call void @llvm.dbg.declare(metadata ptr %y, metadata !71, metadata !DIExpression()), !dbg !72 + #dbg_declare(ptr %arg1.addr, !65, !DIExpression(), !66) + #dbg_declare(ptr %p1, !67, !DIExpression(), !68) + #dbg_declare(ptr %p2, !69, !DIExpression(), !70) + #dbg_declare(ptr %y, !71, !DIExpression(), !72) store i32 10, ptr %y, align 4, !dbg !72 %call = call ptr @PLKMALLOC(i32 noundef 10), !dbg !73 store ptr %call, ptr %p1, align 8, !dbg !74 %0 = load ptr, ptr %p1, align 8, !dbg !75 %cmp = icmp eq ptr %0, null, !dbg !77 - br i1 %cmp, label %if.then, label %if.end, !dbg !78 + br i1 %cmp, label %if.then, label %if.end, !dbg !77 if.then: ; preds = %entry - store i32 1, ptr %retval, align 4, !dbg !79 - br label %return, !dbg !79 + store i32 1, ptr %retval, align 4, !dbg !78 + br label %return, !dbg !78 if.end: ; preds = %entry - %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !80 - store ptr %call1, ptr %p2, align 8, !dbg !81 - %1 = load ptr, ptr %p2, align 8, !dbg !82 - %cmp2 = icmp eq ptr %1, null, !dbg !84 - br i1 %cmp2, label %if.then3, label %if.end7, !dbg !85 + %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !79 + store ptr %call1, ptr %p2, align 8, !dbg !80 + %1 = load ptr, ptr %p2, align 8, !dbg !81 + %cmp2 = icmp eq ptr %1, null, !dbg !83 + br i1 %cmp2, label %if.then3, label %if.end7, !dbg !83 if.then3: ; preds = %if.end - %2 = load ptr, ptr %p1, align 8, !dbg !86 - %cmp4 = icmp ne ptr %2, null, !dbg !89 - br i1 %cmp4, label %if.then5, label %if.end6, !dbg !90 + %2 = load ptr, ptr %p1, align 8, !dbg !84 + %cmp4 = icmp ne ptr %2, null, !dbg !87 + br i1 %cmp4, label %if.then5, label %if.end6, !dbg !87 if.then5: ; preds = %if.then3 - %3 = load ptr, ptr %p1, align 8, !dbg !91 - call void @free(ptr noundef %3) #5, !dbg !93 - br label %if.end6, !dbg !94 + %3 = load ptr, ptr %p1, align 8, !dbg !88 + call void @free(ptr noundef %3) #4, !dbg !90 + br label %if.end6, !dbg !91 if.end6: ; preds = %if.then5, %if.then3 - store i32 2, ptr %retval, align 4, !dbg !95 - br label %return, !dbg !95 + store i32 2, ptr %retval, align 4, !dbg !92 + br label %return, !dbg !92 if.end7: ; preds = %if.end - %4 = load ptr, ptr %p2, align 8, !dbg !96 - store ptr %4, ptr %p1, align 8, !dbg !97 - %5 = load ptr, ptr %p1, align 8, !dbg !98 - call void @free(ptr noundef %5) #5, !dbg !99 - store i32 0, ptr %retval, align 4, !dbg !100 - br label %return, !dbg !100 + %4 = load ptr, ptr %p2, align 8, !dbg !93 + store ptr %4, ptr %p1, align 8, !dbg !94 + %5 = load ptr, ptr %p1, align 8, !dbg !95 + call void @free(ptr noundef %5) #4, !dbg !96 + store i32 0, ptr %retval, align 4, !dbg !97 + br label %return, !dbg !97 return: ; preds = %if.end7, %if.end6, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !101 - ret i32 %6, !dbg !101 + %6 = load i32, ptr %retval, align 4, !dbg !98 + ret i32 %6, !dbg !98 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +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"="+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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +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/mem_leak/sp2a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1f9767712f42140a0736f7ca05c07ac0") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp2a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "1f9767712f42140a0736f7ca05c07ac0") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) @@ -178,9 +174,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !13 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !14, file: !14, line: 5, type: !15, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!14 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!14 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !15 = !DISubroutineType(types: !16) !16 = !{!17, !18} !17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -228,7 +224,7 @@ attributes #5 = { nounwind } !59 = !DILocation(line: 30, column: 10, scope: !55) !60 = !DILocation(line: 30, column: 3, scope: !55) !61 = distinct !DISubprogram(name: "main", scope: !62, file: !62, line: 11, type: !63, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!62 = !DIFile(filename: "src/mem_leak/sp2a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1f9767712f42140a0736f7ca05c07ac0") +!62 = !DIFile(filename: "src/mem_leak/sp2a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "1f9767712f42140a0736f7ca05c07ac0") !63 = !DISubroutineType(types: !64) !64 = !{!18, !18} !65 = !DILocalVariable(name: "arg1", arg: 1, scope: !61, file: !62, line: 11, type: !18) @@ -244,27 +240,24 @@ attributes #5 = { nounwind } !75 = !DILocation(line: 17, column: 6, scope: !76) !76 = distinct !DILexicalBlock(scope: !61, file: !62, line: 17, column: 6) !77 = !DILocation(line: 17, column: 9, scope: !76) -!78 = !DILocation(line: 17, column: 6, scope: !61) -!79 = !DILocation(line: 18, column: 3, scope: !76) -!80 = !DILocation(line: 20, column: 16, scope: !61) -!81 = !DILocation(line: 20, column: 5, scope: !61) -!82 = !DILocation(line: 21, column: 6, scope: !83) -!83 = distinct !DILexicalBlock(scope: !61, file: !62, line: 21, column: 6) -!84 = !DILocation(line: 21, column: 9, scope: !83) -!85 = !DILocation(line: 21, column: 6, scope: !61) -!86 = !DILocation(line: 22, column: 7, scope: !87) -!87 = distinct !DILexicalBlock(scope: !88, file: !62, line: 22, column: 7) -!88 = distinct !DILexicalBlock(scope: !83, file: !62, line: 21, column: 15) -!89 = !DILocation(line: 22, column: 10, scope: !87) -!90 = !DILocation(line: 22, column: 7, scope: !88) -!91 = !DILocation(line: 23, column: 9, scope: !92) -!92 = distinct !DILexicalBlock(scope: !87, file: !62, line: 22, column: 16) -!93 = !DILocation(line: 23, column: 4, scope: !92) -!94 = !DILocation(line: 24, column: 3, scope: !92) -!95 = !DILocation(line: 25, column: 3, scope: !88) -!96 = !DILocation(line: 28, column: 7, scope: !61) -!97 = !DILocation(line: 28, column: 5, scope: !61) -!98 = !DILocation(line: 29, column: 7, scope: !61) -!99 = !DILocation(line: 29, column: 2, scope: !61) -!100 = !DILocation(line: 30, column: 2, scope: !61) -!101 = !DILocation(line: 31, column: 1, scope: !61) +!78 = !DILocation(line: 18, column: 3, scope: !76) +!79 = !DILocation(line: 20, column: 16, scope: !61) +!80 = !DILocation(line: 20, column: 5, scope: !61) +!81 = !DILocation(line: 21, column: 6, scope: !82) +!82 = distinct !DILexicalBlock(scope: !61, file: !62, line: 21, column: 6) +!83 = !DILocation(line: 21, column: 9, scope: !82) +!84 = !DILocation(line: 22, column: 7, scope: !85) +!85 = distinct !DILexicalBlock(scope: !86, file: !62, line: 22, column: 7) +!86 = distinct !DILexicalBlock(scope: !82, file: !62, line: 21, column: 15) +!87 = !DILocation(line: 22, column: 10, scope: !85) +!88 = !DILocation(line: 23, column: 9, scope: !89) +!89 = distinct !DILexicalBlock(scope: !85, file: !62, line: 22, column: 16) +!90 = !DILocation(line: 23, column: 4, scope: !89) +!91 = !DILocation(line: 24, column: 3, scope: !89) +!92 = !DILocation(line: 25, column: 3, scope: !86) +!93 = !DILocation(line: 28, column: 7, scope: !61) +!94 = !DILocation(line: 28, column: 5, scope: !61) +!95 = !DILocation(line: 29, column: 7, scope: !61) +!96 = !DILocation(line: 29, column: 2, scope: !61) +!97 = !DILocation(line: 30, column: 2, scope: !61) +!98 = !DILocation(line: 31, column: 1, scope: !61) diff --git a/test_cases_bc/mem_leak/sp3.c.bc b/test_cases_bc/mem_leak/sp3.c.bc index af4481df0..b4b6b86bb 100644 --- a/test_cases_bc/mem_leak/sp3.c.bc +++ b/test_cases_bc/mem_leak/sp3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp3.c" +target datalayout = "e-m:e-p270:32:32-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.ResourceLeak_TC03.str = private unnamed_addr constant [10 x i8] c"STRING\00\00\00\00", align 1 @.str = private unnamed_addr constant [6 x i8] c" %s \0A\00", align 1, !dbg !0 @@ -11,28 +11,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !36 ret ptr %call, !dbg !37 } @@ -41,10 +38,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !42 ret ptr %call, !dbg !43 } @@ -53,10 +50,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !48 ret ptr %call, !dbg !49 } @@ -65,10 +62,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !54 ret ptr %call, !dbg !55 } @@ -77,10 +74,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !60 ret ptr %call, !dbg !61 } @@ -89,10 +86,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !66 ret ptr %call, !dbg !67 } @@ -102,9 +99,9 @@ entry: %p.addr = alloca ptr, align 8 %s.addr = alloca ptr, align 8 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %p.addr, !72, !DIExpression(), !73) store ptr %s, ptr %s.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %s.addr, metadata !74, metadata !DIExpression()), !dbg !75 + #dbg_declare(ptr %s.addr, !74, !DIExpression(), !75) %0 = load ptr, ptr %s.addr, align 8, !dbg !76 %1 = load ptr, ptr %p.addr, align 8, !dbg !77 store ptr %0, ptr %1, align 8, !dbg !78 @@ -120,68 +117,68 @@ entry: %p1 = alloca ptr, align 8 %p2 = alloca ptr, align 8 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !83, metadata !DIExpression()), !dbg !84 - call void @llvm.dbg.declare(metadata ptr %str, metadata !85, metadata !DIExpression()), !dbg !89 + #dbg_declare(ptr %arg1.addr, !83, !DIExpression(), !84) + #dbg_declare(ptr %str, !85, !DIExpression(), !89) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str, ptr align 1 @__const.ResourceLeak_TC03.str, i64 10, i1 false), !dbg !89 - call void @llvm.dbg.declare(metadata ptr %p1, metadata !90, metadata !DIExpression()), !dbg !91 - call void @llvm.dbg.declare(metadata ptr %p2, metadata !92, metadata !DIExpression()), !dbg !93 + #dbg_declare(ptr %p1, !90, !DIExpression(), !91) + #dbg_declare(ptr %p2, !92, !DIExpression(), !93) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !94 store ptr %call, ptr %p1, align 8, !dbg !95 %0 = load ptr, ptr %p1, align 8, !dbg !96 %cmp = icmp eq ptr %0, null, !dbg !98 - br i1 %cmp, label %if.then, label %if.end, !dbg !99 + br i1 %cmp, label %if.then, label %if.end, !dbg !98 if.then: ; preds = %entry - store i32 1, ptr %retval, align 4, !dbg !100 - br label %return, !dbg !100 + store i32 1, ptr %retval, align 4, !dbg !99 + br label %return, !dbg !99 if.end: ; preds = %entry - %1 = load ptr, ptr %p1, align 8, !dbg !102 - %arraydecay = getelementptr inbounds [10 x i8], ptr %str, i64 0, i64 0, !dbg !103 - %call1 = call ptr @strcat(ptr noundef %1, ptr noundef %arraydecay), !dbg !104 - %2 = load ptr, ptr %p1, align 8, !dbg !105 - call void @pointer(ptr noundef %p2, ptr noundef %2), !dbg !106 - %3 = load ptr, ptr %p1, align 8, !dbg !107 - %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %3), !dbg !108 - %4 = load ptr, ptr %p2, align 8, !dbg !109 - %call3 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %4), !dbg !110 - %5 = load ptr, ptr %p2, align 8, !dbg !111 - call void @free(ptr noundef %5) #7, !dbg !112 - store i32 0, ptr %retval, align 4, !dbg !113 - br label %return, !dbg !113 + %1 = load ptr, ptr %p1, align 8, !dbg !101 + %arraydecay = getelementptr inbounds [10 x i8], ptr %str, i64 0, i64 0, !dbg !102 + %call1 = call ptr @strcat(ptr noundef %1, ptr noundef %arraydecay) #6, !dbg !103 + %2 = load ptr, ptr %p1, align 8, !dbg !104 + call void @pointer(ptr noundef %p2, ptr noundef %2), !dbg !105 + %3 = load ptr, ptr %p1, align 8, !dbg !106 + %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %3), !dbg !107 + %4 = load ptr, ptr %p2, align 8, !dbg !108 + %call3 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %4), !dbg !109 + %5 = load ptr, ptr %p2, align 8, !dbg !110 + call void @free(ptr noundef %5) #6, !dbg !111 + store i32 0, ptr %retval, align 4, !dbg !112 + br label %return, !dbg !112 return: ; preds = %if.end, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !114 - ret i32 %6, !dbg !114 + %6 = load i32, ptr %retval, align 4, !dbg !113 + ret i32 %6, !dbg !113 } ; 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 ptr @strcat(ptr noundef, ptr noundef) #4 +; Function Attrs: nounwind +declare ptr @strcat(ptr noundef, ptr noundef) #3 declare i32 @printf(ptr noundef, ...) #4 ; Function Attrs: nounwind -declare void @free(ptr noundef) #5 +declare void @free(ptr noundef) #3 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !115 { +define dso_local i32 @main() #0 !dbg !114 { entry: %retval = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %call = call i32 @ResourceLeak_TC03(i32 noundef 1), !dbg !118 - ret i32 0, !dbg !119 + %call = call i32 @ResourceLeak_TC03(i32 noundef 1), !dbg !117 + ret i32 0, !dbg !118 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 = { "frame-pointer"="all" "no-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 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 = !{!7} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} @@ -189,13 +186,13 @@ attributes #7 = { 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/mem_leak/sp3.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e976aa48b5417e1a7224b8d52418d154") +!2 = !DIFile(filename: "src/mem_leak/sp3.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "e976aa48b5417e1a7224b8d52418d154") !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, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp3.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e976aa48b5417e1a7224b8d52418d154") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp3.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "e976aa48b5417e1a7224b8d52418d154") !9 = !{!10, !11} !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -207,9 +204,9 @@ attributes #7 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!11, !25} !25 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -286,24 +283,23 @@ attributes #7 = { nounwind } !96 = !DILocation(line: 22, column: 7, scope: !97) !97 = distinct !DILexicalBlock(scope: !80, file: !2, line: 22, column: 7) !98 = !DILocation(line: 22, column: 10, scope: !97) -!99 = !DILocation(line: 22, column: 7, scope: !80) -!100 = !DILocation(line: 23, column: 5, scope: !101) -!101 = distinct !DILexicalBlock(scope: !97, file: !2, line: 22, column: 19) -!102 = !DILocation(line: 25, column: 10, scope: !80) -!103 = !DILocation(line: 25, column: 13, scope: !80) -!104 = !DILocation(line: 25, column: 3, scope: !80) -!105 = !DILocation(line: 26, column: 15, scope: !80) -!106 = !DILocation(line: 26, column: 3, scope: !80) -!107 = !DILocation(line: 28, column: 20, scope: !80) -!108 = !DILocation(line: 28, column: 3, scope: !80) -!109 = !DILocation(line: 29, column: 20, scope: !80) -!110 = !DILocation(line: 29, column: 3, scope: !80) -!111 = !DILocation(line: 31, column: 8, scope: !80) -!112 = !DILocation(line: 31, column: 3, scope: !80) -!113 = !DILocation(line: 32, column: 3, scope: !80) -!114 = !DILocation(line: 33, column: 1, scope: !80) -!115 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 35, type: !116, scopeLine: 36, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!116 = !DISubroutineType(types: !117) -!117 = !{!25} -!118 = !DILocation(line: 37, column: 3, scope: !115) -!119 = !DILocation(line: 38, column: 4, scope: !115) +!99 = !DILocation(line: 23, column: 5, scope: !100) +!100 = distinct !DILexicalBlock(scope: !97, file: !2, line: 22, column: 19) +!101 = !DILocation(line: 25, column: 10, scope: !80) +!102 = !DILocation(line: 25, column: 13, scope: !80) +!103 = !DILocation(line: 25, column: 3, scope: !80) +!104 = !DILocation(line: 26, column: 15, scope: !80) +!105 = !DILocation(line: 26, column: 3, scope: !80) +!106 = !DILocation(line: 28, column: 20, scope: !80) +!107 = !DILocation(line: 28, column: 3, scope: !80) +!108 = !DILocation(line: 29, column: 20, scope: !80) +!109 = !DILocation(line: 29, column: 3, scope: !80) +!110 = !DILocation(line: 31, column: 8, scope: !80) +!111 = !DILocation(line: 31, column: 3, scope: !80) +!112 = !DILocation(line: 32, column: 3, scope: !80) +!113 = !DILocation(line: 33, column: 1, scope: !80) +!114 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 35, type: !115, scopeLine: 36, spFlags: DISPFlagDefinition, unit: !7) +!115 = !DISubroutineType(types: !116) +!116 = !{!25} +!117 = !DILocation(line: 37, column: 3, scope: !114) +!118 = !DILocation(line: 38, column: 4, scope: !114) diff --git a/test_cases_bc/mem_leak/sp3a.c.bc b/test_cases_bc/mem_leak/sp3a.c.bc index 67b6d0718..ccc42dca6 100644 --- a/test_cases_bc/mem_leak/sp3a.c.bc +++ b/test_cases_bc/mem_leak/sp3a.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp3a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp3a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp3a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp3a.c" +target datalayout = "e-m:e-p270:32:32-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.ResourceLeak_TC03.str = private unnamed_addr constant [10 x i8] c"STRING\00\00\00\00", align 1 @.str = private unnamed_addr constant [6 x i8] c" %s \0A\00", align 1, !dbg !0 @@ -11,25 +11,22 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !36 @@ -41,7 +38,7 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !42 @@ -53,7 +50,7 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !48 @@ -65,7 +62,7 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !54 @@ -77,7 +74,7 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !60 @@ -89,7 +86,7 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !66 @@ -102,9 +99,9 @@ entry: %p.addr = alloca ptr, align 8 %s.addr = alloca ptr, align 8 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %p.addr, !72, !DIExpression(), !73) store ptr %s, ptr %s.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %s.addr, metadata !74, metadata !DIExpression()), !dbg !75 + #dbg_declare(ptr %s.addr, !74, !DIExpression(), !75) %0 = load ptr, ptr %s.addr, align 8, !dbg !76 %1 = load ptr, ptr %p.addr, align 8, !dbg !77 store ptr %0, ptr %1, align 8, !dbg !78 @@ -120,61 +117,63 @@ entry: %p1 = alloca ptr, align 8 %p2 = alloca ptr, align 8 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !83, metadata !DIExpression()), !dbg !84 - call void @llvm.dbg.declare(metadata ptr %str, metadata !85, metadata !DIExpression()), !dbg !89 + #dbg_declare(ptr %arg1.addr, !83, !DIExpression(), !84) + #dbg_declare(ptr %str, !85, !DIExpression(), !89) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str, ptr align 1 @__const.ResourceLeak_TC03.str, i64 10, i1 false), !dbg !89 - call void @llvm.dbg.declare(metadata ptr %p1, metadata !90, metadata !DIExpression()), !dbg !91 - call void @llvm.dbg.declare(metadata ptr %p2, metadata !92, metadata !DIExpression()), !dbg !93 + #dbg_declare(ptr %p1, !90, !DIExpression(), !91) + #dbg_declare(ptr %p2, !92, !DIExpression(), !93) %call = call ptr @NFRMALLOC(i32 noundef 10), !dbg !94 store ptr %call, ptr %p1, align 8, !dbg !95 %0 = load ptr, ptr %p1, align 8, !dbg !96 %cmp = icmp eq ptr %0, null, !dbg !98 - br i1 %cmp, label %if.then, label %if.end, !dbg !99 + br i1 %cmp, label %if.then, label %if.end, !dbg !98 if.then: ; preds = %entry - store i32 1, ptr %retval, align 4, !dbg !100 - br label %return, !dbg !100 + store i32 1, ptr %retval, align 4, !dbg !99 + br label %return, !dbg !99 if.end: ; preds = %entry - %1 = load ptr, ptr %p1, align 8, !dbg !102 - %arraydecay = getelementptr inbounds [10 x i8], ptr %str, i64 0, i64 0, !dbg !103 - %call1 = call ptr @strcat(ptr noundef %1, ptr noundef %arraydecay), !dbg !104 - %2 = load ptr, ptr %p1, align 8, !dbg !105 - call void @pointer(ptr noundef %p2, ptr noundef %2), !dbg !106 - %3 = load ptr, ptr %p1, align 8, !dbg !107 - %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %3), !dbg !108 - %4 = load ptr, ptr %p2, align 8, !dbg !109 - %call3 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %4), !dbg !110 - store i32 0, ptr %retval, align 4, !dbg !111 - br label %return, !dbg !111 + %1 = load ptr, ptr %p1, align 8, !dbg !101 + %arraydecay = getelementptr inbounds [10 x i8], ptr %str, i64 0, i64 0, !dbg !102 + %call1 = call ptr @strcat(ptr noundef %1, ptr noundef %arraydecay) #6, !dbg !103 + %2 = load ptr, ptr %p1, align 8, !dbg !104 + call void @pointer(ptr noundef %p2, ptr noundef %2), !dbg !105 + %3 = load ptr, ptr %p1, align 8, !dbg !106 + %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %3), !dbg !107 + %4 = load ptr, ptr %p2, align 8, !dbg !108 + %call3 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %4), !dbg !109 + store i32 0, ptr %retval, align 4, !dbg !110 + br label %return, !dbg !110 return: ; preds = %if.end, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !112 - ret i32 %5, !dbg !112 + %5 = load i32, ptr %retval, align 4, !dbg !111 + ret i32 %5, !dbg !111 } ; 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 ptr @strcat(ptr noundef, ptr noundef) #4 +; Function Attrs: nounwind +declare ptr @strcat(ptr noundef, ptr noundef) #3 declare i32 @printf(ptr noundef, ...) #4 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !113 { +define dso_local i32 @main() #0 !dbg !112 { entry: %retval = alloca i32, align 4 store i32 0, ptr %retval, align 4 - %call = call i32 @ResourceLeak_TC03(i32 noundef 1), !dbg !116 - ret i32 0, !dbg !117 + %call = call i32 @ResourceLeak_TC03(i32 noundef 1), !dbg !115 + ret i32 0, !dbg !116 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 = { "frame-pointer"="all" "no-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 = { 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 = !{!7} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} @@ -182,13 +181,13 @@ attributes #5 = { nounwind allocsize(0) } !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/mem_leak/sp3a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8cc92b795b03097962226e901f8f2ee5") +!2 = !DIFile(filename: "src/mem_leak/sp3a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "8cc92b795b03097962226e901f8f2ee5") !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, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp3a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8cc92b795b03097962226e901f8f2ee5") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp3a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "8cc92b795b03097962226e901f8f2ee5") !9 = !{!10, !11} !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -200,9 +199,9 @@ attributes #5 = { nounwind allocsize(0) } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!11, !25} !25 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -279,22 +278,21 @@ attributes #5 = { nounwind allocsize(0) } !96 = !DILocation(line: 19, column: 6, scope: !97) !97 = distinct !DILexicalBlock(scope: !80, file: !2, line: 19, column: 6) !98 = !DILocation(line: 19, column: 9, scope: !97) -!99 = !DILocation(line: 19, column: 6, scope: !80) -!100 = !DILocation(line: 20, column: 3, scope: !101) -!101 = distinct !DILexicalBlock(scope: !97, file: !2, line: 19, column: 18) -!102 = !DILocation(line: 22, column: 9, scope: !80) -!103 = !DILocation(line: 22, column: 13, scope: !80) -!104 = !DILocation(line: 22, column: 2, scope: !80) -!105 = !DILocation(line: 23, column: 15, scope: !80) -!106 = !DILocation(line: 23, column: 2, scope: !80) -!107 = !DILocation(line: 25, column: 19, scope: !80) -!108 = !DILocation(line: 25, column: 2, scope: !80) -!109 = !DILocation(line: 26, column: 19, scope: !80) -!110 = !DILocation(line: 26, column: 2, scope: !80) -!111 = !DILocation(line: 29, column: 2, scope: !80) -!112 = !DILocation(line: 30, column: 1, scope: !80) -!113 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 32, type: !114, scopeLine: 32, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!114 = !DISubroutineType(types: !115) -!115 = !{!25} -!116 = !DILocation(line: 33, column: 2, scope: !113) -!117 = !DILocation(line: 34, column: 2, scope: !113) +!99 = !DILocation(line: 20, column: 3, scope: !100) +!100 = distinct !DILexicalBlock(scope: !97, file: !2, line: 19, column: 18) +!101 = !DILocation(line: 22, column: 9, scope: !80) +!102 = !DILocation(line: 22, column: 13, scope: !80) +!103 = !DILocation(line: 22, column: 2, scope: !80) +!104 = !DILocation(line: 23, column: 15, scope: !80) +!105 = !DILocation(line: 23, column: 2, scope: !80) +!106 = !DILocation(line: 25, column: 19, scope: !80) +!107 = !DILocation(line: 25, column: 2, scope: !80) +!108 = !DILocation(line: 26, column: 19, scope: !80) +!109 = !DILocation(line: 26, column: 2, scope: !80) +!110 = !DILocation(line: 29, column: 2, scope: !80) +!111 = !DILocation(line: 30, column: 1, scope: !80) +!112 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 32, type: !113, scopeLine: 32, spFlags: DISPFlagDefinition, unit: !7) +!113 = !DISubroutineType(types: !114) +!114 = !{!25} +!115 = !DILocation(line: 33, column: 2, scope: !112) +!116 = !DILocation(line: 34, column: 2, scope: !112) diff --git a/test_cases_bc/mem_leak/sp4.c.bc b/test_cases_bc/mem_leak/sp4.c.bc index 499b29539..e05be8604 100644 --- a/test_cases_bc/mem_leak/sp4.c.bc +++ b/test_cases_bc/mem_leak/sp4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp4.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -13,28 +13,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 ret ptr %call, !dbg !37 } @@ -43,10 +40,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 ret ptr %call, !dbg !43 } @@ -55,10 +52,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 ret ptr %call, !dbg !49 } @@ -67,10 +64,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 ret ptr %call, !dbg !55 } @@ -79,10 +76,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 ret ptr %call, !dbg !61 } @@ -91,10 +88,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !66 ret ptr %call, !dbg !67 } @@ -108,96 +105,95 @@ entry: %str2 = alloca [10 x i8], align 1 store i32 0, ptr %retval, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %p, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %str1, metadata !75, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %arg1.addr, !71, !DIExpression(), !72) + #dbg_declare(ptr %p, !73, !DIExpression(), !74) + #dbg_declare(ptr %str1, !75, !DIExpression(), !79) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str1, ptr align 1 @__const.main.str1, i64 10, i1 false), !dbg !79 - call void @llvm.dbg.declare(metadata ptr %str2, metadata !80, metadata !DIExpression()), !dbg !81 + #dbg_declare(ptr %str2, !80, !DIExpression(), !81) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str2, ptr align 1 @__const.main.str2, i64 10, i1 false), !dbg !81 %call = call ptr @SAFEMALLOC(i32 noundef 16), !dbg !82 store ptr %call, ptr %p, align 8, !dbg !83 %0 = load ptr, ptr %p, align 8, !dbg !84 %cmp = icmp eq ptr %0, null, !dbg !86 - br i1 %cmp, label %if.then, label %if.end, !dbg !87 + br i1 %cmp, label %if.then, label %if.end, !dbg !86 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !88 - br label %return, !dbg !88 + store i32 -1, ptr %retval, align 4, !dbg !87 + br label %return, !dbg !87 if.end: ; preds = %entry - %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !89 - %1 = load ptr, ptr %p, align 8, !dbg !90 - %p1 = getelementptr inbounds %struct._S, ptr %1, i32 0, i32 0, !dbg !91 - store ptr %call1, ptr %p1, align 8, !dbg !92 - %2 = load ptr, ptr %p, align 8, !dbg !93 - %p12 = getelementptr inbounds %struct._S, ptr %2, i32 0, i32 0, !dbg !95 - %3 = load ptr, ptr %p12, align 8, !dbg !95 - %cmp3 = icmp eq ptr %3, null, !dbg !96 - br i1 %cmp3, label %if.then4, label %if.end5, !dbg !97 + %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !88 + %1 = load ptr, ptr %p, align 8, !dbg !89 + %p1 = getelementptr inbounds nuw %struct._S, ptr %1, i32 0, i32 0, !dbg !90 + store ptr %call1, ptr %p1, align 8, !dbg !91 + %2 = load ptr, ptr %p, align 8, !dbg !92 + %p12 = getelementptr inbounds nuw %struct._S, ptr %2, i32 0, i32 0, !dbg !94 + %3 = load ptr, ptr %p12, align 8, !dbg !94 + %cmp3 = icmp eq ptr %3, null, !dbg !95 + br i1 %cmp3, label %if.then4, label %if.end5, !dbg !95 if.then4: ; preds = %if.end - %4 = load ptr, ptr %p, align 8, !dbg !98 - call void @free(ptr noundef %4) #7, !dbg !100 - store i32 -1, ptr %retval, align 4, !dbg !101 - br label %return, !dbg !101 + %4 = load ptr, ptr %p, align 8, !dbg !96 + call void @free(ptr noundef %4) #5, !dbg !98 + store i32 -1, ptr %retval, align 4, !dbg !99 + br label %return, !dbg !99 if.end5: ; preds = %if.end - %5 = load ptr, ptr %p, align 8, !dbg !102 - %p16 = getelementptr inbounds %struct._S, ptr %5, i32 0, i32 0, !dbg !103 - %6 = load ptr, ptr %p16, align 8, !dbg !103 - %arraydecay = getelementptr inbounds [10 x i8], ptr %str1, i64 0, i64 0, !dbg !104 - %call7 = call ptr @strcpy(ptr noundef %6, ptr noundef %arraydecay), !dbg !105 - %7 = load ptr, ptr %p, align 8, !dbg !106 - %p2 = getelementptr inbounds %struct._S, ptr %7, i32 0, i32 1, !dbg !107 - %8 = load ptr, ptr %p2, align 8, !dbg !107 - %arraydecay8 = getelementptr inbounds [10 x i8], ptr %str2, i64 0, i64 0, !dbg !108 - %call9 = call ptr @strcpy(ptr noundef %8, ptr noundef %arraydecay8), !dbg !109 - %9 = load ptr, ptr %p, align 8, !dbg !110 - %p110 = getelementptr inbounds %struct._S, ptr %9, i32 0, i32 0, !dbg !111 - %10 = load ptr, ptr %p110, align 8, !dbg !111 - call void @free(ptr noundef %10) #7, !dbg !112 - %11 = load ptr, ptr %p, align 8, !dbg !113 - %p211 = getelementptr inbounds %struct._S, ptr %11, i32 0, i32 1, !dbg !114 - %12 = load ptr, ptr %p211, align 8, !dbg !114 - call void @free(ptr noundef %12) #7, !dbg !115 - %13 = load ptr, ptr %p, align 8, !dbg !116 - call void @free(ptr noundef %13) #7, !dbg !117 - %14 = load i32, ptr %arg1.addr, align 4, !dbg !118 - store i32 %14, ptr %retval, align 4, !dbg !119 - br label %return, !dbg !119 + %5 = load ptr, ptr %p, align 8, !dbg !100 + %p16 = getelementptr inbounds nuw %struct._S, ptr %5, i32 0, i32 0, !dbg !101 + %6 = load ptr, ptr %p16, align 8, !dbg !101 + %arraydecay = getelementptr inbounds [10 x i8], ptr %str1, i64 0, i64 0, !dbg !102 + %call7 = call ptr @strcpy(ptr noundef %6, ptr noundef %arraydecay) #5, !dbg !103 + %7 = load ptr, ptr %p, align 8, !dbg !104 + %p2 = getelementptr inbounds nuw %struct._S, ptr %7, i32 0, i32 1, !dbg !105 + %8 = load ptr, ptr %p2, align 8, !dbg !105 + %arraydecay8 = getelementptr inbounds [10 x i8], ptr %str2, i64 0, i64 0, !dbg !106 + %call9 = call ptr @strcpy(ptr noundef %8, ptr noundef %arraydecay8) #5, !dbg !107 + %9 = load ptr, ptr %p, align 8, !dbg !108 + %p110 = getelementptr inbounds nuw %struct._S, ptr %9, i32 0, i32 0, !dbg !109 + %10 = load ptr, ptr %p110, align 8, !dbg !109 + call void @free(ptr noundef %10) #5, !dbg !110 + %11 = load ptr, ptr %p, align 8, !dbg !111 + %p211 = getelementptr inbounds nuw %struct._S, ptr %11, i32 0, i32 1, !dbg !112 + %12 = load ptr, ptr %p211, align 8, !dbg !112 + call void @free(ptr noundef %12) #5, !dbg !113 + %13 = load ptr, ptr %p, align 8, !dbg !114 + call void @free(ptr noundef %13) #5, !dbg !115 + %14 = load i32, ptr %arg1.addr, align 4, !dbg !116 + store i32 %14, ptr %retval, align 4, !dbg !117 + br label %return, !dbg !117 return: ; preds = %if.end5, %if.then4, %if.then - %15 = load i32, ptr %retval, align 4, !dbg !120 - ret i32 %15, !dbg !120 + %15 = load i32, ptr %retval, align 4, !dbg !118 + ret i32 %15, !dbg !118 } ; 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 void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 -declare ptr @strcpy(ptr noundef, ptr noundef) #5 +; Function Attrs: nounwind +declare ptr @strcpy(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 = { 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 = { nounwind allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} !llvm.ident = !{!20} -!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/mem_leak/sp4.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "dab39dcd927272e2fe8871c0da781b03") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp4.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "dab39dcd927272e2fe8871c0da781b03") !2 = !{!3, !12, !9} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIDerivedType(tag: DW_TAG_typedef, name: "S", file: !5, line: 15, baseType: !6) -!5 = !DIFile(filename: "src/mem_leak/sp4.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "dab39dcd927272e2fe8871c0da781b03") +!5 = !DIFile(filename: "src/mem_leak/sp4.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "dab39dcd927272e2fe8871c0da781b03") !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_S", file: !5, line: 12, size: 128, elements: !7) !7 = !{!8, !11} !8 = !DIDerivedType(tag: DW_TAG_member, name: "p1", scope: !6, file: !5, line: 13, baseType: !9, size: 64) @@ -212,9 +208,9 @@ attributes #7 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!12, !25} !25 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -279,37 +275,35 @@ attributes #7 = { nounwind } !84 = !DILocation(line: 24, column: 6, scope: !85) !85 = distinct !DILexicalBlock(scope: !68, file: !5, line: 24, column: 6) !86 = !DILocation(line: 24, column: 8, scope: !85) -!87 = !DILocation(line: 24, column: 6, scope: !68) -!88 = !DILocation(line: 25, column: 4, scope: !85) -!89 = !DILocation(line: 27, column: 18, scope: !68) -!90 = !DILocation(line: 27, column: 2, scope: !68) -!91 = !DILocation(line: 27, column: 5, scope: !68) -!92 = !DILocation(line: 27, column: 8, scope: !68) -!93 = !DILocation(line: 28, column: 6, scope: !94) -!94 = distinct !DILexicalBlock(scope: !68, file: !5, line: 28, column: 6) -!95 = !DILocation(line: 28, column: 9, scope: !94) -!96 = !DILocation(line: 28, column: 12, scope: !94) -!97 = !DILocation(line: 28, column: 6, scope: !68) -!98 = !DILocation(line: 29, column: 9, scope: !99) -!99 = distinct !DILexicalBlock(scope: !94, file: !5, line: 28, column: 21) -!100 = !DILocation(line: 29, column: 4, scope: !99) -!101 = !DILocation(line: 30, column: 4, scope: !99) -!102 = !DILocation(line: 41, column: 10, scope: !68) -!103 = !DILocation(line: 41, column: 13, scope: !68) -!104 = !DILocation(line: 41, column: 17, scope: !68) -!105 = !DILocation(line: 41, column: 3, scope: !68) -!106 = !DILocation(line: 42, column: 10, scope: !68) -!107 = !DILocation(line: 42, column: 13, scope: !68) -!108 = !DILocation(line: 42, column: 17, scope: !68) -!109 = !DILocation(line: 42, column: 3, scope: !68) -!110 = !DILocation(line: 44, column: 8, scope: !68) -!111 = !DILocation(line: 44, column: 11, scope: !68) -!112 = !DILocation(line: 44, column: 3, scope: !68) -!113 = !DILocation(line: 45, column: 8, scope: !68) -!114 = !DILocation(line: 45, column: 11, scope: !68) -!115 = !DILocation(line: 45, column: 3, scope: !68) -!116 = !DILocation(line: 46, column: 8, scope: !68) -!117 = !DILocation(line: 46, column: 3, scope: !68) -!118 = !DILocation(line: 47, column: 10, scope: !68) -!119 = !DILocation(line: 47, column: 3, scope: !68) -!120 = !DILocation(line: 48, column: 1, scope: !68) +!87 = !DILocation(line: 25, column: 4, scope: !85) +!88 = !DILocation(line: 27, column: 18, scope: !68) +!89 = !DILocation(line: 27, column: 2, scope: !68) +!90 = !DILocation(line: 27, column: 5, scope: !68) +!91 = !DILocation(line: 27, column: 8, scope: !68) +!92 = !DILocation(line: 28, column: 6, scope: !93) +!93 = distinct !DILexicalBlock(scope: !68, file: !5, line: 28, column: 6) +!94 = !DILocation(line: 28, column: 9, scope: !93) +!95 = !DILocation(line: 28, column: 12, scope: !93) +!96 = !DILocation(line: 29, column: 9, scope: !97) +!97 = distinct !DILexicalBlock(scope: !93, file: !5, line: 28, column: 21) +!98 = !DILocation(line: 29, column: 4, scope: !97) +!99 = !DILocation(line: 30, column: 4, scope: !97) +!100 = !DILocation(line: 41, column: 10, scope: !68) +!101 = !DILocation(line: 41, column: 13, scope: !68) +!102 = !DILocation(line: 41, column: 17, scope: !68) +!103 = !DILocation(line: 41, column: 3, scope: !68) +!104 = !DILocation(line: 42, column: 10, scope: !68) +!105 = !DILocation(line: 42, column: 13, scope: !68) +!106 = !DILocation(line: 42, column: 17, scope: !68) +!107 = !DILocation(line: 42, column: 3, scope: !68) +!108 = !DILocation(line: 44, column: 8, scope: !68) +!109 = !DILocation(line: 44, column: 11, scope: !68) +!110 = !DILocation(line: 44, column: 3, scope: !68) +!111 = !DILocation(line: 45, column: 8, scope: !68) +!112 = !DILocation(line: 45, column: 11, scope: !68) +!113 = !DILocation(line: 45, column: 3, scope: !68) +!114 = !DILocation(line: 46, column: 8, scope: !68) +!115 = !DILocation(line: 46, column: 3, scope: !68) +!116 = !DILocation(line: 47, column: 10, scope: !68) +!117 = !DILocation(line: 47, column: 3, scope: !68) +!118 = !DILocation(line: 48, column: 1, scope: !68) diff --git a/test_cases_bc/mem_leak/sp41.c.bc b/test_cases_bc/mem_leak/sp41.c.bc index ffb4262df..6a0daae67 100644 --- a/test_cases_bc/mem_leak/sp41.c.bc +++ b/test_cases_bc/mem_leak/sp41.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp41.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp41.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp41.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp41.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -13,28 +13,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 ret ptr %call, !dbg !37 } @@ -43,10 +40,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 ret ptr %call, !dbg !43 } @@ -55,10 +52,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 ret ptr %call, !dbg !49 } @@ -67,10 +64,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 ret ptr %call, !dbg !55 } @@ -79,10 +76,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 ret ptr %call, !dbg !61 } @@ -91,10 +88,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !66 ret ptr %call, !dbg !67 } @@ -108,127 +105,126 @@ entry: %str2 = alloca [10 x i8], align 1 store i32 0, ptr %retval, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %p, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %str1, metadata !75, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %arg1.addr, !71, !DIExpression(), !72) + #dbg_declare(ptr %p, !73, !DIExpression(), !74) + #dbg_declare(ptr %str1, !75, !DIExpression(), !79) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str1, ptr align 1 @__const.main.str1, i64 10, i1 false), !dbg !79 - call void @llvm.dbg.declare(metadata ptr %str2, metadata !80, metadata !DIExpression()), !dbg !81 + #dbg_declare(ptr %str2, !80, !DIExpression(), !81) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str2, ptr align 1 @__const.main.str2, i64 10, i1 false), !dbg !81 - %call = call noalias ptr @malloc(i64 noundef 16) #6, !dbg !82 + %call = call noalias ptr @malloc(i64 noundef 16) #4, !dbg !82 store ptr %call, ptr %p, align 8, !dbg !83 %0 = load ptr, ptr %p, align 8, !dbg !84 %cmp = icmp eq ptr %0, null, !dbg !86 - br i1 %cmp, label %if.then, label %if.end, !dbg !87 + br i1 %cmp, label %if.then, label %if.end, !dbg !86 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !88 - br label %return, !dbg !88 + store i32 -1, ptr %retval, align 4, !dbg !87 + br label %return, !dbg !87 if.end: ; preds = %entry - %call1 = call noalias ptr @malloc(i64 noundef 10) #6, !dbg !89 - %1 = load ptr, ptr %p, align 8, !dbg !90 - %p1 = getelementptr inbounds %struct._S, ptr %1, i32 0, i32 0, !dbg !91 - store ptr %call1, ptr %p1, align 8, !dbg !92 - %2 = load ptr, ptr %p, align 8, !dbg !93 - %p12 = getelementptr inbounds %struct._S, ptr %2, i32 0, i32 0, !dbg !95 - %3 = load ptr, ptr %p12, align 8, !dbg !95 - %cmp3 = icmp eq ptr %3, null, !dbg !96 - br i1 %cmp3, label %if.then4, label %if.end5, !dbg !97 + %call1 = call noalias ptr @malloc(i64 noundef 10) #4, !dbg !88 + %1 = load ptr, ptr %p, align 8, !dbg !89 + %p1 = getelementptr inbounds nuw %struct._S, ptr %1, i32 0, i32 0, !dbg !90 + store ptr %call1, ptr %p1, align 8, !dbg !91 + %2 = load ptr, ptr %p, align 8, !dbg !92 + %p12 = getelementptr inbounds nuw %struct._S, ptr %2, i32 0, i32 0, !dbg !94 + %3 = load ptr, ptr %p12, align 8, !dbg !94 + %cmp3 = icmp eq ptr %3, null, !dbg !95 + br i1 %cmp3, label %if.then4, label %if.end5, !dbg !95 if.then4: ; preds = %if.end - %4 = load ptr, ptr %p, align 8, !dbg !98 - call void @free(ptr noundef %4) #7, !dbg !100 - store i32 -1, ptr %retval, align 4, !dbg !101 - br label %return, !dbg !101 + %4 = load ptr, ptr %p, align 8, !dbg !96 + call void @free(ptr noundef %4) #5, !dbg !98 + store i32 -1, ptr %retval, align 4, !dbg !99 + br label %return, !dbg !99 if.end5: ; preds = %if.end - %call6 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !102 - %5 = load ptr, ptr %p, align 8, !dbg !103 - %p2 = getelementptr inbounds %struct._S, ptr %5, i32 0, i32 1, !dbg !104 - store ptr %call6, ptr %p2, align 8, !dbg !105 - %6 = load ptr, ptr %p, align 8, !dbg !106 - %p27 = getelementptr inbounds %struct._S, ptr %6, i32 0, i32 1, !dbg !108 - %7 = load ptr, ptr %p27, align 8, !dbg !108 - %cmp8 = icmp eq ptr %7, null, !dbg !109 - br i1 %cmp8, label %if.then9, label %if.end15, !dbg !110 + %call6 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !100 + %5 = load ptr, ptr %p, align 8, !dbg !101 + %p2 = getelementptr inbounds nuw %struct._S, ptr %5, i32 0, i32 1, !dbg !102 + store ptr %call6, ptr %p2, align 8, !dbg !103 + %6 = load ptr, ptr %p, align 8, !dbg !104 + %p27 = getelementptr inbounds nuw %struct._S, ptr %6, i32 0, i32 1, !dbg !106 + %7 = load ptr, ptr %p27, align 8, !dbg !106 + %cmp8 = icmp eq ptr %7, null, !dbg !107 + br i1 %cmp8, label %if.then9, label %if.end15, !dbg !107 if.then9: ; preds = %if.end5 - %8 = load ptr, ptr %p, align 8, !dbg !111 - %p110 = getelementptr inbounds %struct._S, ptr %8, i32 0, i32 0, !dbg !114 - %9 = load ptr, ptr %p110, align 8, !dbg !114 - %cmp11 = icmp ne ptr %9, null, !dbg !115 - br i1 %cmp11, label %if.then12, label %if.end14, !dbg !116 + %8 = load ptr, ptr %p, align 8, !dbg !108 + %p110 = getelementptr inbounds nuw %struct._S, ptr %8, i32 0, i32 0, !dbg !111 + %9 = load ptr, ptr %p110, align 8, !dbg !111 + %cmp11 = icmp ne ptr %9, null, !dbg !112 + br i1 %cmp11, label %if.then12, label %if.end14, !dbg !112 if.then12: ; preds = %if.then9 - %10 = load ptr, ptr %p, align 8, !dbg !117 - %p113 = getelementptr inbounds %struct._S, ptr %10, i32 0, i32 0, !dbg !118 - %11 = load ptr, ptr %p113, align 8, !dbg !118 - call void @free(ptr noundef %11) #7, !dbg !119 - br label %if.end14, !dbg !119 + %10 = load ptr, ptr %p, align 8, !dbg !113 + %p113 = getelementptr inbounds nuw %struct._S, ptr %10, i32 0, i32 0, !dbg !114 + %11 = load ptr, ptr %p113, align 8, !dbg !114 + call void @free(ptr noundef %11) #5, !dbg !115 + br label %if.end14, !dbg !115 if.end14: ; preds = %if.then12, %if.then9 - %12 = load ptr, ptr %p, align 8, !dbg !120 - call void @free(ptr noundef %12) #7, !dbg !121 - store i32 -1, ptr %retval, align 4, !dbg !122 - br label %return, !dbg !122 + %12 = load ptr, ptr %p, align 8, !dbg !116 + call void @free(ptr noundef %12) #5, !dbg !117 + store i32 -1, ptr %retval, align 4, !dbg !118 + br label %return, !dbg !118 if.end15: ; preds = %if.end5 - %13 = load ptr, ptr %p, align 8, !dbg !123 - %p116 = getelementptr inbounds %struct._S, ptr %13, i32 0, i32 0, !dbg !124 - %14 = load ptr, ptr %p116, align 8, !dbg !124 - %arraydecay = getelementptr inbounds [10 x i8], ptr %str1, i64 0, i64 0, !dbg !125 - %call17 = call ptr @strcpy(ptr noundef %14, ptr noundef %arraydecay), !dbg !126 - %15 = load ptr, ptr %p, align 8, !dbg !127 - %p218 = getelementptr inbounds %struct._S, ptr %15, i32 0, i32 1, !dbg !128 - %16 = load ptr, ptr %p218, align 8, !dbg !128 - %arraydecay19 = getelementptr inbounds [10 x i8], ptr %str2, i64 0, i64 0, !dbg !129 - %call20 = call ptr @strcpy(ptr noundef %16, ptr noundef %arraydecay19), !dbg !130 - %17 = load ptr, ptr %p, align 8, !dbg !131 - %p121 = getelementptr inbounds %struct._S, ptr %17, i32 0, i32 0, !dbg !132 - %18 = load ptr, ptr %p121, align 8, !dbg !132 - call void @free(ptr noundef %18) #7, !dbg !133 - %19 = load ptr, ptr %p, align 8, !dbg !134 - %p222 = getelementptr inbounds %struct._S, ptr %19, i32 0, i32 1, !dbg !135 - %20 = load ptr, ptr %p222, align 8, !dbg !135 - call void @free(ptr noundef %20) #7, !dbg !136 - %21 = load ptr, ptr %p, align 8, !dbg !137 - call void @free(ptr noundef %21) #7, !dbg !138 - %22 = load i32, ptr %arg1.addr, align 4, !dbg !139 - store i32 %22, ptr %retval, align 4, !dbg !140 - br label %return, !dbg !140 + %13 = load ptr, ptr %p, align 8, !dbg !119 + %p116 = getelementptr inbounds nuw %struct._S, ptr %13, i32 0, i32 0, !dbg !120 + %14 = load ptr, ptr %p116, align 8, !dbg !120 + %arraydecay = getelementptr inbounds [10 x i8], ptr %str1, i64 0, i64 0, !dbg !121 + %call17 = call ptr @strcpy(ptr noundef %14, ptr noundef %arraydecay) #5, !dbg !122 + %15 = load ptr, ptr %p, align 8, !dbg !123 + %p218 = getelementptr inbounds nuw %struct._S, ptr %15, i32 0, i32 1, !dbg !124 + %16 = load ptr, ptr %p218, align 8, !dbg !124 + %arraydecay19 = getelementptr inbounds [10 x i8], ptr %str2, i64 0, i64 0, !dbg !125 + %call20 = call ptr @strcpy(ptr noundef %16, ptr noundef %arraydecay19) #5, !dbg !126 + %17 = load ptr, ptr %p, align 8, !dbg !127 + %p121 = getelementptr inbounds nuw %struct._S, ptr %17, i32 0, i32 0, !dbg !128 + %18 = load ptr, ptr %p121, align 8, !dbg !128 + call void @free(ptr noundef %18) #5, !dbg !129 + %19 = load ptr, ptr %p, align 8, !dbg !130 + %p222 = getelementptr inbounds nuw %struct._S, ptr %19, i32 0, i32 1, !dbg !131 + %20 = load ptr, ptr %p222, align 8, !dbg !131 + call void @free(ptr noundef %20) #5, !dbg !132 + %21 = load ptr, ptr %p, align 8, !dbg !133 + call void @free(ptr noundef %21) #5, !dbg !134 + %22 = load i32, ptr %arg1.addr, align 4, !dbg !135 + store i32 %22, ptr %retval, align 4, !dbg !136 + br label %return, !dbg !136 return: ; preds = %if.end15, %if.end14, %if.then4, %if.then - %23 = load i32, ptr %retval, align 4, !dbg !141 - ret i32 %23, !dbg !141 + %23 = load i32, ptr %retval, align 4, !dbg !137 + ret i32 %23, !dbg !137 } ; 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 void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 -declare ptr @strcpy(ptr noundef, ptr noundef) #5 +; Function Attrs: nounwind +declare ptr @strcpy(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 = { 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 = { nounwind allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} !llvm.ident = !{!20} -!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/mem_leak/sp41.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2f0bab6dc649b65336829388b91feaf4") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp41.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "2f0bab6dc649b65336829388b91feaf4") !2 = !{!3, !12, !9} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIDerivedType(tag: DW_TAG_typedef, name: "S", file: !5, line: 14, baseType: !6) -!5 = !DIFile(filename: "src/mem_leak/sp41.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2f0bab6dc649b65336829388b91feaf4") +!5 = !DIFile(filename: "src/mem_leak/sp41.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "2f0bab6dc649b65336829388b91feaf4") !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_S", file: !5, line: 11, size: 128, elements: !7) !7 = !{!8, !11} !8 = !DIDerivedType(tag: DW_TAG_member, name: "p1", scope: !6, file: !5, line: 12, baseType: !9, size: 64) @@ -243,9 +239,9 @@ attributes #7 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!12, !25} !25 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -310,58 +306,54 @@ attributes #7 = { nounwind } !84 = !DILocation(line: 22, column: 6, scope: !85) !85 = distinct !DILexicalBlock(scope: !68, file: !5, line: 22, column: 6) !86 = !DILocation(line: 22, column: 8, scope: !85) -!87 = !DILocation(line: 22, column: 6, scope: !68) -!88 = !DILocation(line: 23, column: 3, scope: !85) -!89 = !DILocation(line: 25, column: 19, scope: !68) -!90 = !DILocation(line: 25, column: 2, scope: !68) -!91 = !DILocation(line: 25, column: 5, scope: !68) -!92 = !DILocation(line: 25, column: 8, scope: !68) -!93 = !DILocation(line: 26, column: 6, scope: !94) -!94 = distinct !DILexicalBlock(scope: !68, file: !5, line: 26, column: 6) -!95 = !DILocation(line: 26, column: 9, scope: !94) -!96 = !DILocation(line: 26, column: 12, scope: !94) -!97 = !DILocation(line: 26, column: 6, scope: !68) -!98 = !DILocation(line: 27, column: 8, scope: !99) -!99 = distinct !DILexicalBlock(scope: !94, file: !5, line: 26, column: 21) -!100 = !DILocation(line: 27, column: 3, scope: !99) -!101 = !DILocation(line: 28, column: 3, scope: !99) -!102 = !DILocation(line: 31, column: 19, scope: !68) -!103 = !DILocation(line: 31, column: 2, scope: !68) -!104 = !DILocation(line: 31, column: 5, scope: !68) -!105 = !DILocation(line: 31, column: 8, scope: !68) -!106 = !DILocation(line: 32, column: 6, scope: !107) -!107 = distinct !DILexicalBlock(scope: !68, file: !5, line: 32, column: 6) -!108 = !DILocation(line: 32, column: 9, scope: !107) -!109 = !DILocation(line: 32, column: 12, scope: !107) -!110 = !DILocation(line: 32, column: 6, scope: !68) -!111 = !DILocation(line: 33, column: 7, scope: !112) -!112 = distinct !DILexicalBlock(scope: !113, file: !5, line: 33, column: 7) -!113 = distinct !DILexicalBlock(scope: !107, file: !5, line: 32, column: 21) -!114 = !DILocation(line: 33, column: 10, scope: !112) -!115 = !DILocation(line: 33, column: 13, scope: !112) -!116 = !DILocation(line: 33, column: 7, scope: !113) -!117 = !DILocation(line: 34, column: 9, scope: !112) -!118 = !DILocation(line: 34, column: 12, scope: !112) -!119 = !DILocation(line: 34, column: 4, scope: !112) -!120 = !DILocation(line: 35, column: 8, scope: !113) -!121 = !DILocation(line: 35, column: 3, scope: !113) -!122 = !DILocation(line: 36, column: 3, scope: !113) -!123 = !DILocation(line: 39, column: 9, scope: !68) -!124 = !DILocation(line: 39, column: 12, scope: !68) -!125 = !DILocation(line: 39, column: 16, scope: !68) -!126 = !DILocation(line: 39, column: 2, scope: !68) -!127 = !DILocation(line: 40, column: 9, scope: !68) -!128 = !DILocation(line: 40, column: 12, scope: !68) -!129 = !DILocation(line: 40, column: 16, scope: !68) -!130 = !DILocation(line: 40, column: 2, scope: !68) -!131 = !DILocation(line: 42, column: 7, scope: !68) -!132 = !DILocation(line: 42, column: 10, scope: !68) -!133 = !DILocation(line: 42, column: 2, scope: !68) -!134 = !DILocation(line: 43, column: 7, scope: !68) -!135 = !DILocation(line: 43, column: 10, scope: !68) -!136 = !DILocation(line: 43, column: 2, scope: !68) -!137 = !DILocation(line: 44, column: 7, scope: !68) -!138 = !DILocation(line: 44, column: 2, scope: !68) -!139 = !DILocation(line: 45, column: 9, scope: !68) -!140 = !DILocation(line: 45, column: 2, scope: !68) -!141 = !DILocation(line: 46, column: 1, scope: !68) +!87 = !DILocation(line: 23, column: 3, scope: !85) +!88 = !DILocation(line: 25, column: 19, scope: !68) +!89 = !DILocation(line: 25, column: 2, scope: !68) +!90 = !DILocation(line: 25, column: 5, scope: !68) +!91 = !DILocation(line: 25, column: 8, scope: !68) +!92 = !DILocation(line: 26, column: 6, scope: !93) +!93 = distinct !DILexicalBlock(scope: !68, file: !5, line: 26, column: 6) +!94 = !DILocation(line: 26, column: 9, scope: !93) +!95 = !DILocation(line: 26, column: 12, scope: !93) +!96 = !DILocation(line: 27, column: 8, scope: !97) +!97 = distinct !DILexicalBlock(scope: !93, file: !5, line: 26, column: 21) +!98 = !DILocation(line: 27, column: 3, scope: !97) +!99 = !DILocation(line: 28, column: 3, scope: !97) +!100 = !DILocation(line: 31, column: 19, scope: !68) +!101 = !DILocation(line: 31, column: 2, scope: !68) +!102 = !DILocation(line: 31, column: 5, scope: !68) +!103 = !DILocation(line: 31, column: 8, scope: !68) +!104 = !DILocation(line: 32, column: 6, scope: !105) +!105 = distinct !DILexicalBlock(scope: !68, file: !5, line: 32, column: 6) +!106 = !DILocation(line: 32, column: 9, scope: !105) +!107 = !DILocation(line: 32, column: 12, scope: !105) +!108 = !DILocation(line: 33, column: 7, scope: !109) +!109 = distinct !DILexicalBlock(scope: !110, file: !5, line: 33, column: 7) +!110 = distinct !DILexicalBlock(scope: !105, file: !5, line: 32, column: 21) +!111 = !DILocation(line: 33, column: 10, scope: !109) +!112 = !DILocation(line: 33, column: 13, scope: !109) +!113 = !DILocation(line: 34, column: 9, scope: !109) +!114 = !DILocation(line: 34, column: 12, scope: !109) +!115 = !DILocation(line: 34, column: 4, scope: !109) +!116 = !DILocation(line: 35, column: 8, scope: !110) +!117 = !DILocation(line: 35, column: 3, scope: !110) +!118 = !DILocation(line: 36, column: 3, scope: !110) +!119 = !DILocation(line: 39, column: 9, scope: !68) +!120 = !DILocation(line: 39, column: 12, scope: !68) +!121 = !DILocation(line: 39, column: 16, scope: !68) +!122 = !DILocation(line: 39, column: 2, scope: !68) +!123 = !DILocation(line: 40, column: 9, scope: !68) +!124 = !DILocation(line: 40, column: 12, scope: !68) +!125 = !DILocation(line: 40, column: 16, scope: !68) +!126 = !DILocation(line: 40, column: 2, scope: !68) +!127 = !DILocation(line: 42, column: 7, scope: !68) +!128 = !DILocation(line: 42, column: 10, scope: !68) +!129 = !DILocation(line: 42, column: 2, scope: !68) +!130 = !DILocation(line: 43, column: 7, scope: !68) +!131 = !DILocation(line: 43, column: 10, scope: !68) +!132 = !DILocation(line: 43, column: 2, scope: !68) +!133 = !DILocation(line: 44, column: 7, scope: !68) +!134 = !DILocation(line: 44, column: 2, scope: !68) +!135 = !DILocation(line: 45, column: 9, scope: !68) +!136 = !DILocation(line: 45, column: 2, scope: !68) +!137 = !DILocation(line: 46, column: 1, scope: !68) diff --git a/test_cases_bc/mem_leak/sp4a.c.bc b/test_cases_bc/mem_leak/sp4a.c.bc index d0c4a0d81..aa882e5c0 100644 --- a/test_cases_bc/mem_leak/sp4a.c.bc +++ b/test_cases_bc/mem_leak/sp4a.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp4a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp4a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp4a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp4a.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -13,28 +13,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 ret ptr %call, !dbg !37 } @@ -43,10 +40,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 ret ptr %call, !dbg !43 } @@ -55,10 +52,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 ret ptr %call, !dbg !49 } @@ -67,10 +64,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 ret ptr %call, !dbg !55 } @@ -79,10 +76,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 ret ptr %call, !dbg !61 } @@ -91,10 +88,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !66 ret ptr %call, !dbg !67 } @@ -108,123 +105,122 @@ entry: %str2 = alloca [10 x i8], align 1 store i32 0, ptr %retval, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %p, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %str1, metadata !75, metadata !DIExpression()), !dbg !79 + #dbg_declare(ptr %arg1.addr, !71, !DIExpression(), !72) + #dbg_declare(ptr %p, !73, !DIExpression(), !74) + #dbg_declare(ptr %str1, !75, !DIExpression(), !79) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str1, ptr align 1 @__const.main.str1, i64 10, i1 false), !dbg !79 - call void @llvm.dbg.declare(metadata ptr %str2, metadata !80, metadata !DIExpression()), !dbg !81 + #dbg_declare(ptr %str2, !80, !DIExpression(), !81) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %str2, ptr align 1 @__const.main.str2, i64 10, i1 false), !dbg !81 %call = call ptr @SAFEMALLOC(i32 noundef 16), !dbg !82 store ptr %call, ptr %p, align 8, !dbg !83 %0 = load ptr, ptr %p, align 8, !dbg !84 %cmp = icmp eq ptr %0, null, !dbg !86 - br i1 %cmp, label %if.then, label %if.end, !dbg !87 + br i1 %cmp, label %if.then, label %if.end, !dbg !86 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !88 - br label %return, !dbg !88 + store i32 -1, ptr %retval, align 4, !dbg !87 + br label %return, !dbg !87 if.end: ; preds = %entry - %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !89 - %1 = load ptr, ptr %p, align 8, !dbg !90 - %p1 = getelementptr inbounds %struct._S, ptr %1, i32 0, i32 0, !dbg !91 - store ptr %call1, ptr %p1, align 8, !dbg !92 - %2 = load ptr, ptr %p, align 8, !dbg !93 - %p12 = getelementptr inbounds %struct._S, ptr %2, i32 0, i32 0, !dbg !95 - %3 = load ptr, ptr %p12, align 8, !dbg !95 - %cmp3 = icmp eq ptr %3, null, !dbg !96 - br i1 %cmp3, label %if.then4, label %if.end5, !dbg !97 + %call1 = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !88 + %1 = load ptr, ptr %p, align 8, !dbg !89 + %p1 = getelementptr inbounds nuw %struct._S, ptr %1, i32 0, i32 0, !dbg !90 + store ptr %call1, ptr %p1, align 8, !dbg !91 + %2 = load ptr, ptr %p, align 8, !dbg !92 + %p12 = getelementptr inbounds nuw %struct._S, ptr %2, i32 0, i32 0, !dbg !94 + %3 = load ptr, ptr %p12, align 8, !dbg !94 + %cmp3 = icmp eq ptr %3, null, !dbg !95 + br i1 %cmp3, label %if.then4, label %if.end5, !dbg !95 if.then4: ; preds = %if.end - %4 = load ptr, ptr %p, align 8, !dbg !98 - call void @free(ptr noundef %4) #7, !dbg !100 - store i32 -1, ptr %retval, align 4, !dbg !101 - br label %return, !dbg !101 + %4 = load ptr, ptr %p, align 8, !dbg !96 + call void @free(ptr noundef %4) #5, !dbg !98 + store i32 -1, ptr %retval, align 4, !dbg !99 + br label %return, !dbg !99 if.end5: ; preds = %if.end - %call6 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !102 - %5 = load ptr, ptr %p, align 8, !dbg !103 - %p2 = getelementptr inbounds %struct._S, ptr %5, i32 0, i32 1, !dbg !104 - store ptr %call6, ptr %p2, align 8, !dbg !105 - %6 = load ptr, ptr %p, align 8, !dbg !106 - %p27 = getelementptr inbounds %struct._S, ptr %6, i32 0, i32 1, !dbg !108 - %7 = load ptr, ptr %p27, align 8, !dbg !108 - %cmp8 = icmp eq ptr %7, null, !dbg !109 - br i1 %cmp8, label %if.then9, label %if.end15, !dbg !110 + %call6 = call ptr @NFRMALLOC(i32 noundef 10), !dbg !100 + %5 = load ptr, ptr %p, align 8, !dbg !101 + %p2 = getelementptr inbounds nuw %struct._S, ptr %5, i32 0, i32 1, !dbg !102 + store ptr %call6, ptr %p2, align 8, !dbg !103 + %6 = load ptr, ptr %p, align 8, !dbg !104 + %p27 = getelementptr inbounds nuw %struct._S, ptr %6, i32 0, i32 1, !dbg !106 + %7 = load ptr, ptr %p27, align 8, !dbg !106 + %cmp8 = icmp eq ptr %7, null, !dbg !107 + br i1 %cmp8, label %if.then9, label %if.end15, !dbg !107 if.then9: ; preds = %if.end5 - %8 = load ptr, ptr %p, align 8, !dbg !111 - %p110 = getelementptr inbounds %struct._S, ptr %8, i32 0, i32 0, !dbg !114 - %9 = load ptr, ptr %p110, align 8, !dbg !114 - %cmp11 = icmp ne ptr %9, null, !dbg !115 - br i1 %cmp11, label %if.then12, label %if.end14, !dbg !116 + %8 = load ptr, ptr %p, align 8, !dbg !108 + %p110 = getelementptr inbounds nuw %struct._S, ptr %8, i32 0, i32 0, !dbg !111 + %9 = load ptr, ptr %p110, align 8, !dbg !111 + %cmp11 = icmp ne ptr %9, null, !dbg !112 + br i1 %cmp11, label %if.then12, label %if.end14, !dbg !112 if.then12: ; preds = %if.then9 - %10 = load ptr, ptr %p, align 8, !dbg !117 - %p113 = getelementptr inbounds %struct._S, ptr %10, i32 0, i32 0, !dbg !118 - %11 = load ptr, ptr %p113, align 8, !dbg !118 - call void @free(ptr noundef %11) #7, !dbg !119 - br label %if.end14, !dbg !119 + %10 = load ptr, ptr %p, align 8, !dbg !113 + %p113 = getelementptr inbounds nuw %struct._S, ptr %10, i32 0, i32 0, !dbg !114 + %11 = load ptr, ptr %p113, align 8, !dbg !114 + call void @free(ptr noundef %11) #5, !dbg !115 + br label %if.end14, !dbg !115 if.end14: ; preds = %if.then12, %if.then9 - %12 = load ptr, ptr %p, align 8, !dbg !120 - call void @free(ptr noundef %12) #7, !dbg !121 - store i32 -1, ptr %retval, align 4, !dbg !122 - br label %return, !dbg !122 + %12 = load ptr, ptr %p, align 8, !dbg !116 + call void @free(ptr noundef %12) #5, !dbg !117 + store i32 -1, ptr %retval, align 4, !dbg !118 + br label %return, !dbg !118 if.end15: ; preds = %if.end5 - %13 = load ptr, ptr %p, align 8, !dbg !123 - %p116 = getelementptr inbounds %struct._S, ptr %13, i32 0, i32 0, !dbg !124 - %14 = load ptr, ptr %p116, align 8, !dbg !124 - %arraydecay = getelementptr inbounds [10 x i8], ptr %str1, i64 0, i64 0, !dbg !125 - %call17 = call ptr @strcpy(ptr noundef %14, ptr noundef %arraydecay), !dbg !126 - %15 = load ptr, ptr %p, align 8, !dbg !127 - %p218 = getelementptr inbounds %struct._S, ptr %15, i32 0, i32 1, !dbg !128 - %16 = load ptr, ptr %p218, align 8, !dbg !128 - %arraydecay19 = getelementptr inbounds [10 x i8], ptr %str2, i64 0, i64 0, !dbg !129 - %call20 = call ptr @strcpy(ptr noundef %16, ptr noundef %arraydecay19), !dbg !130 - %17 = load ptr, ptr %p, align 8, !dbg !131 - %p121 = getelementptr inbounds %struct._S, ptr %17, i32 0, i32 0, !dbg !132 - %18 = load ptr, ptr %p121, align 8, !dbg !132 - call void @free(ptr noundef %18) #7, !dbg !133 - %19 = load ptr, ptr %p, align 8, !dbg !134 - call void @free(ptr noundef %19) #7, !dbg !135 - %20 = load i32, ptr %arg1.addr, align 4, !dbg !136 - store i32 %20, ptr %retval, align 4, !dbg !137 - br label %return, !dbg !137 + %13 = load ptr, ptr %p, align 8, !dbg !119 + %p116 = getelementptr inbounds nuw %struct._S, ptr %13, i32 0, i32 0, !dbg !120 + %14 = load ptr, ptr %p116, align 8, !dbg !120 + %arraydecay = getelementptr inbounds [10 x i8], ptr %str1, i64 0, i64 0, !dbg !121 + %call17 = call ptr @strcpy(ptr noundef %14, ptr noundef %arraydecay) #5, !dbg !122 + %15 = load ptr, ptr %p, align 8, !dbg !123 + %p218 = getelementptr inbounds nuw %struct._S, ptr %15, i32 0, i32 1, !dbg !124 + %16 = load ptr, ptr %p218, align 8, !dbg !124 + %arraydecay19 = getelementptr inbounds [10 x i8], ptr %str2, i64 0, i64 0, !dbg !125 + %call20 = call ptr @strcpy(ptr noundef %16, ptr noundef %arraydecay19) #5, !dbg !126 + %17 = load ptr, ptr %p, align 8, !dbg !127 + %p121 = getelementptr inbounds nuw %struct._S, ptr %17, i32 0, i32 0, !dbg !128 + %18 = load ptr, ptr %p121, align 8, !dbg !128 + call void @free(ptr noundef %18) #5, !dbg !129 + %19 = load ptr, ptr %p, align 8, !dbg !130 + call void @free(ptr noundef %19) #5, !dbg !131 + %20 = load i32, ptr %arg1.addr, align 4, !dbg !132 + store i32 %20, ptr %retval, align 4, !dbg !133 + br label %return, !dbg !133 return: ; preds = %if.end15, %if.end14, %if.then4, %if.then - %21 = load i32, ptr %retval, align 4, !dbg !138 - ret i32 %21, !dbg !138 + %21 = load i32, ptr %retval, align 4, !dbg !134 + ret i32 %21, !dbg !134 } ; 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 void @free(ptr noundef) #4 +declare void @free(ptr noundef) #3 -declare ptr @strcpy(ptr noundef, ptr noundef) #5 +; Function Attrs: nounwind +declare ptr @strcpy(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 = { 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 = { nounwind allocsize(0) } +attributes #5 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} !llvm.ident = !{!20} -!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/mem_leak/sp4a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "995e79e085d56ef9ae8bcdc33f6c4618") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp4a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "995e79e085d56ef9ae8bcdc33f6c4618") !2 = !{!3, !12, !9} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIDerivedType(tag: DW_TAG_typedef, name: "S", file: !5, line: 14, baseType: !6) -!5 = !DIFile(filename: "src/mem_leak/sp4a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "995e79e085d56ef9ae8bcdc33f6c4618") +!5 = !DIFile(filename: "src/mem_leak/sp4a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "995e79e085d56ef9ae8bcdc33f6c4618") !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_S", file: !5, line: 11, size: 128, elements: !7) !7 = !{!8, !11} !8 = !DIDerivedType(tag: DW_TAG_member, name: "p1", scope: !6, file: !5, line: 12, baseType: !9, size: 64) @@ -239,9 +235,9 @@ attributes #7 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!12, !25} !25 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -306,55 +302,51 @@ attributes #7 = { nounwind } !84 = !DILocation(line: 22, column: 6, scope: !85) !85 = distinct !DILexicalBlock(scope: !68, file: !5, line: 22, column: 6) !86 = !DILocation(line: 22, column: 8, scope: !85) -!87 = !DILocation(line: 22, column: 6, scope: !68) -!88 = !DILocation(line: 23, column: 3, scope: !85) -!89 = !DILocation(line: 25, column: 19, scope: !68) -!90 = !DILocation(line: 25, column: 2, scope: !68) -!91 = !DILocation(line: 25, column: 5, scope: !68) -!92 = !DILocation(line: 25, column: 8, scope: !68) -!93 = !DILocation(line: 26, column: 6, scope: !94) -!94 = distinct !DILexicalBlock(scope: !68, file: !5, line: 26, column: 6) -!95 = !DILocation(line: 26, column: 9, scope: !94) -!96 = !DILocation(line: 26, column: 12, scope: !94) -!97 = !DILocation(line: 26, column: 6, scope: !68) -!98 = !DILocation(line: 27, column: 8, scope: !99) -!99 = distinct !DILexicalBlock(scope: !94, file: !5, line: 26, column: 21) -!100 = !DILocation(line: 27, column: 3, scope: !99) -!101 = !DILocation(line: 28, column: 3, scope: !99) -!102 = !DILocation(line: 31, column: 19, scope: !68) -!103 = !DILocation(line: 31, column: 2, scope: !68) -!104 = !DILocation(line: 31, column: 5, scope: !68) -!105 = !DILocation(line: 31, column: 8, scope: !68) -!106 = !DILocation(line: 32, column: 6, scope: !107) -!107 = distinct !DILexicalBlock(scope: !68, file: !5, line: 32, column: 6) -!108 = !DILocation(line: 32, column: 9, scope: !107) -!109 = !DILocation(line: 32, column: 12, scope: !107) -!110 = !DILocation(line: 32, column: 6, scope: !68) -!111 = !DILocation(line: 33, column: 7, scope: !112) -!112 = distinct !DILexicalBlock(scope: !113, file: !5, line: 33, column: 7) -!113 = distinct !DILexicalBlock(scope: !107, file: !5, line: 32, column: 21) -!114 = !DILocation(line: 33, column: 10, scope: !112) -!115 = !DILocation(line: 33, column: 13, scope: !112) -!116 = !DILocation(line: 33, column: 7, scope: !113) -!117 = !DILocation(line: 34, column: 9, scope: !112) -!118 = !DILocation(line: 34, column: 12, scope: !112) -!119 = !DILocation(line: 34, column: 4, scope: !112) -!120 = !DILocation(line: 35, column: 8, scope: !113) -!121 = !DILocation(line: 35, column: 3, scope: !113) -!122 = !DILocation(line: 36, column: 3, scope: !113) -!123 = !DILocation(line: 39, column: 9, scope: !68) -!124 = !DILocation(line: 39, column: 12, scope: !68) -!125 = !DILocation(line: 39, column: 16, scope: !68) -!126 = !DILocation(line: 39, column: 2, scope: !68) -!127 = !DILocation(line: 40, column: 9, scope: !68) -!128 = !DILocation(line: 40, column: 12, scope: !68) -!129 = !DILocation(line: 40, column: 16, scope: !68) -!130 = !DILocation(line: 40, column: 2, scope: !68) -!131 = !DILocation(line: 42, column: 7, scope: !68) -!132 = !DILocation(line: 42, column: 10, scope: !68) -!133 = !DILocation(line: 42, column: 2, scope: !68) -!134 = !DILocation(line: 44, column: 7, scope: !68) -!135 = !DILocation(line: 44, column: 2, scope: !68) -!136 = !DILocation(line: 45, column: 9, scope: !68) -!137 = !DILocation(line: 45, column: 2, scope: !68) -!138 = !DILocation(line: 46, column: 1, scope: !68) +!87 = !DILocation(line: 23, column: 3, scope: !85) +!88 = !DILocation(line: 25, column: 19, scope: !68) +!89 = !DILocation(line: 25, column: 2, scope: !68) +!90 = !DILocation(line: 25, column: 5, scope: !68) +!91 = !DILocation(line: 25, column: 8, scope: !68) +!92 = !DILocation(line: 26, column: 6, scope: !93) +!93 = distinct !DILexicalBlock(scope: !68, file: !5, line: 26, column: 6) +!94 = !DILocation(line: 26, column: 9, scope: !93) +!95 = !DILocation(line: 26, column: 12, scope: !93) +!96 = !DILocation(line: 27, column: 8, scope: !97) +!97 = distinct !DILexicalBlock(scope: !93, file: !5, line: 26, column: 21) +!98 = !DILocation(line: 27, column: 3, scope: !97) +!99 = !DILocation(line: 28, column: 3, scope: !97) +!100 = !DILocation(line: 31, column: 19, scope: !68) +!101 = !DILocation(line: 31, column: 2, scope: !68) +!102 = !DILocation(line: 31, column: 5, scope: !68) +!103 = !DILocation(line: 31, column: 8, scope: !68) +!104 = !DILocation(line: 32, column: 6, scope: !105) +!105 = distinct !DILexicalBlock(scope: !68, file: !5, line: 32, column: 6) +!106 = !DILocation(line: 32, column: 9, scope: !105) +!107 = !DILocation(line: 32, column: 12, scope: !105) +!108 = !DILocation(line: 33, column: 7, scope: !109) +!109 = distinct !DILexicalBlock(scope: !110, file: !5, line: 33, column: 7) +!110 = distinct !DILexicalBlock(scope: !105, file: !5, line: 32, column: 21) +!111 = !DILocation(line: 33, column: 10, scope: !109) +!112 = !DILocation(line: 33, column: 13, scope: !109) +!113 = !DILocation(line: 34, column: 9, scope: !109) +!114 = !DILocation(line: 34, column: 12, scope: !109) +!115 = !DILocation(line: 34, column: 4, scope: !109) +!116 = !DILocation(line: 35, column: 8, scope: !110) +!117 = !DILocation(line: 35, column: 3, scope: !110) +!118 = !DILocation(line: 36, column: 3, scope: !110) +!119 = !DILocation(line: 39, column: 9, scope: !68) +!120 = !DILocation(line: 39, column: 12, scope: !68) +!121 = !DILocation(line: 39, column: 16, scope: !68) +!122 = !DILocation(line: 39, column: 2, scope: !68) +!123 = !DILocation(line: 40, column: 9, scope: !68) +!124 = !DILocation(line: 40, column: 12, scope: !68) +!125 = !DILocation(line: 40, column: 16, scope: !68) +!126 = !DILocation(line: 40, column: 2, scope: !68) +!127 = !DILocation(line: 42, column: 7, scope: !68) +!128 = !DILocation(line: 42, column: 10, scope: !68) +!129 = !DILocation(line: 42, column: 2, scope: !68) +!130 = !DILocation(line: 44, column: 7, scope: !68) +!131 = !DILocation(line: 44, column: 2, scope: !68) +!132 = !DILocation(line: 45, column: 9, scope: !68) +!133 = !DILocation(line: 45, column: 2, scope: !68) +!134 = !DILocation(line: 46, column: 1, scope: !68) diff --git a/test_cases_bc/mem_leak/sp5.c.bc b/test_cases_bc/mem_leak/sp5.c.bc index e685dbe92..ecf843dcf 100644 --- a/test_cases_bc/mem_leak/sp5.c.bc +++ b/test_cases_bc/mem_leak/sp5.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp5.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !13 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !20, metadata !DIExpression()), !dbg !21 + #dbg_declare(ptr %n.addr, !20, !DIExpression(), !21) %0 = load i32, ptr %n.addr, align 4, !dbg !22 %conv = sext i32 %0 to i64, !dbg !22 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !23 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !23 ret ptr %call, !dbg !24 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !25 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !29 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !29 ret ptr %call, !dbg !30 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !35 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !35 ret ptr %call, !dbg !36 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !41 ret ptr %call, !dbg !42 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !47 ret ptr %call, !dbg !48 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !53 ret ptr %call, !dbg !54 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !59 ret ptr %call, !dbg !60 } @@ -98,14 +95,14 @@ define dso_local i32 @f(ptr noundef %p) #0 !dbg !61 { 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 !65, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %p.addr, !65, !DIExpression(), !66) %0 = load ptr, ptr %p.addr, align 8, !dbg !67 - call void @free(ptr noundef %0) #5, !dbg !68 + call void @free(ptr noundef %0) #4, !dbg !68 ret i32 0, !dbg !69 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main(i32 noundef %arg1) #0 !dbg !70 { @@ -115,44 +112,43 @@ entry: %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %p, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %arg1.addr, !73, !DIExpression(), !74) + #dbg_declare(ptr %p, !75, !DIExpression(), !76) %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !77 store ptr %call, ptr %p, align 8, !dbg !78 %0 = load i32, ptr %arg1.addr, align 4, !dbg !79 %tobool = icmp ne i32 %0, 0, !dbg !79 - br i1 %tobool, label %if.then, label %if.else, !dbg !81 + br i1 %tobool, label %if.then, label %if.else, !dbg !79 if.then: ; preds = %entry - %1 = load ptr, ptr %p, align 8, !dbg !82 - %call1 = call i32 @f(ptr noundef %1), !dbg !84 - store i32 -1, ptr %retval, align 4, !dbg !85 - br label %return, !dbg !85 + %1 = load ptr, ptr %p, align 8, !dbg !81 + %call1 = call i32 @f(ptr noundef %1), !dbg !83 + store i32 -1, ptr %retval, align 4, !dbg !84 + br label %return, !dbg !84 if.else: ; preds = %entry - %2 = load ptr, ptr %p, align 8, !dbg !86 - %call2 = call i32 @f(ptr noundef %2), !dbg !88 - store i32 1, ptr %retval, align 4, !dbg !89 - br label %return, !dbg !89 + %2 = load ptr, ptr %p, align 8, !dbg !85 + %call2 = call i32 @f(ptr noundef %2), !dbg !87 + store i32 1, ptr %retval, align 4, !dbg !88 + br label %return, !dbg !88 return: ; preds = %if.else, %if.then - %3 = load i32, ptr %retval, align 4, !dbg !90 - ret i32 %3, !dbg !90 + %3 = load i32, ptr %retval, align 4, !dbg !89 + ret i32 %3, !dbg !89 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +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/mem_leak/sp5.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bbdcb8461540a9e09581b2e00cfd64b3") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp5.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "bbdcb8461540a9e09581b2e00cfd64b3") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) @@ -163,9 +159,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !13 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !14, file: !14, line: 5, type: !15, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!14 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!14 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !15 = !DISubroutineType(types: !16) !16 = !{!17, !18} !17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -213,7 +209,7 @@ attributes #5 = { nounwind } !59 = !DILocation(line: 30, column: 10, scope: !55) !60 = !DILocation(line: 30, column: 3, scope: !55) !61 = distinct !DISubprogram(name: "f", scope: !62, file: !62, line: 10, type: !63, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!62 = !DIFile(filename: "src/mem_leak/sp5.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bbdcb8461540a9e09581b2e00cfd64b3") +!62 = !DIFile(filename: "src/mem_leak/sp5.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "bbdcb8461540a9e09581b2e00cfd64b3") !63 = !DISubroutineType(types: !64) !64 = !{!18, !3} !65 = !DILocalVariable(name: "p", arg: 1, scope: !61, file: !62, line: 10, type: !3) @@ -232,13 +228,12 @@ attributes #5 = { nounwind } !78 = !DILocation(line: 19, column: 7, scope: !70) !79 = !DILocation(line: 21, column: 9, scope: !80) !80 = distinct !DILexicalBlock(scope: !70, file: !62, line: 21, column: 9) -!81 = !DILocation(line: 21, column: 9, scope: !70) -!82 = !DILocation(line: 22, column: 11, scope: !83) -!83 = distinct !DILexicalBlock(scope: !80, file: !62, line: 21, column: 15) -!84 = !DILocation(line: 22, column: 9, scope: !83) -!85 = !DILocation(line: 23, column: 9, scope: !83) -!86 = !DILocation(line: 26, column: 11, scope: !87) -!87 = distinct !DILexicalBlock(scope: !80, file: !62, line: 25, column: 9) -!88 = !DILocation(line: 26, column: 9, scope: !87) -!89 = !DILocation(line: 27, column: 9, scope: !87) -!90 = !DILocation(line: 29, column: 1, scope: !70) +!81 = !DILocation(line: 22, column: 11, scope: !82) +!82 = distinct !DILexicalBlock(scope: !80, file: !62, line: 21, column: 15) +!83 = !DILocation(line: 22, column: 9, scope: !82) +!84 = !DILocation(line: 23, column: 9, scope: !82) +!85 = !DILocation(line: 26, column: 11, scope: !86) +!86 = distinct !DILexicalBlock(scope: !80, file: !62, line: 25, column: 9) +!87 = !DILocation(line: 26, column: 9, scope: !86) +!88 = !DILocation(line: 27, column: 9, scope: !86) +!89 = !DILocation(line: 29, column: 1, scope: !70) diff --git a/test_cases_bc/mem_leak/sp5a.c.bc b/test_cases_bc/mem_leak/sp5a.c.bc index 15a53527d..448941e78 100644 --- a/test_cases_bc/mem_leak/sp5a.c.bc +++ b/test_cases_bc/mem_leak/sp5a.c.bc @@ -1,35 +1,32 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp5a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp5a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp5a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp5a.c" +target datalayout = "e-m:e-p270:32:32-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 @SAFEMALLOC(i32 noundef %n) #0 !dbg !13 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !20, metadata !DIExpression()), !dbg !21 + #dbg_declare(ptr %n.addr, !20, !DIExpression(), !21) %0 = load i32, ptr %n.addr, align 4, !dbg !22 %conv = sext i32 %0 to i64, !dbg !22 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !23 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !23 ret ptr %call, !dbg !24 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !25 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !26, metadata !DIExpression()), !dbg !27 + #dbg_declare(ptr %n.addr, !26, !DIExpression(), !27) %0 = load i32, ptr %n.addr, align 4, !dbg !28 %conv = sext i32 %0 to i64, !dbg !28 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !29 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !29 ret ptr %call, !dbg !30 } @@ -38,10 +35,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !31 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !32, metadata !DIExpression()), !dbg !33 + #dbg_declare(ptr %n.addr, !32, !DIExpression(), !33) %0 = load i32, ptr %n.addr, align 4, !dbg !34 %conv = sext i32 %0 to i64, !dbg !34 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !35 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !35 ret ptr %call, !dbg !36 } @@ -50,10 +47,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !37 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !38, metadata !DIExpression()), !dbg !39 + #dbg_declare(ptr %n.addr, !38, !DIExpression(), !39) %0 = load i32, ptr %n.addr, align 4, !dbg !40 %conv = sext i32 %0 to i64, !dbg !40 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !41 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !41 ret ptr %call, !dbg !42 } @@ -62,10 +59,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !43 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !44, metadata !DIExpression()), !dbg !45 + #dbg_declare(ptr %n.addr, !44, !DIExpression(), !45) %0 = load i32, ptr %n.addr, align 4, !dbg !46 %conv = sext i32 %0 to i64, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !47 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !47 ret ptr %call, !dbg !48 } @@ -74,10 +71,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !49 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !50, metadata !DIExpression()), !dbg !51 + #dbg_declare(ptr %n.addr, !50, !DIExpression(), !51) %0 = load i32, ptr %n.addr, align 4, !dbg !52 %conv = sext i32 %0 to i64, !dbg !52 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !53 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !53 ret ptr %call, !dbg !54 } @@ -86,10 +83,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !55 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !56, metadata !DIExpression()), !dbg !57 + #dbg_declare(ptr %n.addr, !56, !DIExpression(), !57) %0 = load i32, ptr %n.addr, align 4, !dbg !58 %conv = sext i32 %0 to i64, !dbg !58 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !59 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !59 ret ptr %call, !dbg !60 } @@ -98,14 +95,14 @@ define dso_local i32 @f(ptr noundef %p) #0 !dbg !61 { 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 !65, metadata !DIExpression()), !dbg !66 + #dbg_declare(ptr %p.addr, !65, !DIExpression(), !66) %0 = load ptr, ptr %p.addr, align 8, !dbg !67 - call void @free(ptr noundef %0) #5, !dbg !68 + call void @free(ptr noundef %0) #4, !dbg !68 ret i32 0, !dbg !69 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main(i32 noundef %arg1) #0 !dbg !70 { @@ -115,42 +112,41 @@ entry: %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %p, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %arg1.addr, !73, !DIExpression(), !74) + #dbg_declare(ptr %p, !75, !DIExpression(), !76) %call = call ptr @PLKMALLOC(i32 noundef 10), !dbg !77 store ptr %call, ptr %p, align 8, !dbg !78 %0 = load i32, ptr %arg1.addr, align 4, !dbg !79 %tobool = icmp ne i32 %0, 0, !dbg !79 - br i1 %tobool, label %if.then, label %if.else, !dbg !81 + br i1 %tobool, label %if.then, label %if.else, !dbg !79 if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !82 - br label %return, !dbg !82 + store i32 -1, ptr %retval, align 4, !dbg !81 + br label %return, !dbg !81 if.else: ; preds = %entry - %1 = load ptr, ptr %p, align 8, !dbg !84 - %call1 = call i32 @f(ptr noundef %1), !dbg !86 - store i32 1, ptr %retval, align 4, !dbg !87 - br label %return, !dbg !87 + %1 = load ptr, ptr %p, align 8, !dbg !83 + %call1 = call i32 @f(ptr noundef %1), !dbg !85 + store i32 1, ptr %retval, align 4, !dbg !86 + br label %return, !dbg !86 return: ; preds = %if.else, %if.then - %2 = load i32, ptr %retval, align 4, !dbg !88 - ret i32 %2, !dbg !88 + %2 = load i32, ptr %retval, align 4, !dbg !87 + ret i32 %2, !dbg !87 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +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/mem_leak/sp5a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2f2542e0bfae689c116bea0026631643") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp5a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "2f2542e0bfae689c116bea0026631643") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) !4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) @@ -161,9 +157,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !13 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !14, file: !14, line: 5, type: !15, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!14 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!14 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !15 = !DISubroutineType(types: !16) !16 = !{!17, !18} !17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -211,7 +207,7 @@ attributes #5 = { nounwind } !59 = !DILocation(line: 30, column: 10, scope: !55) !60 = !DILocation(line: 30, column: 3, scope: !55) !61 = distinct !DISubprogram(name: "f", scope: !62, file: !62, line: 10, type: !63, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!62 = !DIFile(filename: "src/mem_leak/sp5a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2f2542e0bfae689c116bea0026631643") +!62 = !DIFile(filename: "src/mem_leak/sp5a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "2f2542e0bfae689c116bea0026631643") !63 = !DISubroutineType(types: !64) !64 = !{!18, !3} !65 = !DILocalVariable(name: "p", arg: 1, scope: !61, file: !62, line: 10, type: !3) @@ -230,11 +226,10 @@ attributes #5 = { nounwind } !78 = !DILocation(line: 17, column: 4, scope: !70) !79 = !DILocation(line: 19, column: 6, scope: !80) !80 = distinct !DILexicalBlock(scope: !70, file: !62, line: 19, column: 6) -!81 = !DILocation(line: 19, column: 6, scope: !70) -!82 = !DILocation(line: 21, column: 3, scope: !83) -!83 = distinct !DILexicalBlock(scope: !80, file: !62, line: 19, column: 12) -!84 = !DILocation(line: 23, column: 5, scope: !85) -!85 = distinct !DILexicalBlock(scope: !80, file: !62, line: 22, column: 9) -!86 = !DILocation(line: 23, column: 3, scope: !85) -!87 = !DILocation(line: 24, column: 3, scope: !85) -!88 = !DILocation(line: 26, column: 1, scope: !70) +!81 = !DILocation(line: 21, column: 3, scope: !82) +!82 = distinct !DILexicalBlock(scope: !80, file: !62, line: 19, column: 12) +!83 = !DILocation(line: 23, column: 5, scope: !84) +!84 = distinct !DILexicalBlock(scope: !80, file: !62, line: 22, column: 9) +!85 = !DILocation(line: 23, column: 3, scope: !84) +!86 = !DILocation(line: 24, column: 3, scope: !84) +!87 = !DILocation(line: 26, column: 1, scope: !70) diff --git a/test_cases_bc/mem_leak/sp6.c.bc b/test_cases_bc/mem_leak/sp6.c.bc index 4d68164cb..6f2fe8fba 100644 --- a/test_cases_bc/mem_leak/sp6.c.bc +++ b/test_cases_bc/mem_leak/sp6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp6.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !17 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !24, metadata !DIExpression()), !dbg !25 + #dbg_declare(ptr %n.addr, !24, !DIExpression(), !25) %0 = load i32, ptr %n.addr, align 4, !dbg !26 %conv = sext i32 %0 to i64, !dbg !26 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !27 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !27 ret ptr %call, !dbg !28 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !29 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !30, metadata !DIExpression()), !dbg !31 + #dbg_declare(ptr %n.addr, !30, !DIExpression(), !31) %0 = load i32, ptr %n.addr, align 4, !dbg !32 %conv = sext i32 %0 to i64, !dbg !32 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !33 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !33 ret ptr %call, !dbg !34 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !35 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !36, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %n.addr, !36, !DIExpression(), !37) %0 = load i32, ptr %n.addr, align 4, !dbg !38 %conv = sext i32 %0 to i64, !dbg !38 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !39 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !39 ret ptr %call, !dbg !40 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !41 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !42, metadata !DIExpression()), !dbg !43 + #dbg_declare(ptr %n.addr, !42, !DIExpression(), !43) %0 = load i32, ptr %n.addr, align 4, !dbg !44 %conv = sext i32 %0 to i64, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !45 ret ptr %call, !dbg !46 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !47 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !48, metadata !DIExpression()), !dbg !49 + #dbg_declare(ptr %n.addr, !48, !DIExpression(), !49) %0 = load i32, ptr %n.addr, align 4, !dbg !50 %conv = sext i32 %0 to i64, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !51 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !51 ret ptr %call, !dbg !52 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !53 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !54, metadata !DIExpression()), !dbg !55 + #dbg_declare(ptr %n.addr, !54, !DIExpression(), !55) %0 = load i32, ptr %n.addr, align 4, !dbg !56 %conv = sext i32 %0 to i64, !dbg !56 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !57 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !57 ret ptr %call, !dbg !58 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !59 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !60, metadata !DIExpression()), !dbg !61 + #dbg_declare(ptr %n.addr, !60, !DIExpression(), !61) %0 = load i32, ptr %n.addr, align 4, !dbg !62 %conv = sext i32 %0 to i64, !dbg !62 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !63 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !63 ret ptr %call, !dbg !64 } @@ -103,12 +100,12 @@ entry: %hd = alloca ptr, align 8 %p = alloca ptr, align 8 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !68, metadata !DIExpression()), !dbg !69 - call void @llvm.dbg.declare(metadata ptr %i, metadata !70, metadata !DIExpression()), !dbg !71 - call void @llvm.dbg.declare(metadata ptr %hd, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %n.addr, !68, !DIExpression(), !69) + #dbg_declare(ptr %i, !70, !DIExpression(), !71) + #dbg_declare(ptr %hd, !72, !DIExpression(), !73) %call = call ptr @SAFEMALLOC(i32 noundef 8), !dbg !74 store ptr %call, ptr %hd, align 8, !dbg !73 - call void @llvm.dbg.declare(metadata ptr %p, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %p, !75, !DIExpression(), !76) %0 = load ptr, ptr %hd, align 8, !dbg !77 store ptr %0, ptr %p, align 8, !dbg !76 %1 = load ptr, ptr %hd, align 8, !dbg !78 @@ -121,8 +118,8 @@ entry: %hd.addr = alloca ptr, align 8 %p = alloca ptr, align 8 store ptr %hd, ptr %hd.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %hd.addr, metadata !83, metadata !DIExpression()), !dbg !84 - call void @llvm.dbg.declare(metadata ptr %p, metadata !85, metadata !DIExpression()), !dbg !86 + #dbg_declare(ptr %hd.addr, !83, !DIExpression(), !84) + #dbg_declare(ptr %p, !85, !DIExpression(), !86) br label %while.cond, !dbg !87 while.cond: ; preds = %while.body, %entry @@ -132,11 +129,11 @@ while.cond: ; preds = %while.body, %entry while.body: ; preds = %while.cond %1 = load ptr, ptr %hd.addr, align 8, !dbg !90 - %next = getelementptr inbounds %struct._list, ptr %1, i32 0, i32 0, !dbg !92 + %next = getelementptr inbounds nuw %struct._list, ptr %1, i32 0, i32 0, !dbg !92 %2 = load ptr, ptr %next, align 8, !dbg !92 store ptr %2, ptr %p, align 8, !dbg !93 %3 = load ptr, ptr %hd.addr, align 8, !dbg !94 - call void @free(ptr noundef %3) #5, !dbg !95 + call void @free(ptr noundef %3) #4, !dbg !95 %4 = load ptr, ptr %p, align 8, !dbg !96 store ptr %4, ptr %hd.addr, align 8, !dbg !97 br label %while.cond, !dbg !87, !llvm.loop !98 @@ -146,13 +143,13 @@ while.end: ; preds = %while.cond } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @main() #0 !dbg !102 { entry: %l = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %l, metadata !105, metadata !DIExpression()), !dbg !106 + #dbg_declare(ptr %l, !105, !DIExpression(), !106) %call = call ptr @make_list(i32 noundef 10), !dbg !107 store ptr %call, ptr %l, align 8, !dbg !106 %0 = load ptr, ptr %l, align 8, !dbg !108 @@ -160,22 +157,21 @@ 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 = { 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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!9, !10, !11, !12, !13, !14, !15} !llvm.ident = !{!16} -!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/mem_leak/sp6.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "81f929b093558bbf1bdb845eb05dbb73") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp6.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "81f929b093558bbf1bdb845eb05dbb73") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_typedef, name: "list", file: !4, line: 13, baseType: !5) -!4 = !DIFile(filename: "src/mem_leak/sp6.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "81f929b093558bbf1bdb845eb05dbb73") +!4 = !DIFile(filename: "src/mem_leak/sp6.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "81f929b093558bbf1bdb845eb05dbb73") !5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64) !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_list", file: !4, line: 11, size: 64, elements: !7) !7 = !{!8} @@ -187,9 +183,9 @@ attributes #5 = { nounwind } !13 = !{i32 7, !"PIE Level", i32 2} !14 = !{i32 7, !"uwtable", i32 2} !15 = !{i32 7, !"frame-pointer", i32 2} -!16 = !{!"clang version 16.0.0"} +!16 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !17 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !18, file: !18, line: 5, type: !19, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !23) -!18 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!18 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !19 = !DISubroutineType(types: !20) !20 = !{!21, !22} !21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/sp6a.c.bc b/test_cases_bc/mem_leak/sp6a.c.bc index 0c887b429..9a4abd6fb 100644 --- a/test_cases_bc/mem_leak/sp6a.c.bc +++ b/test_cases_bc/mem_leak/sp6a.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp6a.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp6a.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp6a.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp6a.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !17 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !24, metadata !DIExpression()), !dbg !25 + #dbg_declare(ptr %n.addr, !24, !DIExpression(), !25) %0 = load i32, ptr %n.addr, align 4, !dbg !26 %conv = sext i32 %0 to i64, !dbg !26 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !27 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !27 ret ptr %call, !dbg !28 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !29 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !30, metadata !DIExpression()), !dbg !31 + #dbg_declare(ptr %n.addr, !30, !DIExpression(), !31) %0 = load i32, ptr %n.addr, align 4, !dbg !32 %conv = sext i32 %0 to i64, !dbg !32 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !33 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !33 ret ptr %call, !dbg !34 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !35 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !36, metadata !DIExpression()), !dbg !37 + #dbg_declare(ptr %n.addr, !36, !DIExpression(), !37) %0 = load i32, ptr %n.addr, align 4, !dbg !38 %conv = sext i32 %0 to i64, !dbg !38 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !39 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !39 ret ptr %call, !dbg !40 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !41 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !42, metadata !DIExpression()), !dbg !43 + #dbg_declare(ptr %n.addr, !42, !DIExpression(), !43) %0 = load i32, ptr %n.addr, align 4, !dbg !44 %conv = sext i32 %0 to i64, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !45 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !45 ret ptr %call, !dbg !46 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !47 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !48, metadata !DIExpression()), !dbg !49 + #dbg_declare(ptr %n.addr, !48, !DIExpression(), !49) %0 = load i32, ptr %n.addr, align 4, !dbg !50 %conv = sext i32 %0 to i64, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !51 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !51 ret ptr %call, !dbg !52 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !53 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !54, metadata !DIExpression()), !dbg !55 + #dbg_declare(ptr %n.addr, !54, !DIExpression(), !55) %0 = load i32, ptr %n.addr, align 4, !dbg !56 %conv = sext i32 %0 to i64, !dbg !56 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !57 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !57 ret ptr %call, !dbg !58 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !59 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !60, metadata !DIExpression()), !dbg !61 + #dbg_declare(ptr %n.addr, !60, !DIExpression(), !61) %0 = load i32, ptr %n.addr, align 4, !dbg !62 %conv = sext i32 %0 to i64, !dbg !62 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !63 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !63 ret ptr %call, !dbg !64 } @@ -103,12 +100,12 @@ entry: %hd = alloca ptr, align 8 %p = alloca ptr, align 8 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !68, metadata !DIExpression()), !dbg !69 - call void @llvm.dbg.declare(metadata ptr %i, metadata !70, metadata !DIExpression()), !dbg !71 - call void @llvm.dbg.declare(metadata ptr %hd, metadata !72, metadata !DIExpression()), !dbg !73 + #dbg_declare(ptr %n.addr, !68, !DIExpression(), !69) + #dbg_declare(ptr %i, !70, !DIExpression(), !71) + #dbg_declare(ptr %hd, !72, !DIExpression(), !73) %call = call ptr @SAFEMALLOC(i32 noundef 8), !dbg !74 store ptr %call, ptr %hd, align 8, !dbg !73 - call void @llvm.dbg.declare(metadata ptr %p, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %p, !75, !DIExpression(), !76) %0 = load ptr, ptr %hd, align 8, !dbg !77 store ptr %0, ptr %p, align 8, !dbg !76 store i32 0, ptr %i, align 4, !dbg !78 @@ -123,10 +120,10 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond %call1 = call ptr @NFRMALLOC(i32 noundef 8), !dbg !86 %3 = load ptr, ptr %p, align 8, !dbg !88 - %next = getelementptr inbounds %struct._list, ptr %3, i32 0, i32 0, !dbg !89 + %next = getelementptr inbounds nuw %struct._list, ptr %3, i32 0, i32 0, !dbg !89 store ptr %call1, ptr %next, align 8, !dbg !90 %4 = load ptr, ptr %p, align 8, !dbg !91 - %next2 = getelementptr inbounds %struct._list, ptr %4, i32 0, i32 0, !dbg !92 + %next2 = getelementptr inbounds nuw %struct._list, ptr %4, i32 0, i32 0, !dbg !92 %5 = load ptr, ptr %next2, align 8, !dbg !92 store ptr %5, ptr %p, align 8, !dbg !93 br label %for.inc, !dbg !94 @@ -139,7 +136,7 @@ for.inc: ; preds = %for.body for.end: ; preds = %for.cond %7 = load ptr, ptr %p, align 8, !dbg !100 - %next3 = getelementptr inbounds %struct._list, ptr %7, i32 0, i32 0, !dbg !101 + %next3 = getelementptr inbounds nuw %struct._list, ptr %7, i32 0, i32 0, !dbg !101 store ptr null, ptr %next3, align 8, !dbg !102 %8 = load ptr, ptr %hd, align 8, !dbg !103 ret ptr %8, !dbg !104 @@ -150,20 +147,20 @@ define dso_local void @free_list(ptr noundef %hd) #0 !dbg !105 { entry: %hd.addr = alloca ptr, align 8 store ptr %hd, ptr %hd.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %hd.addr, metadata !108, metadata !DIExpression()), !dbg !109 + #dbg_declare(ptr %hd.addr, !108, !DIExpression(), !109) %0 = load ptr, ptr %hd.addr, align 8, !dbg !110 - call void @free(ptr noundef %0) #5, !dbg !111 + call void @free(ptr noundef %0) #4, !dbg !111 ret void, !dbg !112 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @main() #0 !dbg !113 { entry: %l = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %l, metadata !116, metadata !DIExpression()), !dbg !117 + #dbg_declare(ptr %l, !116, !DIExpression(), !117) %call = call ptr @make_list(i32 noundef 10), !dbg !118 store ptr %call, ptr %l, align 8, !dbg !117 %0 = load ptr, ptr %l, align 8, !dbg !119 @@ -171,22 +168,21 @@ entry: ret void, !dbg !121 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!9, !10, !11, !12, !13, !14, !15} !llvm.ident = !{!16} -!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/mem_leak/sp6a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0e1f48573e137e0a7d7a7b3c4bfca2eb") +!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) +!1 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp6a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "0e1f48573e137e0a7d7a7b3c4bfca2eb") !2 = !{!3} !3 = !DIDerivedType(tag: DW_TAG_typedef, name: "list", file: !4, line: 13, baseType: !5) -!4 = !DIFile(filename: "src/mem_leak/sp6a.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0e1f48573e137e0a7d7a7b3c4bfca2eb") +!4 = !DIFile(filename: "src/mem_leak/sp6a.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "0e1f48573e137e0a7d7a7b3c4bfca2eb") !5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64) !6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_list", file: !4, line: 11, size: 64, elements: !7) !7 = !{!8} @@ -198,9 +194,9 @@ attributes #5 = { nounwind } !13 = !{i32 7, !"PIE Level", i32 2} !14 = !{i32 7, !"uwtable", i32 2} !15 = !{i32 7, !"frame-pointer", i32 2} -!16 = !{!"clang version 16.0.0"} +!16 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !17 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !18, file: !18, line: 5, type: !19, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !23) -!18 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!18 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !19 = !DISubroutineType(types: !20) !20 = !{!21, !22} !21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) diff --git a/test_cases_bc/mem_leak/sp7.c.bc b/test_cases_bc/mem_leak/sp7.c.bc index b345e956a..fb81ce6f3 100644 --- a/test_cases_bc/mem_leak/sp7.c.bc +++ b/test_cases_bc/mem_leak/sp7.c.bc @@ -1,37 +1,34 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp7.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @G = dso_local global ptr null, align 8, !dbg !0 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !17 { +define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !18 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !23, metadata !DIExpression()), !dbg !24 + #dbg_declare(ptr %n.addr, !23, !DIExpression(), !24) %0 = load i32, ptr %n.addr, align 4, !dbg !25 %conv = sext i32 %0 to i64, !dbg !25 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !26 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !26 ret ptr %call, !dbg !27 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !28 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !29, metadata !DIExpression()), !dbg !30 + #dbg_declare(ptr %n.addr, !29, !DIExpression(), !30) %0 = load i32, ptr %n.addr, align 4, !dbg !31 %conv = sext i32 %0 to i64, !dbg !31 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !32 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !32 ret ptr %call, !dbg !33 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !34 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !35, metadata !DIExpression()), !dbg !36 + #dbg_declare(ptr %n.addr, !35, !DIExpression(), !36) %0 = load i32, ptr %n.addr, align 4, !dbg !37 %conv = sext i32 %0 to i64, !dbg !37 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !38 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !38 ret ptr %call, !dbg !39 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !40 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !41, metadata !DIExpression()), !dbg !42 + #dbg_declare(ptr %n.addr, !41, !DIExpression(), !42) %0 = load i32, ptr %n.addr, align 4, !dbg !43 %conv = sext i32 %0 to i64, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !44 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !44 ret ptr %call, !dbg !45 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !46 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !47, metadata !DIExpression()), !dbg !48 + #dbg_declare(ptr %n.addr, !47, !DIExpression(), !48) %0 = load i32, ptr %n.addr, align 4, !dbg !49 %conv = sext i32 %0 to i64, !dbg !49 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !50 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !50 ret ptr %call, !dbg !51 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !52 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !53, metadata !DIExpression()), !dbg !54 + #dbg_declare(ptr %n.addr, !53, !DIExpression(), !54) %0 = load i32, ptr %n.addr, align 4, !dbg !55 %conv = sext i32 %0 to i64, !dbg !55 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !56 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !56 ret ptr %call, !dbg !57 } @@ -88,147 +85,147 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !58 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !59, metadata !DIExpression()), !dbg !60 + #dbg_declare(ptr %n.addr, !59, !DIExpression(), !60) %0 = load i32, ptr %n.addr, align 4, !dbg !61 %conv = sext i32 %0 to i64, !dbg !61 - %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !62 + %call = call noalias ptr @malloc(i64 noundef %conv) #2, !dbg !62 ret ptr %call, !dbg !63 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @make_global() #0 !dbg !64 { entry: - ret ptr @G, !dbg !66 + ret ptr @G, !dbg !67 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @ResourceLeak_TC07(ptr noundef %p) #0 !dbg !67 { +define dso_local i32 @ResourceLeak_TC07(ptr noundef %p) #0 !dbg !68 { entry: %retval = alloca i32, align 4 %p.addr = alloca ptr, align 8 %gp = alloca ptr, align 8 store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !70, metadata !DIExpression()), !dbg !71 - call void @llvm.dbg.declare(metadata ptr %gp, metadata !72, metadata !DIExpression()), !dbg !74 - %call = call ptr @make_global(), !dbg !75 - store ptr %call, ptr %gp, align 8, !dbg !74 - %0 = load ptr, ptr %p.addr, align 8, !dbg !76 - %1 = load ptr, ptr %gp, align 8, !dbg !77 - store ptr %0, ptr %1, align 8, !dbg !78 - %2 = load i32, ptr %retval, align 4, !dbg !79 - ret i32 %2, !dbg !79 + #dbg_declare(ptr %p.addr, !71, !DIExpression(), !72) + #dbg_declare(ptr %gp, !73, !DIExpression(), !75) + %call = call ptr @make_global(), !dbg !76 + store ptr %call, ptr %gp, align 8, !dbg !75 + %0 = load ptr, ptr %p.addr, align 8, !dbg !77 + %1 = load ptr, ptr %gp, align 8, !dbg !78 + store ptr %0, ptr %1, align 8, !dbg !79 + %2 = load i32, ptr %retval, align 4, !dbg !80 + ret i32 %2, !dbg !80 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !80 { +define dso_local i32 @main() #0 !dbg !81 { entry: %retval = alloca i32, align 4 %p = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !83, metadata !DIExpression()), !dbg !84 - %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !85 - store ptr %call, ptr %p, align 8, !dbg !86 - %0 = load ptr, ptr %p, align 8, !dbg !87 - %call1 = call i32 @ResourceLeak_TC07(ptr noundef %0), !dbg !88 - ret i32 0, !dbg !89 + #dbg_declare(ptr %p, !84, !DIExpression(), !85) + %call = call ptr @SAFEMALLOC(i32 noundef 10), !dbg !86 + store ptr %call, ptr %p, align 8, !dbg !87 + %0 = load ptr, ptr %p, align 8, !dbg !88 + %call1 = call i32 @ResourceLeak_TC07(ptr noundef %0), !dbg !89 + ret i32 0, !dbg !90 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 allocsize(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"="+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.dbg.cu = !{!2} -!llvm.module.flags = !{!9, !10, !11, !12, !13, !14, !15} -!llvm.ident = !{!16} +!llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} +!llvm.ident = !{!17} !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "G", scope: !2, file: !8, line: 11, type: !5, 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, retainedTypes: !4, globals: !7, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp7.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c49999934a0ddd7b640107215a377423") -!4 = !{!5} -!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64) -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = !{!0} -!8 = !DIFile(filename: "src/mem_leak/sp7.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c49999934a0ddd7b640107215a377423") -!9 = !{i32 7, !"Dwarf Version", i32 5} -!10 = !{i32 2, !"Debug Info Version", i32 3} -!11 = !{i32 1, !"wchar_size", i32 4} -!12 = !{i32 8, !"PIC Level", i32 2} -!13 = !{i32 7, !"PIE Level", i32 2} -!14 = !{i32 7, !"uwtable", i32 2} -!15 = !{i32 7, !"frame-pointer", i32 2} -!16 = !{!"clang version 16.0.0"} -!17 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !18, file: !18, line: 5, type: !19, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!18 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") -!19 = !DISubroutineType(types: !20) -!20 = !{!21, !6} -!21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!1 = distinct !DIGlobalVariable(name: "G", scope: !2, file: !9, line: 11, type: !6, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !8, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp7.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "c49999934a0ddd7b640107215a377423") +!4 = !{!5, !6} +!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!6 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64) +!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!8 = !{!0} +!9 = !DIFile(filename: "src/mem_leak/sp7.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "c49999934a0ddd7b640107215a377423") +!10 = !{i32 7, !"Dwarf Version", i32 5} +!11 = !{i32 2, !"Debug Info Version", i32 3} +!12 = !{i32 1, !"wchar_size", i32 4} +!13 = !{i32 8, !"PIC Level", i32 2} +!14 = !{i32 7, !"PIE Level", i32 2} +!15 = !{i32 7, !"uwtable", i32 2} +!16 = !{i32 7, !"frame-pointer", i32 2} +!17 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} +!18 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !19, file: !19, line: 5, type: !20, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!19 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!20 = !DISubroutineType(types: !21) +!21 = !{!5, !7} !22 = !{} -!23 = !DILocalVariable(name: "n", arg: 1, scope: !17, file: !18, line: 5, type: !6) -!24 = !DILocation(line: 5, column: 22, scope: !17) -!25 = !DILocation(line: 6, column: 17, scope: !17) -!26 = !DILocation(line: 6, column: 10, scope: !17) -!27 = !DILocation(line: 6, column: 3, scope: !17) -!28 = distinct !DISubprogram(name: "PLKMALLOC", scope: !18, file: !18, line: 9, type: !19, scopeLine: 9, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!29 = !DILocalVariable(name: "n", arg: 1, scope: !28, file: !18, line: 9, type: !6) +!23 = !DILocalVariable(name: "n", arg: 1, scope: !18, file: !19, line: 5, type: !7) +!24 = !DILocation(line: 5, column: 22, scope: !18) +!25 = !DILocation(line: 6, column: 17, scope: !18) +!26 = !DILocation(line: 6, column: 10, scope: !18) +!27 = !DILocation(line: 6, column: 3, scope: !18) +!28 = distinct !DISubprogram(name: "PLKMALLOC", scope: !19, file: !19, line: 9, type: !20, scopeLine: 9, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!29 = !DILocalVariable(name: "n", arg: 1, scope: !28, file: !19, line: 9, type: !7) !30 = !DILocation(line: 9, column: 21, scope: !28) !31 = !DILocation(line: 10, column: 17, scope: !28) !32 = !DILocation(line: 10, column: 10, scope: !28) !33 = !DILocation(line: 10, column: 3, scope: !28) -!34 = distinct !DISubprogram(name: "NFRMALLOC", scope: !18, file: !18, line: 13, type: !19, scopeLine: 13, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!35 = !DILocalVariable(name: "n", arg: 1, scope: !34, file: !18, line: 13, type: !6) +!34 = distinct !DISubprogram(name: "NFRMALLOC", scope: !19, file: !19, line: 13, type: !20, scopeLine: 13, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!35 = !DILocalVariable(name: "n", arg: 1, scope: !34, file: !19, line: 13, type: !7) !36 = !DILocation(line: 13, column: 21, scope: !34) !37 = !DILocation(line: 14, column: 17, scope: !34) !38 = !DILocation(line: 14, column: 10, scope: !34) !39 = !DILocation(line: 14, column: 3, scope: !34) -!40 = distinct !DISubprogram(name: "CLKMALLOC", scope: !18, file: !18, line: 17, type: !19, scopeLine: 17, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!41 = !DILocalVariable(name: "n", arg: 1, scope: !40, file: !18, line: 17, type: !6) +!40 = distinct !DISubprogram(name: "CLKMALLOC", scope: !19, file: !19, line: 17, type: !20, scopeLine: 17, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!41 = !DILocalVariable(name: "n", arg: 1, scope: !40, file: !19, line: 17, type: !7) !42 = !DILocation(line: 17, column: 21, scope: !40) !43 = !DILocation(line: 18, column: 17, scope: !40) !44 = !DILocation(line: 18, column: 10, scope: !40) !45 = !DILocation(line: 18, column: 3, scope: !40) -!46 = distinct !DISubprogram(name: "NFRLEAKFP", scope: !18, file: !18, line: 21, type: !19, scopeLine: 21, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!47 = !DILocalVariable(name: "n", arg: 1, scope: !46, file: !18, line: 21, type: !6) +!46 = distinct !DISubprogram(name: "NFRLEAKFP", scope: !19, file: !19, line: 21, type: !20, scopeLine: 21, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!47 = !DILocalVariable(name: "n", arg: 1, scope: !46, file: !19, line: 21, type: !7) !48 = !DILocation(line: 21, column: 21, scope: !46) !49 = !DILocation(line: 22, column: 17, scope: !46) !50 = !DILocation(line: 22, column: 10, scope: !46) !51 = !DILocation(line: 22, column: 3, scope: !46) -!52 = distinct !DISubprogram(name: "PLKLEAKFP", scope: !18, file: !18, line: 25, type: !19, scopeLine: 25, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!53 = !DILocalVariable(name: "n", arg: 1, scope: !52, file: !18, line: 25, type: !6) +!52 = distinct !DISubprogram(name: "PLKLEAKFP", scope: !19, file: !19, line: 25, type: !20, scopeLine: 25, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!53 = !DILocalVariable(name: "n", arg: 1, scope: !52, file: !19, line: 25, type: !7) !54 = !DILocation(line: 25, column: 21, scope: !52) !55 = !DILocation(line: 26, column: 17, scope: !52) !56 = !DILocation(line: 26, column: 10, scope: !52) !57 = !DILocation(line: 26, column: 3, scope: !52) -!58 = distinct !DISubprogram(name: "LEAKFN", scope: !18, file: !18, line: 29, type: !19, scopeLine: 29, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!59 = !DILocalVariable(name: "n", arg: 1, scope: !58, file: !18, line: 29, type: !6) +!58 = distinct !DISubprogram(name: "LEAKFN", scope: !19, file: !19, line: 29, type: !20, scopeLine: 29, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!59 = !DILocalVariable(name: "n", arg: 1, scope: !58, file: !19, line: 29, type: !7) !60 = !DILocation(line: 29, column: 18, scope: !58) !61 = !DILocation(line: 30, column: 17, scope: !58) !62 = !DILocation(line: 30, column: 10, scope: !58) !63 = !DILocation(line: 30, column: 3, scope: !58) -!64 = distinct !DISubprogram(name: "make_global", scope: !8, file: !8, line: 13, type: !65, scopeLine: 13, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!65 = !DISubroutineType(types: !4) -!66 = !DILocation(line: 14, column: 4, scope: !64) -!67 = distinct !DISubprogram(name: "ResourceLeak_TC07", scope: !8, file: !8, line: 17, type: !68, scopeLine: 18, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!68 = !DISubroutineType(types: !69) -!69 = !{!6, !5} -!70 = !DILocalVariable(name: "p", arg: 1, scope: !67, file: !8, line: 17, type: !5) -!71 = !DILocation(line: 17, column: 29, scope: !67) -!72 = !DILocalVariable(name: "gp", scope: !67, file: !8, line: 19, type: !73) -!73 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !5, size: 64) -!74 = !DILocation(line: 19, column: 10, scope: !67) -!75 = !DILocation(line: 19, column: 15, scope: !67) -!76 = !DILocation(line: 20, column: 12, scope: !67) -!77 = !DILocation(line: 20, column: 7, scope: !67) -!78 = !DILocation(line: 20, column: 10, scope: !67) -!79 = !DILocation(line: 21, column: 1, scope: !67) -!80 = distinct !DISubprogram(name: "main", scope: !8, file: !8, line: 23, type: !81, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) -!81 = !DISubroutineType(types: !82) -!82 = !{!6} -!83 = !DILocalVariable(name: "p", scope: !80, file: !8, line: 25, type: !5) -!84 = !DILocation(line: 25, column: 9, scope: !80) -!85 = !DILocation(line: 26, column: 19, scope: !80) -!86 = !DILocation(line: 26, column: 9, scope: !80) -!87 = !DILocation(line: 27, column: 23, scope: !80) -!88 = !DILocation(line: 27, column: 4, scope: !80) -!89 = !DILocation(line: 28, column: 7, scope: !80) +!64 = distinct !DISubprogram(name: "make_global", scope: !9, file: !9, line: 13, type: !65, scopeLine: 13, spFlags: DISPFlagDefinition, unit: !2) +!65 = !DISubroutineType(types: !66) +!66 = !{!6} +!67 = !DILocation(line: 14, column: 4, scope: !64) +!68 = distinct !DISubprogram(name: "ResourceLeak_TC07", scope: !9, file: !9, line: 17, type: !69, scopeLine: 18, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!69 = !DISubroutineType(types: !70) +!70 = !{!7, !6} +!71 = !DILocalVariable(name: "p", arg: 1, scope: !68, file: !9, line: 17, type: !6) +!72 = !DILocation(line: 17, column: 29, scope: !68) +!73 = !DILocalVariable(name: "gp", scope: !68, file: !9, line: 19, type: !74) +!74 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64) +!75 = !DILocation(line: 19, column: 10, scope: !68) +!76 = !DILocation(line: 19, column: 15, scope: !68) +!77 = !DILocation(line: 20, column: 12, scope: !68) +!78 = !DILocation(line: 20, column: 7, scope: !68) +!79 = !DILocation(line: 20, column: 10, scope: !68) +!80 = !DILocation(line: 21, column: 1, scope: !68) +!81 = distinct !DISubprogram(name: "main", scope: !9, file: !9, line: 23, type: !82, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !22) +!82 = !DISubroutineType(types: !83) +!83 = !{!7} +!84 = !DILocalVariable(name: "p", scope: !81, file: !9, line: 25, type: !6) +!85 = !DILocation(line: 25, column: 9, scope: !81) +!86 = !DILocation(line: 26, column: 19, scope: !81) +!87 = !DILocation(line: 26, column: 9, scope: !81) +!88 = !DILocation(line: 27, column: 23, scope: !81) +!89 = !DILocation(line: 27, column: 4, scope: !81) +!90 = !DILocation(line: 28, column: 7, scope: !81) diff --git a/test_cases_bc/mem_leak/sp8.c.bc b/test_cases_bc/mem_leak/sp8.c.bc index 558098b65..fd3ddf6ef 100644 --- a/test_cases_bc/mem_leak/sp8.c.bc +++ b/test_cases_bc/mem_leak/sp8.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp8.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp8.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp8.c" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" @G = dso_local global i32 0, align 4, !dbg !0 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !15 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !21, metadata !DIExpression()), !dbg !22 + #dbg_declare(ptr %n.addr, !21, !DIExpression(), !22) %0 = load i32, ptr %n.addr, align 4, !dbg !23 %conv = sext i32 %0 to i64, !dbg !23 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !24 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !24 ret ptr %call, !dbg !25 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !26 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !30 ret ptr %call, !dbg !31 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !36 ret ptr %call, !dbg !37 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !42 ret ptr %call, !dbg !43 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !48 ret ptr %call, !dbg !49 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !54 ret ptr %call, !dbg !55 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #4, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #3, !dbg !60 ret ptr %call, !dbg !61 } @@ -100,110 +97,109 @@ define dso_local void @clear_conditioned() #0 !dbg !62 { entry: %buf1 = alloca ptr, align 8 %buf2 = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf1, metadata !65, metadata !DIExpression()), !dbg !68 - call void @llvm.dbg.declare(metadata ptr %buf2, metadata !69, metadata !DIExpression()), !dbg !70 + #dbg_declare(ptr %buf1, !65, !DIExpression(), !68) + #dbg_declare(ptr %buf2, !69, !DIExpression(), !70) %0 = load i32, ptr @G, align 4, !dbg !71 %tobool = icmp ne i32 %0, 0, !dbg !71 - br i1 %tobool, label %if.then, label %if.else, !dbg !73 + br i1 %tobool, label %if.then, label %if.else, !dbg !71 if.then: ; preds = %entry - %call = call ptr @PLKLEAKFP(i32 noundef 10), !dbg !74 - store ptr %call, ptr %buf1, align 8, !dbg !76 - br label %if.end, !dbg !77 + %call = call ptr @PLKLEAKFP(i32 noundef 10), !dbg !73 + store ptr %call, ptr %buf1, align 8, !dbg !75 + br label %if.end, !dbg !76 if.else: ; preds = %entry - %call1 = call ptr @PLKLEAKFP(i32 noundef 10), !dbg !78 - store ptr %call1, ptr %buf2, align 8, !dbg !80 + %call1 = call ptr @PLKLEAKFP(i32 noundef 10), !dbg !77 + store ptr %call1, ptr %buf2, align 8, !dbg !79 br label %if.end if.end: ; preds = %if.else, %if.then - %1 = load i32, ptr @G, align 4, !dbg !81 - %tobool2 = icmp ne i32 %1, 0, !dbg !81 - br i1 %tobool2, label %if.then3, label %if.else4, !dbg !83 + %1 = load i32, ptr @G, align 4, !dbg !80 + %tobool2 = icmp ne i32 %1, 0, !dbg !80 + br i1 %tobool2, label %if.then3, label %if.else4, !dbg !80 if.then3: ; preds = %if.end - %2 = load ptr, ptr %buf1, align 8, !dbg !84 - call void @free(ptr noundef %2) #5, !dbg !86 - br label %if.end5, !dbg !87 + %2 = load ptr, ptr %buf1, align 8, !dbg !82 + call void @free(ptr noundef %2) #4, !dbg !84 + br label %if.end5, !dbg !85 if.else4: ; preds = %if.end - %3 = load ptr, ptr %buf2, align 8, !dbg !88 - call void @free(ptr noundef %3) #5, !dbg !90 + %3 = load ptr, ptr %buf2, align 8, !dbg !86 + call void @free(ptr noundef %3) #4, !dbg !88 br label %if.end5 if.end5: ; preds = %if.else4, %if.then3 - ret void, !dbg !91 + ret void, !dbg !89 } ; Function Attrs: nounwind -declare void @free(ptr noundef) #3 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @unclear_conditioned(i32 noundef %arg1) #0 !dbg !92 { +define dso_local void @unclear_conditioned(i32 noundef %arg1) #0 !dbg !90 { entry: %arg1.addr = alloca i32, align 4 %buf1 = alloca ptr, align 8 %buf2 = alloca ptr, align 8 %i = alloca i32, align 4 store i32 %arg1, ptr %arg1.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %arg1.addr, metadata !95, metadata !DIExpression()), !dbg !96 - call void @llvm.dbg.declare(metadata ptr %buf1, metadata !97, metadata !DIExpression()), !dbg !98 - call void @llvm.dbg.declare(metadata ptr %buf2, metadata !99, metadata !DIExpression()), !dbg !100 - call void @llvm.dbg.declare(metadata ptr %i, metadata !101, metadata !DIExpression()), !dbg !102 - %0 = load i32, ptr %arg1.addr, align 4, !dbg !103 - %tobool = icmp ne i32 %0, 0, !dbg !103 - br i1 %tobool, label %if.then, label %if.else, !dbg !105 + #dbg_declare(ptr %arg1.addr, !93, !DIExpression(), !94) + #dbg_declare(ptr %buf1, !95, !DIExpression(), !96) + #dbg_declare(ptr %buf2, !97, !DIExpression(), !98) + #dbg_declare(ptr %i, !99, !DIExpression(), !100) + %0 = load i32, ptr %arg1.addr, align 4, !dbg !101 + %tobool = icmp ne i32 %0, 0, !dbg !101 + br i1 %tobool, label %if.then, label %if.else, !dbg !101 if.then: ; preds = %entry - %call = call ptr @PLKMALLOC(i32 noundef 10), !dbg !106 - store ptr %call, ptr %buf1, align 8, !dbg !108 - br label %if.end, !dbg !109 + %call = call ptr @PLKMALLOC(i32 noundef 10), !dbg !103 + store ptr %call, ptr %buf1, align 8, !dbg !105 + br label %if.end, !dbg !106 if.else: ; preds = %entry - %call1 = call ptr @PLKLEAKFP(i32 noundef 10), !dbg !110 - store ptr %call1, ptr %buf2, align 8, !dbg !112 + %call1 = call ptr @PLKLEAKFP(i32 noundef 10), !dbg !107 + store ptr %call1, ptr %buf2, align 8, !dbg !109 br label %if.end if.end: ; preds = %if.else, %if.then - %1 = load i32, ptr %arg1.addr, align 4, !dbg !113 - %sub = sub nsw i32 %1, 1, !dbg !114 - store i32 %sub, ptr %arg1.addr, align 4, !dbg !115 - %2 = load i32, ptr %arg1.addr, align 4, !dbg !116 - %add = add nsw i32 %2, 10, !dbg !117 - store i32 %add, ptr %arg1.addr, align 4, !dbg !118 - %3 = load i32, ptr %arg1.addr, align 4, !dbg !119 - %tobool2 = icmp ne i32 %3, 0, !dbg !119 - br i1 %tobool2, label %if.then3, label %if.else4, !dbg !121 + %1 = load i32, ptr %arg1.addr, align 4, !dbg !110 + %sub = sub nsw i32 %1, 1, !dbg !111 + store i32 %sub, ptr %arg1.addr, align 4, !dbg !112 + %2 = load i32, ptr %arg1.addr, align 4, !dbg !113 + %add = add nsw i32 %2, 10, !dbg !114 + store i32 %add, ptr %arg1.addr, align 4, !dbg !115 + %3 = load i32, ptr %arg1.addr, align 4, !dbg !116 + %tobool2 = icmp ne i32 %3, 0, !dbg !116 + br i1 %tobool2, label %if.then3, label %if.else4, !dbg !116 if.then3: ; preds = %if.end - %4 = load ptr, ptr %buf1, align 8, !dbg !122 - call void @free(ptr noundef %4) #5, !dbg !124 - br label %if.end5, !dbg !125 + %4 = load ptr, ptr %buf1, align 8, !dbg !118 + call void @free(ptr noundef %4) #4, !dbg !120 + br label %if.end5, !dbg !121 if.else4: ; preds = %if.end - %5 = load ptr, ptr %buf2, align 8, !dbg !126 - call void @free(ptr noundef %5) #5, !dbg !128 + %5 = load ptr, ptr %buf2, align 8, !dbg !122 + call void @free(ptr noundef %5) #4, !dbg !124 br label %if.end5 if.end5: ; preds = %if.else4, %if.then3 - ret void, !dbg !129 + ret void, !dbg !125 } ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !130 { +define dso_local i32 @main() #0 !dbg !126 { entry: - call void @clear_conditioned(), !dbg !133 - %0 = load i32, ptr @G, align 4, !dbg !134 - call void @unclear_conditioned(i32 noundef %0), !dbg !135 - ret i32 0, !dbg !136 + call void @clear_conditioned(), !dbg !129 + %0 = load i32, ptr @G, align 4, !dbg !130 + call void @unclear_conditioned(i32 noundef %0), !dbg !131 + ret i32 0, !dbg !132 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-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 "frame-pointer"="all" "no-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) } -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 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 "frame-pointer"="all" "no-trapping-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) } +attributes #4 = { nounwind } !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} @@ -211,10 +207,10 @@ attributes #5 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "G", scope: !2, file: !5, line: 11, 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/mem_leak/sp8.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cf868c78f83e52fe9481225509ee1a50") +!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) +!3 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp8.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "cf868c78f83e52fe9481225509ee1a50") !4 = !{!0} -!5 = !DIFile(filename: "src/mem_leak/sp8.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cf868c78f83e52fe9481225509ee1a50") +!5 = !DIFile(filename: "src/mem_leak/sp8.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "cf868c78f83e52fe9481225509ee1a50") !6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) !7 = !{i32 7, !"Dwarf Version", i32 5} !8 = !{i32 2, !"Debug Info Version", i32 3} @@ -223,9 +219,9 @@ attributes #5 = { nounwind } !11 = !{i32 7, !"PIE Level", i32 2} !12 = !{i32 7, !"uwtable", i32 2} !13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} +!14 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !15 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !16, file: !16, line: 5, type: !17, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) -!16 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!16 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !17 = !DISubroutineType(types: !18) !18 = !{!19, !6} !19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) @@ -282,67 +278,63 @@ attributes #5 = { nounwind } !70 = !DILocation(line: 13, column: 15, scope: !62) !71 = !DILocation(line: 15, column: 6, scope: !72) !72 = distinct !DILexicalBlock(scope: !62, file: !5, line: 15, column: 6) -!73 = !DILocation(line: 15, column: 6, scope: !62) -!74 = !DILocation(line: 16, column: 10, scope: !75) -!75 = distinct !DILexicalBlock(scope: !72, file: !5, line: 15, column: 9) -!76 = !DILocation(line: 16, column: 8, scope: !75) -!77 = !DILocation(line: 17, column: 2, scope: !75) -!78 = !DILocation(line: 18, column: 10, scope: !79) -!79 = distinct !DILexicalBlock(scope: !72, file: !5, line: 17, column: 9) -!80 = !DILocation(line: 18, column: 8, scope: !79) -!81 = !DILocation(line: 21, column: 6, scope: !82) -!82 = distinct !DILexicalBlock(scope: !62, file: !5, line: 21, column: 6) -!83 = !DILocation(line: 21, column: 6, scope: !62) -!84 = !DILocation(line: 22, column: 8, scope: !85) -!85 = distinct !DILexicalBlock(scope: !82, file: !5, line: 21, column: 9) -!86 = !DILocation(line: 22, column: 3, scope: !85) -!87 = !DILocation(line: 23, column: 2, scope: !85) -!88 = !DILocation(line: 24, column: 8, scope: !89) -!89 = distinct !DILexicalBlock(scope: !82, file: !5, line: 23, column: 9) -!90 = !DILocation(line: 24, column: 3, scope: !89) -!91 = !DILocation(line: 26, column: 1, scope: !62) -!92 = distinct !DISubprogram(name: "unclear_conditioned", scope: !5, file: !5, line: 29, type: !93, scopeLine: 29, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) -!93 = !DISubroutineType(types: !94) -!94 = !{null, !6} -!95 = !DILocalVariable(name: "arg1", arg: 1, scope: !92, file: !5, line: 29, type: !6) -!96 = !DILocation(line: 29, column: 30, scope: !92) -!97 = !DILocalVariable(name: "buf1", scope: !92, file: !5, line: 30, type: !66) -!98 = !DILocation(line: 30, column: 8, scope: !92) -!99 = !DILocalVariable(name: "buf2", scope: !92, file: !5, line: 30, type: !66) -!100 = !DILocation(line: 30, column: 15, scope: !92) -!101 = !DILocalVariable(name: "i", scope: !92, file: !5, line: 31, type: !6) -!102 = !DILocation(line: 31, column: 6, scope: !92) -!103 = !DILocation(line: 33, column: 6, scope: !104) -!104 = distinct !DILexicalBlock(scope: !92, file: !5, line: 33, column: 6) -!105 = !DILocation(line: 33, column: 6, scope: !92) -!106 = !DILocation(line: 34, column: 10, scope: !107) -!107 = distinct !DILexicalBlock(scope: !104, file: !5, line: 33, column: 12) -!108 = !DILocation(line: 34, column: 8, scope: !107) -!109 = !DILocation(line: 35, column: 2, scope: !107) -!110 = !DILocation(line: 36, column: 10, scope: !111) -!111 = distinct !DILexicalBlock(scope: !104, file: !5, line: 35, column: 9) -!112 = !DILocation(line: 36, column: 8, scope: !111) -!113 = !DILocation(line: 39, column: 9, scope: !92) -!114 = !DILocation(line: 39, column: 14, scope: !92) -!115 = !DILocation(line: 39, column: 7, scope: !92) -!116 = !DILocation(line: 41, column: 9, scope: !92) -!117 = !DILocation(line: 41, column: 14, scope: !92) -!118 = !DILocation(line: 41, column: 7, scope: !92) -!119 = !DILocation(line: 43, column: 6, scope: !120) -!120 = distinct !DILexicalBlock(scope: !92, file: !5, line: 43, column: 6) -!121 = !DILocation(line: 43, column: 6, scope: !92) -!122 = !DILocation(line: 44, column: 8, scope: !123) -!123 = distinct !DILexicalBlock(scope: !120, file: !5, line: 43, column: 12) -!124 = !DILocation(line: 44, column: 3, scope: !123) -!125 = !DILocation(line: 45, column: 2, scope: !123) -!126 = !DILocation(line: 46, column: 8, scope: !127) -!127 = distinct !DILexicalBlock(scope: !120, file: !5, line: 45, column: 9) -!128 = !DILocation(line: 46, column: 3, scope: !127) -!129 = !DILocation(line: 48, column: 1, scope: !92) -!130 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 50, type: !131, scopeLine: 50, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) -!131 = !DISubroutineType(types: !132) -!132 = !{!6} -!133 = !DILocation(line: 51, column: 2, scope: !130) -!134 = !DILocation(line: 52, column: 22, scope: !130) -!135 = !DILocation(line: 52, column: 2, scope: !130) -!136 = !DILocation(line: 53, column: 1, scope: !130) +!73 = !DILocation(line: 16, column: 10, scope: !74) +!74 = distinct !DILexicalBlock(scope: !72, file: !5, line: 15, column: 9) +!75 = !DILocation(line: 16, column: 8, scope: !74) +!76 = !DILocation(line: 17, column: 2, scope: !74) +!77 = !DILocation(line: 18, column: 10, scope: !78) +!78 = distinct !DILexicalBlock(scope: !72, file: !5, line: 17, column: 9) +!79 = !DILocation(line: 18, column: 8, scope: !78) +!80 = !DILocation(line: 21, column: 6, scope: !81) +!81 = distinct !DILexicalBlock(scope: !62, file: !5, line: 21, column: 6) +!82 = !DILocation(line: 22, column: 8, scope: !83) +!83 = distinct !DILexicalBlock(scope: !81, file: !5, line: 21, column: 9) +!84 = !DILocation(line: 22, column: 3, scope: !83) +!85 = !DILocation(line: 23, column: 2, scope: !83) +!86 = !DILocation(line: 24, column: 8, scope: !87) +!87 = distinct !DILexicalBlock(scope: !81, file: !5, line: 23, column: 9) +!88 = !DILocation(line: 24, column: 3, scope: !87) +!89 = !DILocation(line: 26, column: 1, scope: !62) +!90 = distinct !DISubprogram(name: "unclear_conditioned", scope: !5, file: !5, line: 29, type: !91, scopeLine: 29, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) +!91 = !DISubroutineType(types: !92) +!92 = !{null, !6} +!93 = !DILocalVariable(name: "arg1", arg: 1, scope: !90, file: !5, line: 29, type: !6) +!94 = !DILocation(line: 29, column: 30, scope: !90) +!95 = !DILocalVariable(name: "buf1", scope: !90, file: !5, line: 30, type: !66) +!96 = !DILocation(line: 30, column: 8, scope: !90) +!97 = !DILocalVariable(name: "buf2", scope: !90, file: !5, line: 30, type: !66) +!98 = !DILocation(line: 30, column: 15, scope: !90) +!99 = !DILocalVariable(name: "i", scope: !90, file: !5, line: 31, type: !6) +!100 = !DILocation(line: 31, column: 6, scope: !90) +!101 = !DILocation(line: 33, column: 6, scope: !102) +!102 = distinct !DILexicalBlock(scope: !90, file: !5, line: 33, column: 6) +!103 = !DILocation(line: 34, column: 10, scope: !104) +!104 = distinct !DILexicalBlock(scope: !102, file: !5, line: 33, column: 12) +!105 = !DILocation(line: 34, column: 8, scope: !104) +!106 = !DILocation(line: 35, column: 2, scope: !104) +!107 = !DILocation(line: 36, column: 10, scope: !108) +!108 = distinct !DILexicalBlock(scope: !102, file: !5, line: 35, column: 9) +!109 = !DILocation(line: 36, column: 8, scope: !108) +!110 = !DILocation(line: 39, column: 9, scope: !90) +!111 = !DILocation(line: 39, column: 14, scope: !90) +!112 = !DILocation(line: 39, column: 7, scope: !90) +!113 = !DILocation(line: 41, column: 9, scope: !90) +!114 = !DILocation(line: 41, column: 14, scope: !90) +!115 = !DILocation(line: 41, column: 7, scope: !90) +!116 = !DILocation(line: 43, column: 6, scope: !117) +!117 = distinct !DILexicalBlock(scope: !90, file: !5, line: 43, column: 6) +!118 = !DILocation(line: 44, column: 8, scope: !119) +!119 = distinct !DILexicalBlock(scope: !117, file: !5, line: 43, column: 12) +!120 = !DILocation(line: 44, column: 3, scope: !119) +!121 = !DILocation(line: 45, column: 2, scope: !119) +!122 = !DILocation(line: 46, column: 8, scope: !123) +!123 = distinct !DILexicalBlock(scope: !117, file: !5, line: 45, column: 9) +!124 = !DILocation(line: 46, column: 3, scope: !123) +!125 = !DILocation(line: 48, column: 1, scope: !90) +!126 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 50, type: !127, scopeLine: 50, spFlags: DISPFlagDefinition, unit: !2) +!127 = !DISubroutineType(types: !128) +!128 = !{!6} +!129 = !DILocation(line: 51, column: 2, scope: !126) +!130 = !DILocation(line: 52, column: 22, scope: !126) +!131 = !DILocation(line: 52, column: 2, scope: !126) +!132 = !DILocation(line: 53, column: 1, scope: !126) diff --git a/test_cases_bc/mem_leak/sp9.c.bc b/test_cases_bc/mem_leak/sp9.c.bc index fcb5e94fc..222383a98 100644 --- a/test_cases_bc/mem_leak/sp9.c.bc +++ b/test_cases_bc/mem_leak/sp9.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mem_leak/sp9.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp9.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mem_leak/sp9.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp9.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -10,28 +10,25 @@ define dso_local ptr @SAFEMALLOC(i32 noundef %n) #0 !dbg !21 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !27, metadata !DIExpression()), !dbg !28 + #dbg_declare(ptr %n.addr, !27, !DIExpression(), !28) %0 = load i32, ptr %n.addr, align 4, !dbg !29 %conv = sext i32 %0 to i64, !dbg !29 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !30 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !30 ret ptr %call, !dbg !31 } -; 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 dso_local ptr @PLKMALLOC(i32 noundef %n) #0 !dbg !32 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !33, metadata !DIExpression()), !dbg !34 + #dbg_declare(ptr %n.addr, !33, !DIExpression(), !34) %0 = load i32, ptr %n.addr, align 4, !dbg !35 %conv = sext i32 %0 to i64, !dbg !35 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !36 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !36 ret ptr %call, !dbg !37 } @@ -40,10 +37,10 @@ define dso_local ptr @NFRMALLOC(i32 noundef %n) #0 !dbg !38 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !39, metadata !DIExpression()), !dbg !40 + #dbg_declare(ptr %n.addr, !39, !DIExpression(), !40) %0 = load i32, ptr %n.addr, align 4, !dbg !41 %conv = sext i32 %0 to i64, !dbg !41 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !42 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !42 ret ptr %call, !dbg !43 } @@ -52,10 +49,10 @@ define dso_local ptr @CLKMALLOC(i32 noundef %n) #0 !dbg !44 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !45, metadata !DIExpression()), !dbg !46 + #dbg_declare(ptr %n.addr, !45, !DIExpression(), !46) %0 = load i32, ptr %n.addr, align 4, !dbg !47 %conv = sext i32 %0 to i64, !dbg !47 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !48 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !48 ret ptr %call, !dbg !49 } @@ -64,10 +61,10 @@ define dso_local ptr @NFRLEAKFP(i32 noundef %n) #0 !dbg !50 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !51, metadata !DIExpression()), !dbg !52 + #dbg_declare(ptr %n.addr, !51, !DIExpression(), !52) %0 = load i32, ptr %n.addr, align 4, !dbg !53 %conv = sext i32 %0 to i64, !dbg !53 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !54 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !54 ret ptr %call, !dbg !55 } @@ -76,10 +73,10 @@ define dso_local ptr @PLKLEAKFP(i32 noundef %n) #0 !dbg !56 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !57, metadata !DIExpression()), !dbg !58 + #dbg_declare(ptr %n.addr, !57, !DIExpression(), !58) %0 = load i32, ptr %n.addr, align 4, !dbg !59 %conv = sext i32 %0 to i64, !dbg !59 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !60 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !60 ret ptr %call, !dbg !61 } @@ -88,10 +85,10 @@ define dso_local ptr @LEAKFN(i32 noundef %n) #0 !dbg !62 { entry: %n.addr = alloca i32, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %n.addr, metadata !63, metadata !DIExpression()), !dbg !64 + #dbg_declare(ptr %n.addr, !63, !DIExpression(), !64) %0 = load i32, ptr %n.addr, align 4, !dbg !65 %conv = sext i32 %0 to i64, !dbg !65 - %call = call noalias ptr @malloc(i64 noundef %conv) #6, !dbg !66 + %call = call noalias ptr @malloc(i64 noundef %conv) #5, !dbg !66 ret ptr %call, !dbg !67 } @@ -105,13 +102,13 @@ entry: %r = alloca i32, align 4 %n = alloca i32, align 4 store ptr %s, ptr %s.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %s.addr, metadata !71, metadata !DIExpression()), !dbg !72 - call void @llvm.dbg.declare(metadata ptr %p, metadata !73, metadata !DIExpression()), !dbg !74 - call void @llvm.dbg.declare(metadata ptr %i, metadata !75, metadata !DIExpression()), !dbg !76 + #dbg_declare(ptr %s.addr, !71, !DIExpression(), !72) + #dbg_declare(ptr %p, !73, !DIExpression(), !74) + #dbg_declare(ptr %i, !75, !DIExpression(), !76) store i32 0, ptr %i, align 4, !dbg !76 - call void @llvm.dbg.declare(metadata ptr %j, metadata !77, metadata !DIExpression()), !dbg !78 - call void @llvm.dbg.declare(metadata ptr %r, metadata !79, metadata !DIExpression()), !dbg !80 - call void @llvm.dbg.declare(metadata ptr %n, metadata !81, metadata !DIExpression()), !dbg !82 + #dbg_declare(ptr %j, !77, !DIExpression(), !78) + #dbg_declare(ptr %r, !79, !DIExpression(), !80) + #dbg_declare(ptr %n, !81, !DIExpression(), !82) %0 = load ptr, ptr %s.addr, align 8, !dbg !83 %cmp = icmp eq ptr %0, null, !dbg !84 br i1 %cmp, label %cond.true, label %cond.false, !dbg !83 @@ -121,7 +118,7 @@ cond.true: ; preds = %entry cond.false: ; preds = %entry %1 = load ptr, ptr %s.addr, align 8, !dbg !85 - %call = call i64 @strlen(ptr noundef %1), !dbg !86 + %call = call i64 @strlen(ptr noundef %1) #6, !dbg !86 br label %cond.end, !dbg !83 cond.end: ; preds = %cond.false, %cond.true @@ -130,108 +127,109 @@ cond.end: ; preds = %cond.false, %cond.t store i32 %conv, ptr %n, align 4, !dbg !82 %2 = load i32, ptr %n, align 4, !dbg !88 %cmp1 = icmp sgt i32 %2, 0, !dbg !90 - br i1 %cmp1, label %if.then, label %if.else, !dbg !91 + br i1 %cmp1, label %if.then, label %if.else, !dbg !90 if.then: ; preds = %cond.end - %3 = load i32, ptr %n, align 4, !dbg !92 - %call3 = call ptr @PLKMALLOC(i32 noundef %3), !dbg !94 - store ptr %call3, ptr %p, align 8, !dbg !95 - store i32 0, ptr %r, align 4, !dbg !96 - br label %if.end, !dbg !97 + %3 = load i32, ptr %n, align 4, !dbg !91 + %call3 = call ptr @PLKMALLOC(i32 noundef %3), !dbg !93 + store ptr %call3, ptr %p, align 8, !dbg !94 + store i32 0, ptr %r, align 4, !dbg !95 + br label %if.end, !dbg !96 if.else: ; preds = %cond.end - store i32 -1, ptr %r, align 4, !dbg !98 + store i32 -1, ptr %r, align 4, !dbg !97 br label %if.end if.end: ; preds = %if.else, %if.then - br label %while.cond, !dbg !99 + br label %while.cond, !dbg !98 while.cond: ; preds = %if.end22, %if.end - %4 = load i32, ptr %i, align 4, !dbg !100 - %5 = load i32, ptr %n, align 4, !dbg !101 - %cmp4 = icmp slt i32 %4, %5, !dbg !102 - br i1 %cmp4, label %while.body, label %while.end24, !dbg !99 + %4 = load i32, ptr %i, align 4, !dbg !99 + %5 = load i32, ptr %n, align 4, !dbg !100 + %cmp4 = icmp slt i32 %4, %5, !dbg !101 + br i1 %cmp4, label %while.body, label %while.end24, !dbg !98 while.body: ; preds = %while.cond - store i32 0, ptr %j, align 4, !dbg !103 - br label %while.cond6, !dbg !105 + store i32 0, ptr %j, align 4, !dbg !102 + br label %while.cond6, !dbg !104 while.cond6: ; preds = %while.body10, %while.body - %6 = load ptr, ptr %s.addr, align 8, !dbg !106 - %7 = load i32, ptr %i, align 4, !dbg !107 - %idxprom = sext i32 %7 to i64, !dbg !106 - %arrayidx = getelementptr inbounds i8, ptr %6, i64 %idxprom, !dbg !106 - %8 = load i8, ptr %arrayidx, align 1, !dbg !106 - %conv7 = sext i8 %8 to i32, !dbg !108 - %cmp8 = icmp sgt i32 %conv7, 0, !dbg !109 - br i1 %cmp8, label %while.body10, label %while.end, !dbg !105 + %6 = load ptr, ptr %s.addr, align 8, !dbg !105 + %7 = load i32, ptr %i, align 4, !dbg !106 + %idxprom = sext i32 %7 to i64, !dbg !105 + %arrayidx = getelementptr inbounds i8, ptr %6, i64 %idxprom, !dbg !105 + %8 = load i8, ptr %arrayidx, align 1, !dbg !105 + %conv7 = sext i8 %8 to i32, !dbg !107 + %cmp8 = icmp sgt i32 %conv7, 0, !dbg !108 + br i1 %cmp8, label %while.body10, label %while.end, !dbg !104 while.body10: ; preds = %while.cond6 - %9 = load ptr, ptr %s.addr, align 8, !dbg !110 - %10 = load i32, ptr %i, align 4, !dbg !111 - %inc = add nsw i32 %10, 1, !dbg !111 - store i32 %inc, ptr %i, align 4, !dbg !111 - %idxprom11 = sext i32 %10 to i64, !dbg !110 - %arrayidx12 = getelementptr inbounds i8, ptr %9, i64 %idxprom11, !dbg !110 - %11 = load i8, ptr %arrayidx12, align 1, !dbg !110 - %12 = load ptr, ptr %p, align 8, !dbg !112 - %13 = load i32, ptr %j, align 4, !dbg !113 - %inc13 = add nsw i32 %13, 1, !dbg !113 - store i32 %inc13, ptr %j, align 4, !dbg !113 - %idxprom14 = sext i32 %13 to i64, !dbg !112 - %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 %idxprom14, !dbg !112 - store i8 %11, ptr %arrayidx15, align 1, !dbg !114 - br label %while.cond6, !dbg !105, !llvm.loop !115 + %9 = load ptr, ptr %s.addr, align 8, !dbg !109 + %10 = load i32, ptr %i, align 4, !dbg !110 + %inc = add nsw i32 %10, 1, !dbg !110 + store i32 %inc, ptr %i, align 4, !dbg !110 + %idxprom11 = sext i32 %10 to i64, !dbg !109 + %arrayidx12 = getelementptr inbounds i8, ptr %9, i64 %idxprom11, !dbg !109 + %11 = load i8, ptr %arrayidx12, align 1, !dbg !109 + %12 = load ptr, ptr %p, align 8, !dbg !111 + %13 = load i32, ptr %j, align 4, !dbg !112 + %inc13 = add nsw i32 %13, 1, !dbg !112 + store i32 %inc13, ptr %j, align 4, !dbg !112 + %idxprom14 = sext i32 %13 to i64, !dbg !111 + %arrayidx15 = getelementptr inbounds i8, ptr %12, i64 %idxprom14, !dbg !111 + store i8 %11, ptr %arrayidx15, align 1, !dbg !113 + br label %while.cond6, !dbg !104, !llvm.loop !114 while.end: ; preds = %while.cond6 - %14 = load i32, ptr %j, align 4, !dbg !118 - %cmp16 = icmp sgt i32 %14, 0, !dbg !120 - br i1 %cmp16, label %if.then18, label %if.end22, !dbg !121 + %14 = load i32, ptr %j, align 4, !dbg !117 + %cmp16 = icmp sgt i32 %14, 0, !dbg !119 + br i1 %cmp16, label %if.then18, label %if.end22, !dbg !119 if.then18: ; preds = %while.end - %15 = load ptr, ptr %p, align 8, !dbg !122 - %16 = load i32, ptr %j, align 4, !dbg !124 - %idxprom19 = sext i32 %16 to i64, !dbg !122 - %arrayidx20 = getelementptr inbounds i8, ptr %15, i64 %idxprom19, !dbg !122 - store i8 0, ptr %arrayidx20, align 1, !dbg !125 - %17 = load ptr, ptr %p, align 8, !dbg !126 - %call21 = call i32 @atoi(ptr noundef %17) #7, !dbg !127 - %18 = load i32, ptr %r, align 4, !dbg !128 - %add = add nsw i32 %18, %call21, !dbg !128 - store i32 %add, ptr %r, align 4, !dbg !128 - br label %if.end22, !dbg !129 + %15 = load ptr, ptr %p, align 8, !dbg !120 + %16 = load i32, ptr %j, align 4, !dbg !122 + %idxprom19 = sext i32 %16 to i64, !dbg !120 + %arrayidx20 = getelementptr inbounds i8, ptr %15, i64 %idxprom19, !dbg !120 + store i8 0, ptr %arrayidx20, align 1, !dbg !123 + %17 = load ptr, ptr %p, align 8, !dbg !124 + %call21 = call i32 @atoi(ptr noundef %17) #7, !dbg !125 + %18 = load i32, ptr %r, align 4, !dbg !126 + %add = add nsw i32 %18, %call21, !dbg !126 + store i32 %add, ptr %r, align 4, !dbg !126 + br label %if.end22, !dbg !127 if.end22: ; preds = %if.then18, %while.end - %19 = load i32, ptr %i, align 4, !dbg !130 - %inc23 = add nsw i32 %19, 1, !dbg !130 - store i32 %inc23, ptr %i, align 4, !dbg !130 - br label %while.cond, !dbg !99, !llvm.loop !131 + %19 = load i32, ptr %i, align 4, !dbg !128 + %inc23 = add nsw i32 %19, 1, !dbg !128 + store i32 %inc23, ptr %i, align 4, !dbg !128 + br label %while.cond, !dbg !98, !llvm.loop !129 while.end24: ; preds = %while.cond - %20 = load i32, ptr %r, align 4, !dbg !133 - %cmp25 = icmp sge i32 %20, 0, !dbg !135 - br i1 %cmp25, label %if.then27, label %if.end28, !dbg !136 + %20 = load i32, ptr %r, align 4, !dbg !131 + %cmp25 = icmp sge i32 %20, 0, !dbg !133 + br i1 %cmp25, label %if.then27, label %if.end28, !dbg !133 if.then27: ; preds = %while.end24 - %21 = load ptr, ptr %p, align 8, !dbg !137 - call void @free(ptr noundef %21) #8, !dbg !138 - br label %if.end28, !dbg !138 + %21 = load ptr, ptr %p, align 8, !dbg !134 + call void @free(ptr noundef %21) #6, !dbg !135 + br label %if.end28, !dbg !135 if.end28: ; preds = %if.then27, %while.end24 - %22 = load i32, ptr %r, align 4, !dbg !139 - ret i32 %22, !dbg !140 + %22 = load i32, ptr %r, align 4, !dbg !136 + ret i32 %22, !dbg !137 } -declare i64 @strlen(ptr noundef) #3 +; Function Attrs: nounwind +declare i64 @strlen(ptr noundef) #2 ; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #4 +declare i32 @atoi(ptr noundef) #3 ; Function Attrs: nounwind -declare void @free(ptr noundef) #5 +declare void @free(ptr noundef) #2 ; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !141 { +define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !138 { entry: %retval = alloca i32, align 4 %argc.addr = alloca i32, align 4 @@ -239,51 +237,50 @@ entry: %i = 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 !145, metadata !DIExpression()), !dbg !146 + #dbg_declare(ptr %argc.addr, !142, !DIExpression(), !143) store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !147, metadata !DIExpression()), !dbg !148 - call void @llvm.dbg.declare(metadata ptr %i, metadata !149, metadata !DIExpression()), !dbg !150 - store i32 1, ptr %i, align 4, !dbg !151 - br label %for.cond, !dbg !153 + #dbg_declare(ptr %argv.addr, !144, !DIExpression(), !145) + #dbg_declare(ptr %i, !146, !DIExpression(), !147) + store i32 1, ptr %i, align 4, !dbg !148 + br label %for.cond, !dbg !150 for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !154 - %1 = load i32, ptr %argc.addr, align 4, !dbg !156 - %cmp = icmp slt i32 %0, %1, !dbg !157 - br i1 %cmp, label %for.body, label %for.end, !dbg !158 + %0 = load i32, ptr %i, align 4, !dbg !151 + %1 = load i32, ptr %argc.addr, align 4, !dbg !153 + %cmp = icmp slt i32 %0, %1, !dbg !154 + br i1 %cmp, label %for.body, label %for.end, !dbg !155 for.body: ; preds = %for.cond - %2 = load ptr, ptr %argv.addr, align 8, !dbg !159 - %3 = load i32, ptr %i, align 4, !dbg !160 - %idxprom = sext i32 %3 to i64, !dbg !159 - %arrayidx = getelementptr inbounds ptr, ptr %2, i64 %idxprom, !dbg !159 - %4 = load ptr, ptr %arrayidx, align 8, !dbg !159 - %call = call i32 @sum(ptr noundef %4), !dbg !161 - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %call), !dbg !162 - br label %for.inc, !dbg !162 + %2 = load ptr, ptr %argv.addr, align 8, !dbg !156 + %3 = load i32, ptr %i, align 4, !dbg !157 + %idxprom = sext i32 %3 to i64, !dbg !156 + %arrayidx = getelementptr inbounds ptr, ptr %2, i64 %idxprom, !dbg !156 + %4 = load ptr, ptr %arrayidx, align 8, !dbg !156 + %call = call i32 @sum(ptr noundef %4), !dbg !158 + %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %call), !dbg !159 + br label %for.inc, !dbg !159 for.inc: ; preds = %for.body - %5 = load i32, ptr %i, align 4, !dbg !163 - %inc = add nsw i32 %5, 1, !dbg !163 - store i32 %inc, ptr %i, align 4, !dbg !163 - br label %for.cond, !dbg !164, !llvm.loop !165 + %5 = load i32, ptr %i, align 4, !dbg !160 + %inc = add nsw i32 %5, 1, !dbg !160 + store i32 %inc, ptr %i, align 4, !dbg !160 + br label %for.cond, !dbg !161, !llvm.loop !162 for.end: ; preds = %for.cond - %6 = load i32, ptr %retval, align 4, !dbg !167 - ret i32 %6, !dbg !167 + %6 = load i32, ptr %retval, align 4, !dbg !164 + ret i32 %6, !dbg !164 } -declare i32 @printf(ptr noundef, ...) #3 +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 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind 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 allocsize(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"="+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 "frame-pointer"="all" "no-trapping-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 allocsize(0) } +attributes #6 = { nounwind } attributes #7 = { nounwind willreturn memory(read) } -attributes #8 = { nounwind } !llvm.dbg.cu = !{!7} !llvm.module.flags = !{!13, !14, !15, !16, !17, !18, !19} @@ -291,13 +288,13 @@ attributes #8 = { nounwind } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 38, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/mem_leak/sp9.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8dab305d88a8cfd2e14267cb179393d1") +!2 = !DIFile(filename: "src/mem_leak/sp9.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "8dab305d88a8cfd2e14267cb179393d1") !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, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/mem_leak/sp9.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8dab305d88a8cfd2e14267cb179393d1") +!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !12, splitDebugInlining: false, nameTableKind: None) +!8 = !DIFile(filename: "/root/test/once_more/SVF/Test-Suite/src/mem_leak/sp9.c", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "8dab305d88a8cfd2e14267cb179393d1") !9 = !{!10, !11} !10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) !11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) @@ -309,9 +306,9 @@ attributes #8 = { nounwind } !17 = !{i32 7, !"PIE Level", i32 2} !18 = !{i32 7, !"uwtable", i32 2} !19 = !{i32 7, !"frame-pointer", i32 2} -!20 = !{!"clang version 16.0.0"} +!20 = !{!"Ubuntu clang version 20.1.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !21 = distinct !DISubprogram(name: "SAFEMALLOC", scope: !22, file: !22, line: 5, type: !23, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!22 = !DIFile(filename: "memleak_check.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") +!22 = !DIFile(filename: "memleak_check.h", directory: "/root/test/once_more/SVF/Test-Suite", checksumkind: CSK_MD5, checksum: "f78006bd129ed179fe44821c3aed9305") !23 = !DISubroutineType(types: !24) !24 = !{!10, !25} !25 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -380,80 +377,77 @@ attributes #8 = { nounwind } !88 = !DILocation(line: 15, column: 6, scope: !89) !89 = distinct !DILexicalBlock(scope: !68, file: !2, line: 15, column: 6) !90 = !DILocation(line: 15, column: 8, scope: !89) -!91 = !DILocation(line: 15, column: 6, scope: !68) -!92 = !DILocation(line: 16, column: 26, scope: !93) -!93 = distinct !DILexicalBlock(scope: !89, file: !2, line: 15, column: 13) -!94 = !DILocation(line: 16, column: 16, scope: !93) -!95 = !DILocation(line: 16, column: 5, scope: !93) -!96 = !DILocation(line: 17, column: 5, scope: !93) -!97 = !DILocation(line: 18, column: 2, scope: !93) -!98 = !DILocation(line: 19, column: 5, scope: !89) -!99 = !DILocation(line: 20, column: 2, scope: !68) -!100 = !DILocation(line: 20, column: 9, scope: !68) -!101 = !DILocation(line: 20, column: 13, scope: !68) -!102 = !DILocation(line: 20, column: 11, scope: !68) -!103 = !DILocation(line: 21, column: 5, scope: !104) -!104 = distinct !DILexicalBlock(scope: !68, file: !2, line: 20, column: 16) -!105 = !DILocation(line: 22, column: 3, scope: !104) -!106 = !DILocation(line: 22, column: 11, scope: !104) -!107 = !DILocation(line: 22, column: 13, scope: !104) -!108 = !DILocation(line: 22, column: 10, scope: !104) -!109 = !DILocation(line: 22, column: 17, scope: !104) -!110 = !DILocation(line: 23, column: 13, scope: !104) -!111 = !DILocation(line: 23, column: 16, scope: !104) -!112 = !DILocation(line: 23, column: 4, scope: !104) -!113 = !DILocation(line: 23, column: 7, scope: !104) -!114 = !DILocation(line: 23, column: 11, scope: !104) -!115 = distinct !{!115, !105, !116, !117} -!116 = !DILocation(line: 23, column: 18, scope: !104) -!117 = !{!"llvm.loop.mustprogress"} -!118 = !DILocation(line: 24, column: 7, scope: !119) -!119 = distinct !DILexicalBlock(scope: !104, file: !2, line: 24, column: 7) -!120 = !DILocation(line: 24, column: 9, scope: !119) -!121 = !DILocation(line: 24, column: 7, scope: !104) -!122 = !DILocation(line: 25, column: 4, scope: !123) -!123 = distinct !DILexicalBlock(scope: !119, file: !2, line: 24, column: 14) -!124 = !DILocation(line: 25, column: 6, scope: !123) -!125 = !DILocation(line: 25, column: 9, scope: !123) -!126 = !DILocation(line: 26, column: 14, scope: !123) -!127 = !DILocation(line: 26, column: 9, scope: !123) -!128 = !DILocation(line: 26, column: 6, scope: !123) -!129 = !DILocation(line: 27, column: 3, scope: !123) -!130 = !DILocation(line: 28, column: 4, scope: !104) -!131 = distinct !{!131, !99, !132, !117} -!132 = !DILocation(line: 29, column: 2, scope: !68) -!133 = !DILocation(line: 30, column: 6, scope: !134) -!134 = distinct !DILexicalBlock(scope: !68, file: !2, line: 30, column: 6) -!135 = !DILocation(line: 30, column: 8, scope: !134) -!136 = !DILocation(line: 30, column: 6, scope: !68) -!137 = !DILocation(line: 31, column: 8, scope: !134) -!138 = !DILocation(line: 31, column: 3, scope: !134) -!139 = !DILocation(line: 32, column: 9, scope: !68) -!140 = !DILocation(line: 32, column: 2, scope: !68) -!141 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 35, type: !142, scopeLine: 35, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) -!142 = !DISubroutineType(types: !143) -!143 = !{!25, !25, !144} -!144 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64) -!145 = !DILocalVariable(name: "argc", arg: 1, scope: !141, file: !2, line: 35, type: !25) -!146 = !DILocation(line: 35, column: 14, scope: !141) -!147 = !DILocalVariable(name: "argv", arg: 2, scope: !141, file: !2, line: 35, type: !144) -!148 = !DILocation(line: 35, column: 26, scope: !141) -!149 = !DILocalVariable(name: "i", scope: !141, file: !2, line: 36, type: !25) -!150 = !DILocation(line: 36, column: 6, scope: !141) -!151 = !DILocation(line: 37, column: 9, scope: !152) -!152 = distinct !DILexicalBlock(scope: !141, file: !2, line: 37, column: 2) -!153 = !DILocation(line: 37, column: 7, scope: !152) -!154 = !DILocation(line: 37, column: 14, scope: !155) -!155 = distinct !DILexicalBlock(scope: !152, file: !2, line: 37, column: 2) -!156 = !DILocation(line: 37, column: 18, scope: !155) -!157 = !DILocation(line: 37, column: 16, scope: !155) -!158 = !DILocation(line: 37, column: 2, scope: !152) -!159 = !DILocation(line: 38, column: 22, scope: !155) -!160 = !DILocation(line: 38, column: 27, scope: !155) -!161 = !DILocation(line: 38, column: 18, scope: !155) -!162 = !DILocation(line: 38, column: 3, scope: !155) -!163 = !DILocation(line: 37, column: 25, scope: !155) -!164 = !DILocation(line: 37, column: 2, scope: !155) -!165 = distinct !{!165, !158, !166, !117} -!166 = !DILocation(line: 38, column: 30, scope: !152) -!167 = !DILocation(line: 39, column: 1, scope: !141) +!91 = !DILocation(line: 16, column: 26, scope: !92) +!92 = distinct !DILexicalBlock(scope: !89, file: !2, line: 15, column: 13) +!93 = !DILocation(line: 16, column: 16, scope: !92) +!94 = !DILocation(line: 16, column: 5, scope: !92) +!95 = !DILocation(line: 17, column: 5, scope: !92) +!96 = !DILocation(line: 18, column: 2, scope: !92) +!97 = !DILocation(line: 19, column: 5, scope: !89) +!98 = !DILocation(line: 20, column: 2, scope: !68) +!99 = !DILocation(line: 20, column: 9, scope: !68) +!100 = !DILocation(line: 20, column: 13, scope: !68) +!101 = !DILocation(line: 20, column: 11, scope: !68) +!102 = !DILocation(line: 21, column: 5, scope: !103) +!103 = distinct !DILexicalBlock(scope: !68, file: !2, line: 20, column: 16) +!104 = !DILocation(line: 22, column: 3, scope: !103) +!105 = !DILocation(line: 22, column: 11, scope: !103) +!106 = !DILocation(line: 22, column: 13, scope: !103) +!107 = !DILocation(line: 22, column: 10, scope: !103) +!108 = !DILocation(line: 22, column: 17, scope: !103) +!109 = !DILocation(line: 23, column: 13, scope: !103) +!110 = !DILocation(line: 23, column: 16, scope: !103) +!111 = !DILocation(line: 23, column: 4, scope: !103) +!112 = !DILocation(line: 23, column: 7, scope: !103) +!113 = !DILocation(line: 23, column: 11, scope: !103) +!114 = distinct !{!114, !104, !115, !116} +!115 = !DILocation(line: 23, column: 18, scope: !103) +!116 = !{!"llvm.loop.mustprogress"} +!117 = !DILocation(line: 24, column: 7, scope: !118) +!118 = distinct !DILexicalBlock(scope: !103, file: !2, line: 24, column: 7) +!119 = !DILocation(line: 24, column: 9, scope: !118) +!120 = !DILocation(line: 25, column: 4, scope: !121) +!121 = distinct !DILexicalBlock(scope: !118, file: !2, line: 24, column: 14) +!122 = !DILocation(line: 25, column: 6, scope: !121) +!123 = !DILocation(line: 25, column: 9, scope: !121) +!124 = !DILocation(line: 26, column: 14, scope: !121) +!125 = !DILocation(line: 26, column: 9, scope: !121) +!126 = !DILocation(line: 26, column: 6, scope: !121) +!127 = !DILocation(line: 27, column: 3, scope: !121) +!128 = !DILocation(line: 28, column: 4, scope: !103) +!129 = distinct !{!129, !98, !130, !116} +!130 = !DILocation(line: 29, column: 2, scope: !68) +!131 = !DILocation(line: 30, column: 6, scope: !132) +!132 = distinct !DILexicalBlock(scope: !68, file: !2, line: 30, column: 6) +!133 = !DILocation(line: 30, column: 8, scope: !132) +!134 = !DILocation(line: 31, column: 8, scope: !132) +!135 = !DILocation(line: 31, column: 3, scope: !132) +!136 = !DILocation(line: 32, column: 9, scope: !68) +!137 = !DILocation(line: 32, column: 2, scope: !68) +!138 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 35, type: !139, scopeLine: 35, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !26) +!139 = !DISubroutineType(types: !140) +!140 = !{!25, !25, !141} +!141 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64) +!142 = !DILocalVariable(name: "argc", arg: 1, scope: !138, file: !2, line: 35, type: !25) +!143 = !DILocation(line: 35, column: 14, scope: !138) +!144 = !DILocalVariable(name: "argv", arg: 2, scope: !138, file: !2, line: 35, type: !141) +!145 = !DILocation(line: 35, column: 26, scope: !138) +!146 = !DILocalVariable(name: "i", scope: !138, file: !2, line: 36, type: !25) +!147 = !DILocation(line: 36, column: 6, scope: !138) +!148 = !DILocation(line: 37, column: 9, scope: !149) +!149 = distinct !DILexicalBlock(scope: !138, file: !2, line: 37, column: 2) +!150 = !DILocation(line: 37, column: 7, scope: !149) +!151 = !DILocation(line: 37, column: 14, scope: !152) +!152 = distinct !DILexicalBlock(scope: !149, file: !2, line: 37, column: 2) +!153 = !DILocation(line: 37, column: 18, scope: !152) +!154 = !DILocation(line: 37, column: 16, scope: !152) +!155 = !DILocation(line: 37, column: 2, scope: !149) +!156 = !DILocation(line: 38, column: 22, scope: !152) +!157 = !DILocation(line: 38, column: 27, scope: !152) +!158 = !DILocation(line: 38, column: 18, scope: !152) +!159 = !DILocation(line: 38, column: 3, scope: !152) +!160 = !DILocation(line: 37, column: 25, scope: !152) +!161 = !DILocation(line: 37, column: 2, scope: !152) +!162 = distinct !{!162, !155, !163, !116} +!163 = !DILocation(line: 38, column: 30, scope: !149) +!164 = !DILocation(line: 39, column: 1, scope: !138) diff --git a/test_cases_bc/mta/imprecise_cxt_indfork_1.c.bc b/test_cases_bc/mta/imprecise_cxt_indfork_1.c.bc index 089137e49..94f71a87c 100644 --- a/test_cases_bc/mta/imprecise_cxt_indfork_1.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_indfork_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_indfork_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_indfork_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_indfork_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_indfork_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -316,10 +316,10 @@ return: ; preds = %cs1, %sw.default ; Function Attrs: nounwind willreturn memory(read) declare i32 @atoi(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 = { "frame-pointer"="all" "no-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 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 } attributes #5 = { nounwind willreturn memory(read) } @@ -331,4 +331,4 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_indfork_2.c.bc b/test_cases_bc/mta/imprecise_cxt_indfork_2.c.bc index 078551fcd..e20c3da7b 100644 --- a/test_cases_bc/mta/imprecise_cxt_indfork_2.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_indfork_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_indfork_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_indfork_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_indfork_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_indfork_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -352,10 +352,10 @@ return: ; preds = %cs1, %sw.default ; Function Attrs: nounwind willreturn memory(read) declare i32 @atoi(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 = { "frame-pointer"="all" "no-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 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 } attributes #5 = { nounwind willreturn memory(read) } @@ -367,4 +367,4 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_indfork_3.c.bc b/test_cases_bc/mta/imprecise_cxt_indfork_3.c.bc index 375e4ea3a..3d24a66a0 100644 --- a/test_cases_bc/mta/imprecise_cxt_indfork_3.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_indfork_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_indfork_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_indfork_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_indfork_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_indfork_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -432,10 +432,10 @@ return: ; preds = %cs1, %sw.default ; Function Attrs: nounwind willreturn memory(read) declare i32 @atoi(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 = { "frame-pointer"="all" "no-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 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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 } attributes #5 = { nounwind willreturn memory(read) } @@ -447,4 +447,4 @@ attributes #5 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_join_4.c.bc b/test_cases_bc/mta/imprecise_cxt_join_4.c.bc index d66ec92e1..566624771 100644 --- a/test_cases_bc/mta/imprecise_cxt_join_4.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_join_4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_join_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_join_4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_join_4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_join_4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -244,9 +244,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -257,4 +257,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_join_5.c.bc b/test_cases_bc/mta/imprecise_cxt_join_5.c.bc index 559b0623d..5c75d97fb 100644 --- a/test_cases_bc/mta/imprecise_cxt_join_5.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_join_5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_join_5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_join_5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_join_5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_join_5.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -244,9 +244,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -257,4 +257,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_loop_5.c.bc b/test_cases_bc/mta/imprecise_cxt_loop_5.c.bc index 4f6be01a0..5faf777a9 100644 --- a/test_cases_bc/mta/imprecise_cxt_loop_5.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_loop_5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_loop_5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_loop_5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_loop_5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_loop_5.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -336,9 +336,9 @@ cs0: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -349,6 +349,6 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/mta/imprecise_cxt_offspring_5.c.bc b/test_cases_bc/mta/imprecise_cxt_offspring_5.c.bc index e8334a5a0..0feecdb39 100644 --- a/test_cases_bc/mta/imprecise_cxt_offspring_5.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_offspring_5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_offspring_5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_offspring_5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_offspring_5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_offspring_5.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -290,9 +290,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -303,4 +303,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_recur_2.c.bc b/test_cases_bc/mta/imprecise_cxt_recur_2.c.bc index 935a0e65b..d7e8ffe5c 100644 --- a/test_cases_bc/mta/imprecise_cxt_recur_2.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_recur_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_recur_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_recur_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_recur_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_recur_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -314,9 +314,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -327,4 +327,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_recur_3.c.bc b/test_cases_bc/mta/imprecise_cxt_recur_3.c.bc index 3fbf102ae..eb7889d49 100644 --- a/test_cases_bc/mta/imprecise_cxt_recur_3.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_recur_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_recur_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_recur_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_recur_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_recur_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -313,9 +313,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -326,4 +326,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_recur_5.c.bc b/test_cases_bc/mta/imprecise_cxt_recur_5.c.bc index 2618f1f47..1d253f387 100644 --- a/test_cases_bc/mta/imprecise_cxt_recur_5.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_recur_5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_recur_5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_recur_5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_recur_5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_recur_5.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -324,9 +324,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -337,4 +337,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_recur_6.c.bc b/test_cases_bc/mta/imprecise_cxt_recur_6.c.bc index ca92e6c06..d9b993577 100644 --- a/test_cases_bc/mta/imprecise_cxt_recur_6.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_recur_6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_recur_6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_recur_6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_recur_6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_recur_6.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -323,9 +323,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -336,4 +336,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_thdindex_10.c.bc b/test_cases_bc/mta/imprecise_cxt_thdindex_10.c.bc index 5fcb63c7e..a1bb07173 100644 --- a/test_cases_bc/mta/imprecise_cxt_thdindex_10.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_thdindex_10.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_10.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_thdindex_10.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_10.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_thdindex_10.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -355,10 +355,10 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -370,4 +370,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_thdindex_3.c.bc b/test_cases_bc/mta/imprecise_cxt_thdindex_3.c.bc index 2437792f6..9819230b4 100644 --- a/test_cases_bc/mta/imprecise_cxt_thdindex_3.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_thdindex_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_thdindex_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_thdindex_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -290,9 +290,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -303,4 +303,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_thdindex_4_1.c.bc b/test_cases_bc/mta/imprecise_cxt_thdindex_4_1.c.bc index 8a075444e..5aabf600a 100644 --- a/test_cases_bc/mta/imprecise_cxt_thdindex_4_1.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_thdindex_4_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_4_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_thdindex_4_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_4_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_thdindex_4_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -355,10 +355,10 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -370,4 +370,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_thdindex_4_2.c.bc b/test_cases_bc/mta/imprecise_cxt_thdindex_4_2.c.bc index d07a84a77..985c87b5d 100644 --- a/test_cases_bc/mta/imprecise_cxt_thdindex_4_2.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_thdindex_4_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_4_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_thdindex_4_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_4_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_thdindex_4_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -357,10 +357,10 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -372,4 +372,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_thdindex_8_2.c.bc b/test_cases_bc/mta/imprecise_cxt_thdindex_8_2.c.bc index 2771b3d67..22c86ca9a 100644 --- a/test_cases_bc/mta/imprecise_cxt_thdindex_8_2.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_thdindex_8_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_8_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_thdindex_8_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_8_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_thdindex_8_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -285,10 +285,10 @@ cs2: ; preds = %cs1 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -300,4 +300,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/imprecise_cxt_thdindex_9.c.bc b/test_cases_bc/mta/imprecise_cxt_thdindex_9.c.bc index 8861845ba..91ed23323 100644 --- a/test_cases_bc/mta/imprecise_cxt_thdindex_9.c.bc +++ b/test_cases_bc/mta/imprecise_cxt_thdindex_9.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_9.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/imprecise_cxt_thdindex_9.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/imprecise_cxt_thdindex_9.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/imprecise_cxt_thdindex_9.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -302,10 +302,10 @@ cs2: ; preds = %cs1 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -317,4 +317,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_branch_1.c.bc b/test_cases_bc/mta/succ_cxt_branch_1.c.bc index b115c1496..37f691049 100644 --- a/test_cases_bc/mta/succ_cxt_branch_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_branch_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_branch_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_branch_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_branch_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_branch_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -226,9 +226,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -239,4 +239,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_branch_2.c.bc b/test_cases_bc/mta/succ_cxt_branch_2.c.bc index 0f8951563..c8acf7a13 100644 --- a/test_cases_bc/mta/succ_cxt_branch_2.c.bc +++ b/test_cases_bc/mta/succ_cxt_branch_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_branch_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_branch_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_branch_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_branch_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -228,9 +228,9 @@ cs0: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -241,4 +241,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_branch_3.c.bc b/test_cases_bc/mta/succ_cxt_branch_3.c.bc index ca313ee80..7511963d1 100644 --- a/test_cases_bc/mta/succ_cxt_branch_3.c.bc +++ b/test_cases_bc/mta/succ_cxt_branch_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_branch_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_branch_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_branch_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_branch_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -226,9 +226,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -239,4 +239,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_branch_4.c.bc b/test_cases_bc/mta/succ_cxt_branch_4.c.bc index 9fd12a588..c051c6d9a 100644 --- a/test_cases_bc/mta/succ_cxt_branch_4.c.bc +++ b/test_cases_bc/mta/succ_cxt_branch_4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_branch_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_branch_4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_branch_4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_branch_4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -239,9 +239,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -252,4 +252,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_branch_5.c.bc b/test_cases_bc/mta/succ_cxt_branch_5.c.bc index dd5c446e7..b1ee69178 100644 --- a/test_cases_bc/mta/succ_cxt_branch_5.c.bc +++ b/test_cases_bc/mta/succ_cxt_branch_5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_branch_5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_branch_5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_branch_5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_branch_5.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -242,9 +242,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -255,4 +255,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_cand_1.c.bc b/test_cases_bc/mta/succ_cxt_cand_1.c.bc index 685ea0862..155280b15 100644 --- a/test_cases_bc/mta/succ_cxt_cand_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_cand_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_cand_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_cand_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_cand_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_cand_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -235,9 +235,9 @@ declare i32 @pthread_create(ptr noundef, ptr noundef, ptr noundef, ptr noundef) declare i32 @pthread_join(i64 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -248,4 +248,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_cand_2.c.bc b/test_cases_bc/mta/succ_cxt_cand_2.c.bc index 80bc5bc71..c77e1f28b 100644 --- a/test_cases_bc/mta/succ_cxt_cand_2.c.bc +++ b/test_cases_bc/mta/succ_cxt_cand_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_cand_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_cand_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_cand_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_cand_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -261,9 +261,9 @@ declare i32 @pthread_create(ptr noundef, ptr noundef, ptr noundef, ptr noundef) declare i32 @pthread_join(i64 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -274,4 +274,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_cand_3.c.bc b/test_cases_bc/mta/succ_cxt_cand_3.c.bc index bb8ef2c45..eed097715 100644 --- a/test_cases_bc/mta/succ_cxt_cand_3.c.bc +++ b/test_cases_bc/mta/succ_cxt_cand_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_cand_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_cand_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_cand_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_cand_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -291,9 +291,9 @@ declare i32 @pthread_create(ptr noundef, ptr noundef, ptr noundef, ptr noundef) declare i32 @pthread_join(i64 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -304,4 +304,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_join_1.c.bc b/test_cases_bc/mta/succ_cxt_join_1.c.bc index a8b812db5..c00a0787e 100644 --- a/test_cases_bc/mta/succ_cxt_join_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_join_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_join_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_join_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_join_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_join_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -281,9 +281,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -294,4 +294,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_join_2.c.bc b/test_cases_bc/mta/succ_cxt_join_2.c.bc index 9e7d4944d..4b1219b7d 100644 --- a/test_cases_bc/mta/succ_cxt_join_2.c.bc +++ b/test_cases_bc/mta/succ_cxt_join_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_join_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_join_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_join_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_join_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -386,9 +386,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -399,4 +399,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_join_3.c.bc b/test_cases_bc/mta/succ_cxt_join_3.c.bc index 27285020b..0c387ac30 100644 --- a/test_cases_bc/mta/succ_cxt_join_3.c.bc +++ b/test_cases_bc/mta/succ_cxt_join_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_join_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_join_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_join_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_join_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -386,9 +386,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -399,4 +399,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_loop_1.c.bc b/test_cases_bc/mta/succ_cxt_loop_1.c.bc index 2e98c94bc..f1d0278ef 100644 --- a/test_cases_bc/mta/succ_cxt_loop_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_loop_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_loop_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_loop_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_loop_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_loop_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -304,9 +304,9 @@ cs0: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -317,7 +317,7 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/mta/succ_cxt_loop_2.c.bc b/test_cases_bc/mta/succ_cxt_loop_2.c.bc index d0f23743a..c4ea2e7b2 100644 --- a/test_cases_bc/mta/succ_cxt_loop_2.c.bc +++ b/test_cases_bc/mta/succ_cxt_loop_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_loop_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_loop_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_loop_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_loop_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -353,9 +353,9 @@ cs0: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -366,7 +366,7 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/mta/succ_cxt_loop_3.c.bc b/test_cases_bc/mta/succ_cxt_loop_3.c.bc index d72a5333e..765335f23 100644 --- a/test_cases_bc/mta/succ_cxt_loop_3.c.bc +++ b/test_cases_bc/mta/succ_cxt_loop_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_loop_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_loop_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_loop_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_loop_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -353,9 +353,9 @@ cs0: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -366,7 +366,7 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/mta/succ_cxt_loop_6.c.bc b/test_cases_bc/mta/succ_cxt_loop_6.c.bc index 638f360e8..06f41a4df 100644 --- a/test_cases_bc/mta/succ_cxt_loop_6.c.bc +++ b/test_cases_bc/mta/succ_cxt_loop_6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_loop_6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_loop_6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_loop_6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_loop_6.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -288,9 +288,9 @@ cs0: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -301,7 +301,7 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/mta/succ_cxt_loop_8.c.bc b/test_cases_bc/mta/succ_cxt_loop_8.c.bc index d9836701b..5bad6f24d 100644 --- a/test_cases_bc/mta/succ_cxt_loop_8.c.bc +++ b/test_cases_bc/mta/succ_cxt_loop_8.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_loop_8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_loop_8.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_loop_8.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_loop_8.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -296,9 +296,9 @@ cs0: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -309,7 +309,7 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/mta/succ_cxt_offspring_1.c.bc b/test_cases_bc/mta/succ_cxt_offspring_1.c.bc index 67c06ed13..82944d78f 100644 --- a/test_cases_bc/mta/succ_cxt_offspring_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_offspring_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_offspring_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_offspring_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_offspring_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_offspring_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -243,9 +243,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -256,4 +256,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_offspring_2.c.bc b/test_cases_bc/mta/succ_cxt_offspring_2.c.bc index 69ab9311a..8fad1d0c2 100644 --- a/test_cases_bc/mta/succ_cxt_offspring_2.c.bc +++ b/test_cases_bc/mta/succ_cxt_offspring_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_offspring_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_offspring_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_offspring_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_offspring_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -242,9 +242,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -255,4 +255,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_offspring_3.c.bc b/test_cases_bc/mta/succ_cxt_offspring_3.c.bc index 78de54c88..13cd5ae07 100644 --- a/test_cases_bc/mta/succ_cxt_offspring_3.c.bc +++ b/test_cases_bc/mta/succ_cxt_offspring_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_offspring_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_offspring_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_offspring_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_offspring_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -241,9 +241,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -254,4 +254,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_offspring_4.c.bc b/test_cases_bc/mta/succ_cxt_offspring_4.c.bc index cf330f2b8..76027addf 100644 --- a/test_cases_bc/mta/succ_cxt_offspring_4.c.bc +++ b/test_cases_bc/mta/succ_cxt_offspring_4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_offspring_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_offspring_4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_offspring_4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_offspring_4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -259,9 +259,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -272,4 +272,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_recur_4.c.bc b/test_cases_bc/mta/succ_cxt_recur_4.c.bc index 58d68e9c7..c6c49d979 100644 --- a/test_cases_bc/mta/succ_cxt_recur_4.c.bc +++ b/test_cases_bc/mta/succ_cxt_recur_4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_recur_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_recur_4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_recur_4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_recur_4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -286,9 +286,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -299,4 +299,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_recur_7.c.bc b/test_cases_bc/mta/succ_cxt_recur_7.c.bc index 4a1a9c586..464e86ee4 100644 --- a/test_cases_bc/mta/succ_cxt_recur_7.c.bc +++ b/test_cases_bc/mta/succ_cxt_recur_7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_recur_7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_recur_7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_recur_7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_recur_7.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -296,9 +296,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -309,4 +309,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_recur_index_1.c.bc b/test_cases_bc/mta/succ_cxt_recur_index_1.c.bc index d265fcb31..5f0d8e802 100644 --- a/test_cases_bc/mta/succ_cxt_recur_index_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_recur_index_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_recur_index_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_recur_index_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_recur_index_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_recur_index_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -281,9 +281,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -294,4 +294,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_sibling_1.c.bc b/test_cases_bc/mta/succ_cxt_sibling_1.c.bc index 83d9b6faf..fc829bc39 100644 --- a/test_cases_bc/mta/succ_cxt_sibling_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_sibling_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_sibling_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_sibling_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -303,9 +303,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -316,4 +316,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_sibling_2.c.bc b/test_cases_bc/mta/succ_cxt_sibling_2.c.bc index 74ceb31f0..1982fa91a 100644 --- a/test_cases_bc/mta/succ_cxt_sibling_2.c.bc +++ b/test_cases_bc/mta/succ_cxt_sibling_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_sibling_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_sibling_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -305,9 +305,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -318,4 +318,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_sibling_3.c.bc b/test_cases_bc/mta/succ_cxt_sibling_3.c.bc index a59318443..67785155f 100644 --- a/test_cases_bc/mta/succ_cxt_sibling_3.c.bc +++ b/test_cases_bc/mta/succ_cxt_sibling_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_sibling_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_sibling_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -303,9 +303,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -316,4 +316,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_sibling_4.c.bc b/test_cases_bc/mta/succ_cxt_sibling_4.c.bc index 59b142f95..b909cf2e3 100644 --- a/test_cases_bc/mta/succ_cxt_sibling_4.c.bc +++ b/test_cases_bc/mta/succ_cxt_sibling_4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_sibling_4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_sibling_4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -302,9 +302,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -315,4 +315,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_sibling_5.c.bc b/test_cases_bc/mta/succ_cxt_sibling_5.c.bc index c1789b81e..a54bfd1c5 100644 --- a/test_cases_bc/mta/succ_cxt_sibling_5.c.bc +++ b/test_cases_bc/mta/succ_cxt_sibling_5.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_sibling_5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_sibling_5.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -369,9 +369,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -382,4 +382,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_sibling_6.c.bc b/test_cases_bc/mta/succ_cxt_sibling_6.c.bc index 4d8abc4a2..bc876e4cb 100644 --- a/test_cases_bc/mta/succ_cxt_sibling_6.c.bc +++ b/test_cases_bc/mta/succ_cxt_sibling_6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_sibling_6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_sibling_6.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -370,9 +370,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -383,4 +383,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_sibling_7.c.bc b/test_cases_bc/mta/succ_cxt_sibling_7.c.bc index 976c2d8d4..203f0780b 100644 --- a/test_cases_bc/mta/succ_cxt_sibling_7.c.bc +++ b/test_cases_bc/mta/succ_cxt_sibling_7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_sibling_7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_sibling_7.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -368,9 +368,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -381,4 +381,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_sibling_8.c.bc b/test_cases_bc/mta/succ_cxt_sibling_8.c.bc index a98c973d9..9c1ecf9e3 100644 --- a/test_cases_bc/mta/succ_cxt_sibling_8.c.bc +++ b/test_cases_bc/mta/succ_cxt_sibling_8.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_sibling_8.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_sibling_8.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_sibling_8.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -368,9 +368,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -381,4 +381,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_simple_1.c.bc b/test_cases_bc/mta/succ_cxt_simple_1.c.bc index 04546e2fe..836677d63 100644 --- a/test_cases_bc/mta/succ_cxt_simple_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_simple_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_simple_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_simple_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_simple_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_simple_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -210,9 +210,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -223,4 +223,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_simple_2.c.bc b/test_cases_bc/mta/succ_cxt_simple_2.c.bc index 4a298ed97..4ae74b9aa 100644 --- a/test_cases_bc/mta/succ_cxt_simple_2.c.bc +++ b/test_cases_bc/mta/succ_cxt_simple_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_simple_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_simple_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_simple_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_simple_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -248,9 +248,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -261,4 +261,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_simple_3.c.bc b/test_cases_bc/mta/succ_cxt_simple_3.c.bc index b281de70e..361ee5ce0 100644 --- a/test_cases_bc/mta/succ_cxt_simple_3.c.bc +++ b/test_cases_bc/mta/succ_cxt_simple_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_simple_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_simple_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_simple_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_simple_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -239,9 +239,9 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -252,4 +252,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_synthesis_1.c.bc b/test_cases_bc/mta/succ_cxt_synthesis_1.c.bc index b3e764932..e23350afb 100644 --- a/test_cases_bc/mta/succ_cxt_synthesis_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_synthesis_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_synthesis_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_synthesis_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_synthesis_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_synthesis_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -282,9 +282,9 @@ cs5: ; preds = %cs4 ret i32 %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -295,4 +295,4 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_thdindex_2.c.bc b/test_cases_bc/mta/succ_cxt_thdindex_2.c.bc index 3d4ce0924..b8c31a6d6 100644 --- a/test_cases_bc/mta/succ_cxt_thdindex_2.c.bc +++ b/test_cases_bc/mta/succ_cxt_thdindex_2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_thdindex_2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_thdindex_2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -337,10 +337,10 @@ cs1: ; preds = %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 = { "frame-pointer"="all" "no-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 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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -352,4 +352,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_thdindex_7.c.bc b/test_cases_bc/mta/succ_cxt_thdindex_7.c.bc index b74152e87..6f3d2bbb7 100644 --- a/test_cases_bc/mta/succ_cxt_thdindex_7.c.bc +++ b/test_cases_bc/mta/succ_cxt_thdindex_7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_thdindex_7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_thdindex_7.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -283,10 +283,10 @@ cs2: ; preds = %cs1 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -298,4 +298,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc b/test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc index 94ed6f1f6..f0c430724 100644 --- a/test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc +++ b/test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_thdindex_8_1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_thdindex_8_1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -284,10 +284,10 @@ cs2: ; preds = %cs1 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -299,4 +299,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc b/test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc index 021e78097..95daf8905 100644 --- a/test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc +++ b/test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_thdindex_8_3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_thdindex_8_3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -284,10 +284,10 @@ cs2: ; preds = %cs1 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -299,4 +299,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc b/test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc index e41a6436b..a5db9fdf5 100644 --- a/test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc +++ b/test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/succ_cxt_thdindex_8_4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/succ_cxt_thdindex_8_4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -287,10 +287,10 @@ cs2: ; preds = %cs1 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -302,4 +302,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/mta/unsound_cxt_loop_7.c.bc b/test_cases_bc/mta/unsound_cxt_loop_7.c.bc index a598c58eb..dde1fb9c1 100644 --- a/test_cases_bc/mta/unsound_cxt_loop_7.c.bc +++ b/test_cases_bc/mta/unsound_cxt_loop_7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/unsound_cxt_loop_7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/unsound_cxt_loop_7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/unsound_cxt_loop_7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/unsound_cxt_loop_7.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -288,9 +288,9 @@ cs0: ; preds = %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 = { "frame-pointer"="all" "no-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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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 "frame-pointer"="all" "no-trapping-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.module.flags = !{!0, !1, !2, !3, !4} @@ -301,7 +301,7 @@ attributes #3 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = distinct !{!8, !7} diff --git a/test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc b/test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc index bf6b7e4cb..a99c00dcd 100644 --- a/test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc +++ b/test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/mta/unsound_cxt_thdindex_6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/mta/unsound_cxt_thdindex_6.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -284,10 +284,10 @@ cs2: ; preds = %cs1 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 #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 #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="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(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 = { 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(none) } attributes #5 = { nounwind } @@ -299,4 +299,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/objtype_tests/type-basic.c.bc b/test_cases_bc/objtype_tests/type-basic.c.bc index 138d31b08..bc74b0d65 100644 --- a/test_cases_bc/objtype_tests/type-basic.c.bc +++ b/test_cases_bc/objtype_tests/type-basic.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/objtype_tests/type-basic.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/objtype_tests/type-basic.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/objtype_tests/type-basic.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/objtype_tests/type-basic.c" +target datalayout = "e-m:e-p270:32:32-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 { i32, ptr } +%struct.Node = type <{ i32, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @TYPE_MALLOC(i32 noundef %n, i32 noundef %eleNum) #0 { @@ -27,11 +27,11 @@ entry: %retval = alloca i32, align 4 %head1 = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - %call = call ptr @TYPE_MALLOC(i32 noundef 16, i32 noundef 2) + %call = call ptr @TYPE_MALLOC(i32 noundef 12, i32 noundef 2) store ptr %call, ptr %head1, align 8 %0 = load ptr, ptr %head1, align 8 - %data = getelementptr inbounds %struct.Node, ptr %0, i32 0, i32 0 - store i32 1, ptr %data, align 8 + %data = getelementptr inbounds nuw %struct.Node, ptr %0, i32 0, i32 0 + store i32 1, ptr %data, align 1 %1 = load ptr, ptr %head1, align 8 call void @free(ptr noundef %1) #4 ret i32 0 @@ -40,9 +40,9 @@ entry: ; Function Attrs: nounwind 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"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -54,4 +54,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/objtype_tests/type-call.c.bc b/test_cases_bc/objtype_tests/type-call.c.bc index 3569b3466..34b31a0d8 100644 --- a/test_cases_bc/objtype_tests/type-call.c.bc +++ b/test_cases_bc/objtype_tests/type-call.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/objtype_tests/type-call.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/objtype_tests/type-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/test/once_more/SVF/Test-Suite/test_cases_bc/objtype_tests/type-call.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/objtype_tests/type-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" -%struct.Node = type { i32, ptr } +%struct.Node = type <{ i32, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @TYPE_MALLOC(i32 noundef %n, i32 noundef %eleNum) #0 { @@ -27,8 +27,8 @@ entry: %node.addr = alloca ptr, align 8 store ptr %node, ptr %node.addr, align 8 %0 = load ptr, ptr %node.addr, align 8 - %data = getelementptr inbounds %struct.Node, ptr %0, i32 0, i32 0 - store i32 1, ptr %data, align 8 + %data = getelementptr inbounds nuw %struct.Node, ptr %0, i32 0, i32 0 + store i32 1, ptr %data, align 1 ret void } @@ -38,7 +38,7 @@ entry: %retval = alloca i32, align 4 %head1 = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - %call = call ptr @TYPE_MALLOC(i32 noundef 16, i32 noundef 2) + %call = call ptr @TYPE_MALLOC(i32 noundef 12, i32 noundef 2) store ptr %call, ptr %head1, align 8 %0 = load ptr, ptr %head1, align 8 call void @foo(ptr noundef %0) @@ -50,9 +50,9 @@ entry: ; Function Attrs: nounwind 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"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -64,4 +64,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/objtype_tests/type-copy.c.bc b/test_cases_bc/objtype_tests/type-copy.c.bc index 28049098e..e3ba54c8b 100644 --- a/test_cases_bc/objtype_tests/type-copy.c.bc +++ b/test_cases_bc/objtype_tests/type-copy.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/objtype_tests/type-copy.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/objtype_tests/type-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/test/once_more/SVF/Test-Suite/test_cases_bc/objtype_tests/type-copy.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/objtype_tests/type-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" -%struct.Node = type { i32, ptr } +%struct.Node = type <{ i32, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @TYPE_MALLOC(i32 noundef %n, i32 noundef %eleNum) #0 { @@ -28,13 +28,13 @@ entry: %head1 = alloca ptr, align 8 %head2 = alloca ptr, align 8 store i32 0, ptr %retval, align 4 - %call = call ptr @TYPE_MALLOC(i32 noundef 16, i32 noundef 2) + %call = call ptr @TYPE_MALLOC(i32 noundef 12, i32 noundef 2) store ptr %call, ptr %head1, align 8 %0 = load ptr, ptr %head1, align 8 store ptr %0, ptr %head2, align 8 %1 = load ptr, ptr %head2, align 8 - %data = getelementptr inbounds %struct.Node, ptr %1, i32 0, i32 0 - store i32 1, ptr %data, align 8 + %data = getelementptr inbounds nuw %struct.Node, ptr %1, i32 0, i32 0 + store i32 1, ptr %data, align 1 %2 = load ptr, ptr %head2, align 8 call void @free(ptr noundef %2) #4 ret i32 0 @@ -43,9 +43,9 @@ entry: ; Function Attrs: nounwind 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"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -57,4 +57,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/objtype_tests/type-ret.c.bc b/test_cases_bc/objtype_tests/type-ret.c.bc index 95ec8cecd..4d343b4ef 100644 --- a/test_cases_bc/objtype_tests/type-ret.c.bc +++ b/test_cases_bc/objtype_tests/type-ret.c.bc @@ -1,9 +1,9 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/objtype_tests/type-ret.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/objtype_tests/type-ret.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/objtype_tests/type-ret.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/objtype_tests/type-ret.c" +target datalayout = "e-m:e-p270:32:32-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 { i32, ptr } +%struct.Node = type <{ i32, ptr }> ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @TYPE_MALLOC(i32 noundef %n, i32 noundef %eleNum) #0 { @@ -24,7 +24,7 @@ declare noalias ptr @malloc(i64 noundef) #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local ptr @malloc_wrapper() #0 { entry: - %call = call ptr @TYPE_MALLOC(i32 noundef 16, i32 noundef 2) + %call = call ptr @TYPE_MALLOC(i32 noundef 12, i32 noundef 2) ret ptr %call } @@ -37,8 +37,8 @@ entry: %call = call ptr @malloc_wrapper() store ptr %call, ptr %head1, align 8 %0 = load ptr, ptr %head1, align 8 - %data = getelementptr inbounds %struct.Node, ptr %0, i32 0, i32 0 - store i32 1, ptr %data, align 8 + %data = getelementptr inbounds nuw %struct.Node, ptr %0, i32 0, i32 0 + store i32 1, ptr %data, align 1 %1 = load ptr, ptr %head1, align 8 call void @free(ptr noundef %1) #4 ret i32 0 @@ -47,9 +47,9 @@ entry: ; Function Attrs: nounwind 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"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-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 "frame-pointer"="all" "no-trapping-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) } attributes #4 = { nounwind } @@ -61,4 +61,4 @@ attributes #4 = { 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/objtype_tests/type-while.c.bc b/test_cases_bc/objtype_tests/type-while.c.bc index ea5239c9d..63f246820 100644 --- a/test_cases_bc/objtype_tests/type-while.c.bc +++ b/test_cases_bc/objtype_tests/type-while.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/objtype_tests/type-while.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/objtype_tests/type-while.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/objtype_tests/type-while.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/objtype_tests/type-while.c" +target datalayout = "e-m:e-p270:32:32-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 } @@ -42,17 +42,17 @@ while.cond: ; preds = %while.body, %entry while.body: ; preds = %while.cond %call1 = call ptr @TYPE_MALLOC(i32 noundef 16, i32 noundef 2) %1 = load ptr, ptr %p, align 8 - %next = getelementptr inbounds %struct.MyStruct, ptr %1, i32 0, i32 1 - store ptr %call1, ptr %next, align 8 + %next = getelementptr inbounds nuw %struct.MyStruct, ptr %1, i32 0, i32 1 + store ptr %call1, ptr %next, align 1 %call2 = call ptr @TYPE_MALLOC(i32 noundef 4, i32 noundef 2) %2 = load ptr, ptr %p, align 8 - %next3 = getelementptr inbounds %struct.MyStruct, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %next3, align 8 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %3, i32 0, i32 0 - store ptr %call2, ptr %f1, align 8 + %next3 = getelementptr inbounds nuw %struct.MyStruct, ptr %2, i32 0, i32 1 + %3 = load ptr, ptr %next3, align 1 + %f1 = getelementptr inbounds nuw %struct.MyStruct, ptr %3, i32 0, i32 0 + store ptr %call2, ptr %f1, align 1 %4 = load ptr, ptr %p, align 8 - %next4 = getelementptr inbounds %struct.MyStruct, ptr %4, i32 0, i32 1 - %5 = load ptr, ptr %next4, align 8 + %next4 = getelementptr inbounds nuw %struct.MyStruct, ptr %4, i32 0, i32 1 + %5 = load ptr, ptr %next4, align 1 store ptr %5, ptr %p, align 8 br label %while.cond, !llvm.loop !6 @@ -62,8 +62,8 @@ while.end: ; preds = %while.cond 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 = { 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} @@ -74,6 +74,6 @@ 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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/path_tests/path1.c.bc b/test_cases_bc/path_tests/path1.c.bc index 971699432..17d832d92 100644 --- a/test_cases_bc/path_tests/path1.c.bc +++ b/test_cases_bc/path_tests/path1.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path1.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path1.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path1.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -194,8 +194,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} @@ -205,4 +205,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path10.c.bc b/test_cases_bc/path_tests/path10.c.bc index fa04e12c3..559ce3fb1 100644 --- a/test_cases_bc/path_tests/path10.c.bc +++ b/test_cases_bc/path_tests/path10.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path10.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path10.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path10.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path10.c" +target datalayout = "e-m:e-p270:32:32-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 @@ 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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path11.c.bc b/test_cases_bc/path_tests/path11.c.bc index 2c1e3e99c..8f61d8296 100644 --- a/test_cases_bc/path_tests/path11.c.bc +++ b/test_cases_bc/path_tests/path11.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path11.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path11.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path11.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path11.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -200,8 +200,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} @@ -211,4 +211,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path12.c.bc b/test_cases_bc/path_tests/path12.c.bc index 016957662..4c02c10ce 100644 --- a/test_cases_bc/path_tests/path12.c.bc +++ b/test_cases_bc/path_tests/path12.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path12.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path12.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path12.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path12.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -195,8 +195,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path13.c.bc b/test_cases_bc/path_tests/path13.c.bc index 51530899b..01fbe619e 100644 --- a/test_cases_bc/path_tests/path13.c.bc +++ b/test_cases_bc/path_tests/path13.c.bc @@ -1,14 +1,14 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path13.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path13.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path13.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path13.c" +target datalayout = "e-m:e-p270:32:32-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.agg = type { ptr } @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@agg = dso_local global %struct.agg zeroinitializer, align 8 +@agg = dso_local global %struct.agg zeroinitializer, align 1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { @@ -152,7 +152,7 @@ entry: %d = alloca ptr, align 8 %f = alloca i32, align 4 %w = alloca i32, align 4 - %ag1 = alloca %struct.agg, align 8 + %ag1 = alloca %struct.agg, align 1 %a = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store ptr %ag1, ptr %a, align 8 @@ -167,8 +167,8 @@ if.then: ; preds = %entry if.then2: ; preds = %if.then %2 = load ptr, ptr %a, align 8 - %i = getelementptr inbounds %struct.agg, ptr %2, i32 0, i32 0 - store ptr %c, ptr %i, align 8 + %i = getelementptr inbounds nuw %struct.agg, ptr %2, i32 0, i32 0 + store ptr %c, ptr %i, align 1 store ptr %f, ptr %b, align 8 br label %if.end @@ -177,16 +177,16 @@ if.end: ; preds = %if.then2, %if.then if.else: ; preds = %entry %3 = load ptr, ptr %a, align 8 - %i3 = getelementptr inbounds %struct.agg, ptr %3, i32 0, i32 0 - store ptr %d, ptr %i3, align 8 + %i3 = getelementptr inbounds nuw %struct.agg, ptr %3, i32 0, i32 0 + store ptr %d, ptr %i3, align 1 store ptr %w, ptr %b, align 8 br label %if.end4 if.end4: ; preds = %if.else, %if.end %4 = load ptr, ptr %b, align 8 %5 = load ptr, ptr %a, align 8 - %i5 = getelementptr inbounds %struct.agg, ptr %5, i32 0, i32 0 - %6 = load ptr, ptr %i5, align 8 + %i5 = getelementptr inbounds nuw %struct.agg, ptr %5, i32 0, i32 0 + %6 = load ptr, ptr %i5, align 1 store ptr %4, ptr %6, align 8 %7 = load ptr, ptr %c, align 8 call void @MAYALIAS(ptr noundef %7, ptr noundef %f) @@ -200,8 +200,8 @@ if.end4: ; preds = %if.else, %if.end ret i32 %11 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -211,4 +211,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path14.c.bc b/test_cases_bc/path_tests/path14.c.bc index 3a9e9d41b..7cb2ad6ae 100644 --- a/test_cases_bc/path_tests/path14.c.bc +++ b/test_cases_bc/path_tests/path14.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path14.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path14.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path14.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path14.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -195,8 +195,8 @@ if.end3: ; preds = %if.else, %if.end ret i32 %10 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path15.c.bc b/test_cases_bc/path_tests/path15.c.bc index 77b93fd6d..813920caa 100644 --- a/test_cases_bc/path_tests/path15.c.bc +++ b/test_cases_bc/path_tests/path15.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path15.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path15.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path15.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path15.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -182,8 +182,8 @@ if.end: ; preds = %if.else, %if.then ret i32 %7 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -193,4 +193,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path16.c.bc b/test_cases_bc/path_tests/path16.c.bc index 4aaf16ab5..79796949a 100644 --- a/test_cases_bc/path_tests/path16.c.bc +++ b/test_cases_bc/path_tests/path16.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path16.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path16.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path16.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path16.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -197,8 +197,8 @@ if.end6: ; preds = %if.then5, %if.end3 ret i32 %9 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path17.c.bc b/test_cases_bc/path_tests/path17.c.bc index d20cdd099..913acf071 100644 --- a/test_cases_bc/path_tests/path17.c.bc +++ b/test_cases_bc/path_tests/path17.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path17.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path17.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path17.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path17.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -206,8 +206,8 @@ if.end9: ; preds = %if.then8, %if.end6 ret i32 %10 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -217,4 +217,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path18.c.bc b/test_cases_bc/path_tests/path18.c.bc index 35c237099..84f70f293 100644 --- a/test_cases_bc/path_tests/path18.c.bc +++ b/test_cases_bc/path_tests/path18.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path18.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path18.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path18.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path18.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -190,8 +190,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} @@ -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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path19.c.bc b/test_cases_bc/path_tests/path19.c.bc index f0dc73d1e..7a7edd9cc 100644 --- a/test_cases_bc/path_tests/path19.c.bc +++ b/test_cases_bc/path_tests/path19.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path19.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path19.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path19.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path19.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -203,8 +203,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} @@ -214,4 +214,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path2.c.bc b/test_cases_bc/path_tests/path2.c.bc index 9739a34f3..996cf41cd 100644 --- a/test_cases_bc/path_tests/path2.c.bc +++ b/test_cases_bc/path_tests/path2.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path2.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path2.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path2.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -192,8 +192,8 @@ if.end: ; preds = %if.then, %entry ret i32 %12 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -203,4 +203,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path20.c.bc b/test_cases_bc/path_tests/path20.c.bc index bfe2b3578..5aac235a9 100644 --- a/test_cases_bc/path_tests/path20.c.bc +++ b/test_cases_bc/path_tests/path20.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path20.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path20.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path20.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path20.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -187,8 +187,8 @@ if.end: ; preds = %if.else, %if.then ret i32 %8 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -198,4 +198,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path21.c.bc b/test_cases_bc/path_tests/path21.c.bc index 898687dcc..a8eccf9e1 100644 --- a/test_cases_bc/path_tests/path21.c.bc +++ b/test_cases_bc/path_tests/path21.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path21.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path21.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path21.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path21.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -194,8 +194,8 @@ if.end: ; preds = %if.else, %if.then ret i32 %12 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -205,4 +205,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path22.c.bc b/test_cases_bc/path_tests/path22.c.bc index 9bc3ebf5e..d82f7114f 100644 --- a/test_cases_bc/path_tests/path22.c.bc +++ b/test_cases_bc/path_tests/path22.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path22.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path22.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path22.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path22.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -207,8 +207,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} @@ -218,4 +218,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path3.c.bc b/test_cases_bc/path_tests/path3.c.bc index 110410a87..332f72bf2 100644 --- a/test_cases_bc/path_tests/path3.c.bc +++ b/test_cases_bc/path_tests/path3.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path3.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path3.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path3.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -190,8 +190,8 @@ if.end: ; preds = %if.then, %entry ret i32 %11 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path4.c.bc b/test_cases_bc/path_tests/path4.c.bc index 3b55dae5b..6d896a83c 100644 --- a/test_cases_bc/path_tests/path4.c.bc +++ b/test_cases_bc/path_tests/path4.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path4.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path4.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path4.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -197,8 +197,8 @@ if.end: ; preds = %if.then, %entry ret i32 %13 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path5.c.bc b/test_cases_bc/path_tests/path5.c.bc index 0cc45d45c..cd4f23060 100644 --- a/test_cases_bc/path_tests/path5.c.bc +++ b/test_cases_bc/path_tests/path5.c.bc @@ -1,14 +1,14 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path5.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path5.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path5.c" +target datalayout = "e-m:e-p270:32:32-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.agg = type { ptr, i32 } +%struct.agg = type <{ ptr, i32 }> @.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@agg = dso_local global %struct.agg zeroinitializer, align 8 +@agg = dso_local global %struct.agg zeroinitializer, align 1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { @@ -152,8 +152,8 @@ entry: %k2 = alloca i32, align 4 %a = alloca ptr, align 8 %b = alloca ptr, align 8 - %obj1 = alloca %struct.agg, align 8 - %obj2 = alloca %struct.agg, align 8 + %obj1 = alloca %struct.agg, align 1 + %obj2 = alloca %struct.agg, align 1 store i32 0, ptr %retval, align 4 store ptr null, ptr %b, align 8 store ptr null, ptr %a, align 8 @@ -174,30 +174,30 @@ if.else: ; preds = %entry if.end: ; preds = %if.else, %if.then %1 = load ptr, ptr %s, align 8 %2 = load ptr, ptr %a, align 8 - %pi = getelementptr inbounds %struct.agg, ptr %2, i32 0, i32 0 - store ptr %1, ptr %pi, align 8 + %pi = getelementptr inbounds nuw %struct.agg, ptr %2, i32 0, i32 0 + store ptr %1, ptr %pi, align 1 %3 = load ptr, ptr %s, align 8 %4 = load ptr, ptr %b, align 8 - %pi1 = getelementptr inbounds %struct.agg, ptr %4, i32 0, i32 0 - store ptr %3, ptr %pi1, align 8 - %pi2 = getelementptr inbounds %struct.agg, ptr %obj1, i32 0, i32 0 - %5 = load ptr, ptr %pi2, align 8 + %pi1 = getelementptr inbounds nuw %struct.agg, ptr %4, i32 0, i32 0 + store ptr %3, ptr %pi1, align 1 + %pi2 = getelementptr inbounds nuw %struct.agg, ptr %obj1, i32 0, i32 0 + %5 = load ptr, ptr %pi2, align 1 call void @MAYALIAS(ptr noundef %5, ptr noundef %k1) - %pi3 = getelementptr inbounds %struct.agg, ptr %obj1, i32 0, i32 0 - %6 = load ptr, ptr %pi3, align 8 + %pi3 = getelementptr inbounds nuw %struct.agg, ptr %obj1, i32 0, i32 0 + %6 = load ptr, ptr %pi3, align 1 call void @NOALIAS(ptr noundef %6, ptr noundef %k2) - %pi4 = getelementptr inbounds %struct.agg, ptr %obj2, i32 0, i32 0 - %7 = load ptr, ptr %pi4, align 8 + %pi4 = getelementptr inbounds nuw %struct.agg, ptr %obj2, i32 0, i32 0 + %7 = load ptr, ptr %pi4, align 1 call void @MAYALIAS(ptr noundef %7, ptr noundef %k2) - %pi5 = getelementptr inbounds %struct.agg, ptr %obj2, i32 0, i32 0 - %8 = load ptr, ptr %pi5, align 8 + %pi5 = getelementptr inbounds nuw %struct.agg, ptr %obj2, i32 0, i32 0 + %8 = load ptr, ptr %pi5, align 1 call void @NOALIAS(ptr noundef %8, ptr noundef %k1) %9 = load i32, ptr %retval, align 4 ret i32 %9 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -207,4 +207,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path6.c.bc b/test_cases_bc/path_tests/path6.c.bc index 75860f832..286e811cc 100644 --- a/test_cases_bc/path_tests/path6.c.bc +++ b/test_cases_bc/path_tests/path6.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path6.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path6.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path6.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -194,8 +194,8 @@ if.end4: ; preds = %if.end, %if.then ret i32 %8 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -205,4 +205,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path7.c.bc b/test_cases_bc/path_tests/path7.c.bc index d7ff079db..6048e39f8 100644 --- a/test_cases_bc/path_tests/path7.c.bc +++ b/test_cases_bc/path_tests/path7.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path7.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path7.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path7.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path7.c" +target datalayout = "e-m:e-p270:32:32-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,8 +181,8 @@ if.end: ; preds = %if.else, %if.then ret i32 %7 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path8.c.bc b/test_cases_bc/path_tests/path8.c.bc index b6ce534f1..9948ce01e 100644 --- a/test_cases_bc/path_tests/path8.c.bc +++ b/test_cases_bc/path_tests/path8.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path8.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path8.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path8.c" +target datalayout = "e-m:e-p270:32:32-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 @@ -212,8 +212,8 @@ if.end8: ; preds = %if.end7, %if.then ret i32 %11 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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} @@ -223,4 +223,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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"} diff --git a/test_cases_bc/path_tests/path9.c.bc b/test_cases_bc/path_tests/path9.c.bc index 4428d6f97..1aba2fed7 100644 --- a/test_cases_bc/path_tests/path9.c.bc +++ b/test_cases_bc/path_tests/path9.c.bc @@ -1,7 +1,7 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/path_tests/path9.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/path_tests/path9.c" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" +; ModuleID = '/root/test/once_more/SVF/Test-Suite/test_cases_bc/path_tests/path9.c.bc' +source_filename = "/root/test/once_more/SVF/Test-Suite/src/path_tests/path9.c" +target datalayout = "e-m:e-p270:32:32-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.agg1 = type { ptr, %struct.subagg1 } %struct.subagg1 = type { ptr } @@ -151,8 +151,8 @@ entry: %b = alloca ptr, align 8 %k1 = alloca i32, align 4 %k2 = alloca i32, align 4 - %g1 = alloca %struct.agg1, align 8 - %g2 = alloca %struct.agg1, align 8 + %g1 = alloca %struct.agg1, align 1 + %g2 = alloca %struct.agg1, align 1 %g = alloca ptr, align 8 store i32 0, ptr %retval, align 4 store ptr %g1, ptr %g, align 8 @@ -172,31 +172,31 @@ if.else: ; preds = %entry if.end: ; preds = %if.else, %if.then %1 = load ptr, ptr %a, align 8 %2 = load ptr, ptr %g, align 8 - %sub = getelementptr inbounds %struct.agg1, ptr %2, i32 0, i32 1 - %d = getelementptr inbounds %struct.subagg1, ptr %sub, i32 0, i32 0 - store ptr %1, ptr %d, align 8 - %sub1 = getelementptr inbounds %struct.agg1, ptr %g1, i32 0, i32 1 - %d2 = getelementptr inbounds %struct.subagg1, ptr %sub1, i32 0, i32 0 - %3 = load ptr, ptr %d2, align 8 + %sub = getelementptr inbounds nuw %struct.agg1, ptr %2, i32 0, i32 1 + %d = getelementptr inbounds nuw %struct.subagg1, ptr %sub, i32 0, i32 0 + store ptr %1, ptr %d, align 1 + %sub1 = getelementptr inbounds nuw %struct.agg1, ptr %g1, i32 0, i32 1 + %d2 = getelementptr inbounds nuw %struct.subagg1, ptr %sub1, i32 0, i32 0 + %3 = load ptr, ptr %d2, align 1 call void @MAYALIAS(ptr noundef %3, ptr noundef %k2) - %sub3 = getelementptr inbounds %struct.agg1, ptr %g2, i32 0, i32 1 - %d4 = getelementptr inbounds %struct.subagg1, ptr %sub3, i32 0, i32 0 - %4 = load ptr, ptr %d4, align 8 + %sub3 = getelementptr inbounds nuw %struct.agg1, ptr %g2, i32 0, i32 1 + %d4 = getelementptr inbounds nuw %struct.subagg1, ptr %sub3, i32 0, i32 0 + %4 = load ptr, ptr %d4, align 1 call void @MAYALIAS(ptr noundef %4, ptr noundef %k1) - %sub5 = getelementptr inbounds %struct.agg1, ptr %g1, i32 0, i32 1 - %d6 = getelementptr inbounds %struct.subagg1, ptr %sub5, i32 0, i32 0 - %5 = load ptr, ptr %d6, align 8 + %sub5 = getelementptr inbounds nuw %struct.agg1, ptr %g1, i32 0, i32 1 + %d6 = getelementptr inbounds nuw %struct.subagg1, ptr %sub5, i32 0, i32 0 + %5 = load ptr, ptr %d6, align 1 call void @NOALIAS(ptr noundef %5, ptr noundef %k1) - %sub7 = getelementptr inbounds %struct.agg1, ptr %g2, i32 0, i32 1 - %d8 = getelementptr inbounds %struct.subagg1, ptr %sub7, i32 0, i32 0 - %6 = load ptr, ptr %d8, align 8 + %sub7 = getelementptr inbounds nuw %struct.agg1, ptr %g2, i32 0, i32 1 + %d8 = getelementptr inbounds nuw %struct.subagg1, ptr %sub7, i32 0, i32 0 + %6 = load ptr, ptr %d8, align 1 call void @NOALIAS(ptr noundef %6, ptr noundef %k2) %7 = load i32, ptr %retval, align 4 ret i32 %7 } -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-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.3 (++20250415115034+9420327ad768-1~exp1~20250415235124.105)"}