Date: Tue, 9 Jan 2018 17:41:35 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r327734 - projects/clang600-import/contrib/llvm/lib/CodeGen Message-ID: <201801091741.w09HfZid013561@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Tue Jan 9 17:41:34 2018 New Revision: 327734 URL: https://svnweb.freebsd.org/changeset/base/327734 Log: Pull in r322056 from upstream llvm trunk (by Serguei Katkov): [CGP] Fix Complex addressing mode for offset If the offset is differ in two addressing mode we can continue only if ScaleReg is not set due to we will use it as merge of different offsets. It should fix PR35799 and PR35805. Reviewers: john.brawn, reames Reviewed By: reames Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41227 This should fix "ScaledReg == nullptr" assertions when building the graphics/xpx, mail/alpine and editors/pico-alpine ports. Reported by: jbeich PR: 224866, 224995 Modified: projects/clang600-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp Modified: projects/clang600-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp ============================================================================== --- projects/clang600-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp Tue Jan 9 17:38:43 2018 (r327733) +++ projects/clang600-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp Tue Jan 9 17:41:34 2018 (r327734) @@ -2700,8 +2700,13 @@ class AddressingModeCombiner { (public) // we still need to collect it due to original value is different. // And later we will need all original values as anchors during // finding the common Phi node. + // We also must reject the case when base offset is different and + // scale reg is not null, we cannot handle this case due to merge of + // different offsets will be used as ScaleReg. if (DifferentField != ExtAddrMode::MultipleFields && - DifferentField != ExtAddrMode::ScaleField) { + DifferentField != ExtAddrMode::ScaleField && + (DifferentField != ExtAddrMode::BaseOffsField || + !NewAddrMode.ScaledReg)) { AddrModes.emplace_back(NewAddrMode); return true; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201801091741.w09HfZid013561>