Runtime error check elimination
authorJohannes Doerfert <doerfert@cs.uni-saarland.de>
Thu, 10 Sep 2015 17:51:27 +0000 (17:51 +0000)
committerJohannes Doerfert <doerfert@cs.uni-saarland.de>
Thu, 10 Sep 2015 17:51:27 +0000 (17:51 +0000)
commit90db75ed24fdfe533ca0cbfa7771618959a9fd41
tree42eede43fa74b461a3ac262eec9a1f8f4bfc7fcf
parent053701399d42c76fdaff6c16f44494516c046c80
Runtime error check elimination

  Hoist runtime checks in the loop nest if they guard an "error" like event.
  Such events are recognized as blocks with an unreachable terminator or a call
  to the ubsan function that deals with out of bound accesses. Other "error"
  events can be added easily.

  We will ignore these blocks when we detect/model/optmize and code generate SCoPs
  but we will make sure that they would not have been executed using the assumption
  framework.

llvm-svn: 247310
polly/include/polly/Support/ScopHelper.h
polly/lib/Analysis/ScopDetection.cpp
polly/lib/Analysis/ScopInfo.cpp
polly/lib/Support/ScopHelper.cpp
polly/test/ScopInfo/BoundChecks/single-loop.ll
polly/test/ScopInfo/BoundChecks/two-loops.ll [new file with mode: 0644]