[ImplicitNullCheck] Extend Implicit Null Check scope by using stores
authorSanjoy Das <sanjoy@playingwithpointers.com>
Tue, 7 Feb 2017 19:19:49 +0000 (19:19 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Tue, 7 Feb 2017 19:19:49 +0000 (19:19 +0000)
commit2f63cbcc0c508c502e1f59cd911a36f73d1c460a
tree922f8ec26ff5fdcd0b29a58cda5655b363933aad
parentef6d573f67466494fd65dfce650908043527da37
[ImplicitNullCheck] Extend Implicit Null Check scope by using stores

Summary:
This change allows usage of store instruction for implicit null check.

Memory Aliasing Analisys is not used and change conservatively supposes
that any store and load may access the same memory. As a result
re-ordering of store-store, store-load and load-store is prohibited.

Patch by Serguei Katkov!

Reviewers: reames, sanjoy

Reviewed By: sanjoy

Subscribers: atrick, llvm-commits

Differential Revision: https://reviews.llvm.org/D29400

llvm-svn: 294338
llvm/docs/FaultMaps.rst
llvm/include/llvm/CodeGen/FaultMaps.h
llvm/include/llvm/Target/Target.td
llvm/include/llvm/Target/TargetOpcodes.def
llvm/lib/CodeGen/FaultMaps.cpp
llvm/lib/CodeGen/ImplicitNullChecks.cpp
llvm/lib/Target/X86/X86AsmPrinter.h
llvm/lib/Target/X86/X86MCInstLower.cpp
llvm/test/CodeGen/X86/block-placement.mir
llvm/test/CodeGen/X86/implicit-null-check.ll
llvm/test/CodeGen/X86/implicit-null-checks.mir