xref: /llvm-project/llvm/test/Transforms/InstCombine/malloc-free-addrspace.ll (revision e96ddad85ca03ddd76a7b0571771709fb1fd1b53)
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