summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/malloc-free-delete.ll
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2010-05-27 19:09:06 +0000
committerDuncan Sands <baldrick@free.fr>2010-05-27 19:09:06 +0000
commitf162eace49c2e155d32e20f6d224df3d3efe555a (patch)
tree2e66a8a4e18c7f99e4c826943ddf7544079239f6 /llvm/test/Transforms/InstCombine/malloc-free-delete.ll
parentb68dfb45f5c9712e44329871bfc989b67ff687de (diff)
downloadbcm5719-llvm-f162eace49c2e155d32e20f6d224df3d3efe555a.tar.gz
bcm5719-llvm-f162eace49c2e155d32e20f6d224df3d3efe555a.zip
Teach instCombine to remove malloc+free if malloc's only uses are comparisons
to null. Patch by Matti Niemenmaa. llvm-svn: 104871
Diffstat (limited to 'llvm/test/Transforms/InstCombine/malloc-free-delete.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/malloc-free-delete.ll20
1 files changed, 16 insertions, 4 deletions
diff --git a/llvm/test/Transforms/InstCombine/malloc-free-delete.ll b/llvm/test/Transforms/InstCombine/malloc-free-delete.ll
index a4b7496ef40..317786fc564 100644
--- a/llvm/test/Transforms/InstCombine/malloc-free-delete.ll
+++ b/llvm/test/Transforms/InstCombine/malloc-free-delete.ll
@@ -1,13 +1,25 @@
-; RUN: opt < %s -instcombine -globaldce -S | FileCheck %s
+; RUN: opt < %s -instcombine -S | FileCheck %s
; PR1201
define i32 @main(i32 %argc, i8** %argv) {
- %c_19 = alloca i8* ; <i8**> [#uses=2]
- %malloc_206 = malloc i8, i32 10 ; <i8*> [#uses=1]
+ %c_19 = alloca i8*
+ %malloc_206 = malloc i8, i32 10
; CHECK-NOT: malloc
store i8* %malloc_206, i8** %c_19
- %tmp_207 = load i8** %c_19 ; <i8*> [#uses=1]
+ %tmp_207 = load i8** %c_19
free i8* %tmp_207
; CHECK-NOT: free
ret i32 0
; CHECK: ret i32 0
}
+
+declare i8* @malloc(i32)
+declare void @free(i8*)
+
+define i1 @foo() {
+; CHECK: @foo
+; CHECK-NEXT: ret i1 false
+ %m = call i8* @malloc(i32 1)
+ %z = icmp eq i8* %m, null
+ call void @free(i8* %m)
+ ret i1 %z
+}
OpenPOWER on IntegriCloud