[PATCH] D11212: [SCEV] Apply NSW and NUW flags via poison value analysis

Bjarke Hammersholt Roune broune at google.com
Wed Jul 15 17:47:47 PDT 2015


broune updated this revision to Diff 29858.
broune added a comment.

Added and used isGuaranteedToTransferExecutionToSuccessor (is there a better name?). Also slight improvement to comments.

I checked all the instructions in the langref to see if any others might also not terminate. All I found is that while the langref doesn't explicitly say so, some atomics like atomicrmw do not necessarily terminate if another thread keeps interfering. Looking at the C++14 standard, some thread is guaranteed to make progress but I could not find a statement that any given thread is guaranteed to make progress, so I made isGuaranteedToTransferExecutionToSuccessor conservative on that point.


http://reviews.llvm.org/D11212

Files:
  include/llvm/Analysis/ScalarEvolution.h
  include/llvm/Analysis/ValueTracking.h
  lib/Analysis/ScalarEvolution.cpp
  lib/Analysis/ValueTracking.cpp
  test/Analysis/Delinearization/multidim_ivs_and_integer_offsets_3d.ll
  test/Analysis/Delinearization/multidim_ivs_and_parameteric_offsets_3d.ll
  test/Analysis/ScalarEvolution/flags-from-poison.ll
  test/Transforms/LoopStrengthReduce/sext-ind-var.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D11212.29858.patch
Type: text/x-patch
Size: 32104 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150716/3aa3ae38/attachment.bin>


More information about the llvm-commits mailing list