aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-07-18 01:49:22 +0000
committerDan Gohman <gohman@apple.com>2009-07-18 01:49:22 +0000
commit5a206ee7edbd6eccc45f03054dad7a8b2eaf975b (patch)
tree21d3d0e944439d7e47d062cfd526f44b2e918c51
parent3837b64f4152bd074013c19b024b94ff52157a65 (diff)
downloadexternal_llvm-5a206ee7edbd6eccc45f03054dad7a8b2eaf975b.tar.gz
external_llvm-5a206ee7edbd6eccc45f03054dad7a8b2eaf975b.tar.bz2
external_llvm-5a206ee7edbd6eccc45f03054dad7a8b2eaf975b.zip
Make GetElementPtr ConstantExprs default to having no pointer overflow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76280 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/VMCore/Constants.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp
index 81f544b0e8..f6d8e86850 100644
--- a/lib/VMCore/Constants.cpp
+++ b/lib/VMCore/Constants.cpp
@@ -18,6 +18,7 @@
#include "llvm/Instructions.h"
#include "llvm/MDNode.h"
#include "llvm/Module.h"
+#include "llvm/Operator.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringMap.h"
@@ -474,8 +475,11 @@ public:
static GetElementPtrConstantExpr *Create(Constant *C,
const std::vector<Constant*>&IdxList,
const Type *DestTy) {
- return new(IdxList.size() + 1)
+ GetElementPtrConstantExpr *Result = new(IdxList.size() + 1)
GetElementPtrConstantExpr(C, IdxList, DestTy);
+ // Getelementptr defaults to having no pointer overflow.
+ cast<GEPOperator>(Result)->setHasNoPointerOverflow(true);
+ return Result;
}
/// Transparently provide more efficient getOperand methods.
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);