Teach lib/VMCore/ConstantFold.cpp how to set the inbounds keyword and
authorDan Gohman <gohman@apple.com>
Fri, 11 Sep 2009 00:04:14 +0000 (00:04 +0000)
committerDan Gohman <gohman@apple.com>
Fri, 11 Sep 2009 00:04:14 +0000 (00:04 +0000)
commit3bfbc4587a7e79f08f8c126a9e62c3475fb90f8b
treeeee9e6eee6f91607643fd54d7b9030faf8a7c4fb
parente6992f728a94654e43269580a10a667f18dadba9
Teach lib/VMCore/ConstantFold.cpp how to set the inbounds keyword and
how to fold notionally-out-of-bounds array getelementptr indices instead
of just doing these in lib/Analysis/ConstantFolding.cpp, because it can
be done in a fairly general way without TargetData, and because not all
constants are visited by lib/Analysis/ConstantFolding.cpp. This enables
more constant folding.

Also, set the "inbounds" flag when the getelementptr indices are
one-past-the-end.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81483 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/ConstantFolding.cpp
lib/VMCore/ConstantFold.cpp
lib/VMCore/ConstantFold.h
lib/VMCore/Constants.cpp
test/Assembler/getelementptr.ll
test/Transforms/InstCombine/constant-fold-gep.ll
test/Transforms/InstCombine/getelementptr.ll