llvm/lib/Transforms
Philip Reames b835f3446f Remove dead zero store to calloc initialized memory
Optimize the following IR:

%1 = tail call noalias i8* @calloc(i64 1, i64 4)
%2 = bitcast i8* %1 to i32*
; This store is dead and should be removed
store i32 0, i32* %2, align 4

Memory returned by calloc is guaranteed to be zero initialized. If the value being stored is the constant zero (and the store is not otherwise observable across threads), we can delete the store.  If the store is to an out of bounds address, it is undefined and thus also removable.

Reviewed By: nicholas

Differential Revision: http://reviews.llvm.org/D3942




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214897 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-05 17:48:20 +00:00
..
Hello [CMake] Add LLVM_LINK_COMPONENTS to loadable modules, LLVMHello and BugpointPasses, on Win32. 2014-07-13 13:36:48 +00:00
InstCombine This patch implements transform for pattern "(A & ~B) ^ (~A) -> ~(A & B)". 2014-08-01 05:07:20 +00:00
Instrumentation [ASan] Use metadata to pass source-level information from Clang to ASan. 2014-08-02 00:35:50 +00:00
IPO MergeFunctions, tiny refactoring: 2014-07-31 07:16:59 +00:00
ObjCARC AA metadata refactoring (introduce AAMDNodes) 2014-07-24 12:16:19 +00:00
Scalar Remove dead zero store to calloc initialized memory 2014-08-05 17:48:20 +00:00
Utils [SimplifyCFG] fix accessing deleted PHINodes in switch-to-table conversion. 2014-08-02 23:41:54 +00:00
Vectorize Teach the SLP Vectorizer that keeping some values live over a callsite can have a cost. 2014-08-05 12:30:34 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile