[PATCH] D18738: Add new !unconditionally_dereferenceable load instruction metadata

whitequark via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 3 03:38:35 PDT 2016


whitequark created this revision.
whitequark added a subscriber: llvm-commits.
whitequark set the repository for this revision to rL LLVM.

!unconditionally_dereferenceable is similar to !dereferenceable,
but is intended for frontends for memory-safe languages where
loads can be freely moved around without impacting their
dereferenceability.

!dereferenceable used to have the same semantics as the newly
introduced !unconditionally_dereferenceable before LLVM 3.8;
it was made more conservative in r252604.

Notes:
  * The dereferenceable argument attribute is close to 
     !unconditionally_dereferenceable in semantics than !dereferenceable,
     should we update LangRef?
  * There's no !unconditionally_dereferenceable_or_null; I'm not sure if there
     should be. It's not useful for my frontend and I'm not sure if it's useful for
     LICM either. Also, this combinatory explosion worries me.

Repository:
  rL LLVM

http://reviews.llvm.org/D18738

Files:
  docs/LangRef.rst
  include/llvm/IR/LLVMContext.h
  lib/Analysis/ValueTracking.cpp
  lib/IR/LLVMContext.cpp
  lib/IR/Verifier.cpp
  lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
  lib/Transforms/InstCombine/InstCombinePHI.cpp
  lib/Transforms/Scalar/LICM.cpp
  lib/Transforms/Utils/Local.cpp
  lib/Transforms/Utils/SimplifyCFG.cpp
  test/Transforms/InstCombine/load-combine-metadata-5.ll
  test/Transforms/InstCombine/loadstore-metadata.ll
  test/Transforms/InstCombine/phi-load-metadata-4.ll
  test/Transforms/LICM/hoist-nested-deref-load.ll
  test/Transforms/SimplifyCFG/preserve-load-metadata-4.ll
  test/Verifier/dereferenceable-md.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18738.52494.patch
Type: text/x-patch
Size: 22098 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160403/c0c7230d/attachment.bin>


More information about the llvm-commits mailing list