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