From 4dc93743c9d40c29c0a3bec2aae328cac0d289e8 Mon Sep 17 00:00:00 2001
From: dim <dim@FreeBSD.org>
Date: Sun, 19 Aug 2012 10:31:50 +0000
Subject: Vendor import of llvm trunk r162107:
 http://llvm.org/svn/llvm-project/llvm/trunk@162107

---
 lib/Analysis/MemoryBuiltins.cpp | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'lib/Analysis/MemoryBuiltins.cpp')

diff --git a/lib/Analysis/MemoryBuiltins.cpp b/lib/Analysis/MemoryBuiltins.cpp
index c0cc27b..e77d2ff 100644
--- a/lib/Analysis/MemoryBuiltins.cpp
+++ b/lib/Analysis/MemoryBuiltins.cpp
@@ -473,6 +473,10 @@ ObjectSizeOffsetVisitor::visitExtractValueInst(ExtractValueInst&) {
 }
 
 SizeOffsetType ObjectSizeOffsetVisitor::visitGEPOperator(GEPOperator &GEP) {
+  // Ignore self-referencing GEPs, they can occur in unreachable code.
+  if (&GEP == GEP.getPointerOperand())
+    return unknown();
+
   SizeOffsetType PtrData = compute(GEP.getPointerOperand());
   if (!bothKnown(PtrData) || !GEP.hasAllConstantIndices())
     return unknown();
-- 
cgit v1.1