1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature 2; RUN: opt -passes=instcombine -S < %s | FileCheck %s 3 4target datalayout = "e-m:e-p200:128:128:128:64-A200-P200-G200" 5 6define i64 @remove_malloc() addrspace(200) { 7; CHECK-LABEL: define {{[^@]+}}@remove_malloc() addrspace(200) { 8; CHECK-NEXT: entry: 9; CHECK-NEXT: ret i64 0 10; 11entry: 12 %call = call align 16 ptr addrspace(200) @malloc(i64 4) 13 call void @free(ptr addrspace(200) %call) 14 ret i64 0 15} 16 17define i64 @remove_calloc() addrspace(200) { 18; CHECK-LABEL: define {{[^@]+}}@remove_calloc() addrspace(200) { 19; CHECK-NEXT: entry: 20; CHECK-NEXT: ret i64 0 21; 22entry: 23 %call = call ptr addrspace(200) @calloc(i64 1, i64 4) 24 call void @free(ptr addrspace(200) %call) 25 ret i64 0 26} 27define i64 @remove_aligned_alloc() addrspace(200) { 28; CHECK-LABEL: define {{[^@]+}}@remove_aligned_alloc() addrspace(200) { 29; CHECK-NEXT: entry: 30; CHECK-NEXT: ret i64 0 31; 32entry: 33 %call = call align 4 ptr addrspace(200) @aligned_alloc(i64 4, i64 4) 34 call void @free(ptr addrspace(200) %call) 35 ret i64 0 36} 37 38define i64 @remove_strdup(ptr addrspace(200) %arg) addrspace(200) { 39; CHECK-LABEL: define {{[^@]+}}@remove_strdup 40; CHECK-SAME: (ptr addrspace(200) [[ARG:%.*]]) addrspace(200) { 41; CHECK-NEXT: entry: 42; CHECK-NEXT: ret i64 0 43; 44entry: 45 %call = call align 4 ptr addrspace(200) @strdup(ptr addrspace(200) %arg) 46 call void @free(ptr addrspace(200) %call) 47 ret i64 0 48} 49 50define i64 @remove_new(ptr addrspace(200) %arg) addrspace(200) { 51; CHECK-LABEL: define {{[^@]+}}@remove_new 52; CHECK-SAME: (ptr addrspace(200) [[ARG:%.*]]) addrspace(200) { 53; CHECK-NEXT: entry: 54; CHECK-NEXT: ret i64 0 55; 56entry: 57 %call = call align 4 ptr addrspace(200) @_Znwm(i64 4) 58 call void @_ZdlPv(ptr addrspace(200) %call) 59 ret i64 0 60} 61 62define i64 @remove_new_array(ptr addrspace(200) %arg) addrspace(200) { 63; CHECK-LABEL: define {{[^@]+}}@remove_new_array 64; CHECK-SAME: (ptr addrspace(200) [[ARG:%.*]]) addrspace(200) { 65; CHECK-NEXT: entry: 66; CHECK-NEXT: ret i64 0 67; 68entry: 69 %call = call align 4 ptr addrspace(200) @_Znam(i64 4) 70 call void @_ZdaPv(ptr addrspace(200) %call) 71 ret i64 0 72} 73 74declare noalias ptr addrspace(200) @calloc(i64, i64) addrspace(200) nounwind allockind("alloc,zeroed") allocsize(0,1) "alloc-family"="malloc" 75declare noalias ptr addrspace(200) @malloc(i64) addrspace(200) allockind("alloc,uninitialized") allocsize(0) "alloc-family"="malloc" 76declare noalias ptr addrspace(200) @aligned_alloc(i64, i64) addrspace(200) allockind("alloc,uninitialized,aligned") allocsize(1) "alloc-family"="malloc" 77declare noalias ptr addrspace(200) @strdup(ptr addrspace(200) %arg) addrspace(200) 78declare void @free(ptr addrspace(200)) addrspace(200) allockind("free") "alloc-family"="malloc" 79; new/delete 80declare noalias ptr addrspace(200) @_Znwm(i64) addrspace(200) 81declare void @_ZdlPv(ptr addrspace(200)) addrspace(200) 82; new[]/delete[] 83declare noalias ptr addrspace(200) @_Znam(i64) addrspace(200) 84declare void @_ZdaPv(ptr addrspace(200)) addrspace(200) 85