[llvm] r191313 - MemoryBuiltins: Fix operator new bits.
Benjamin Kramer
benny.kra at googlemail.com
Tue Sep 24 10:15:14 PDT 2013
Author: d0k
Date: Tue Sep 24 12:15:14 2013
New Revision: 191313
URL: http://llvm.org/viewvc/llvm-project?rev=191313&view=rev
Log:
MemoryBuiltins: Fix operator new bits.
We really don't want to optimize malloc return value checks away.
Modified:
llvm/trunk/lib/Analysis/MemoryBuiltins.cpp
llvm/trunk/test/Transforms/InstSimplify/call.ll
Modified: llvm/trunk/lib/Analysis/MemoryBuiltins.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryBuiltins.cpp?rev=191313&r1=191312&r2=191313&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/MemoryBuiltins.cpp (original)
+++ llvm/trunk/lib/Analysis/MemoryBuiltins.cpp Tue Sep 24 12:15:14 2013
@@ -35,9 +35,9 @@ enum AllocType {
CallocLike = 1<<1, // allocates + bzero
ReallocLike = 1<<2, // reallocates
StrDupLike = 1<<3,
- OpNewLike = MallocLike | (1<<4), // allocates; never returns null
- AllocLike = MallocLike | CallocLike | StrDupLike,
- AnyAlloc = MallocLike | CallocLike | ReallocLike | StrDupLike
+ OpNewLike = 1<<4, // allocates; never returns null
+ AllocLike = MallocLike | CallocLike | StrDupLike | OpNewLike,
+ AnyAlloc = AllocLike | ReallocLike
};
struct AllocFnsTy {
Modified: llvm/trunk/test/Transforms/InstSimplify/call.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstSimplify/call.ll?rev=191313&r1=191312&r2=191313&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstSimplify/call.ll (original)
+++ llvm/trunk/test/Transforms/InstSimplify/call.ll Tue Sep 24 12:15:14 2013
@@ -121,3 +121,23 @@ cast.end:
}
declare noalias i8* @_Znwm(i64)
+
+define i8* @malloc_can_return_null() {
+entry:
+ %call = tail call noalias i8* @malloc(i64 8)
+ %cmp = icmp eq i8* %call, null
+ br i1 %cmp, label %cast.end, label %cast.notnull
+
+cast.notnull: ; preds = %entry
+ %add.ptr = getelementptr inbounds i8* %call, i64 4
+ br label %cast.end
+
+cast.end: ; preds = %cast.notnull, %entry
+ %cast.result = phi i8* [ %add.ptr, %cast.notnull ], [ null, %entry ]
+ ret i8* %cast.result
+
+; CHECK-LABEL: @malloc_can_return_null
+; CHECK: br i1 %cmp, label %cast.end, label %cast.notnull
+}
+
+declare noalias i8* @malloc(i64)
More information about the llvm-commits
mailing list