MemoryBuiltins: Reinstate optimizing (uninitialized) loads from operator new.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191315 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer
2013-09-24 17:34:29 +00:00
parent 085e23841e
commit d44f9f2ff8
2 changed files with 35 additions and 10 deletions

View File

@@ -31,12 +31,12 @@
using namespace llvm;
enum AllocType {
MallocLike = 1<<0, // allocates
CallocLike = 1<<1, // allocates + bzero
ReallocLike = 1<<2, // reallocates
StrDupLike = 1<<3,
OpNewLike = 1<<4, // allocates; never returns null
AllocLike = MallocLike | CallocLike | StrDupLike | OpNewLike,
OpNewLike = 1<<0, // allocates; never returns null
MallocLike = 1<<1 | OpNewLike, // allocates; may return null
CallocLike = 1<<2, // allocates + bzero
ReallocLike = 1<<3, // reallocates
StrDupLike = 1<<4,
AllocLike = MallocLike | CallocLike | StrDupLike,
AnyAlloc = AllocLike | ReallocLike
};
@@ -118,7 +118,7 @@ static const AllocFnsTy *getAllocationData(const Value *V, AllocType AllocTy,
return 0;
const AllocFnsTy *FnData = &AllocationFnData[i];
if ((FnData->AllocTy & AllocTy) == 0)
if ((FnData->AllocTy & AllocTy) != FnData->AllocTy)
return 0;
// Check function prototype.