From owner-svn-src-all@FreeBSD.ORG Mon Jul 8 17:57:12 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 09F6C56A; Mon, 8 Jul 2013 17:57:12 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id EEF601F0B; Mon, 8 Jul 2013 17:57:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r68HvBsg059786; Mon, 8 Jul 2013 17:57:11 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r68HvB2i059785; Mon, 8 Jul 2013 17:57:11 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201307081757.r68HvB2i059785@svn.freebsd.org> From: Dimitry Andric Date: Mon, 8 Jul 2013 17:57:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r253042 - head/contrib/llvm/lib/CodeGen/SelectionDAG X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Jul 2013 17:57:12 -0000 Author: dim Date: Mon Jul 8 17:57:11 2013 New Revision: 253042 URL: http://svnweb.freebsd.org/changeset/base/253042 Log: Pull in r185616 from llvm trunk: FastISel can only append to basic blocks. Compute the insertion point from the end of the basic block instead of skipping labels from the front. This caused failures in landing pads when live-in copies where inserted before instruction selection. I missed this change in r252720; without it, certain compilation flags can cause exception labels to not be generated, but still referenced, leading to link errors. Reported by: zeising MFC after: 3 days Modified: head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp Modified: head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp ============================================================================== --- head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp Mon Jul 8 17:20:05 2013 (r253041) +++ head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp Mon Jul 8 17:57:11 2013 (r253042) @@ -75,15 +75,12 @@ STATISTIC(NumFastIselDead, "Number of de void FastISel::startNewBlock() { LocalValueMap.clear(); + // Instructions are appended to FuncInfo.MBB. If the basic block already + // contains labels or copies, use the last instruction as the last local + // value. EmitStartPt = 0; - - // Advance the emit start point past any EH_LABEL instructions. - MachineBasicBlock::iterator - I = FuncInfo.MBB->begin(), E = FuncInfo.MBB->end(); - while (I != E && I->getOpcode() == TargetOpcode::EH_LABEL) { - EmitStartPt = I; - ++I; - } + if (!FuncInfo.MBB->empty()) + EmitStartPt = &FuncInfo.MBB->back(); LastLocalValue = EmitStartPt; }