From 8eb054a87df2c0f49481e70c673cdbbb63aee024 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Wed, 18 Aug 2021 09:26:03 +0100 Subject: [PATCH] AArch64: compare correct type for multi-valued SDNode. If Orig produces more than one value (rare) with different types (rarer) then we need to make sure we check against the one that Orig actually represents, not just the first type. Unfortunately because of the combination of things that need to happen I wasn't able to produce a test. --- llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp index 8de9bd7..0e5e704 100644 --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -15378,7 +15378,7 @@ static SDValue foldTruncStoreOfExt(SelectionDAG &DAG, SDNode *N) { ExtOpCode != ISD::ANY_EXTEND) return SDValue(); SDValue Orig = Ext->getOperand(0); - if (Store->getMemoryVT() != Orig->getValueType(0)) + if (Store->getMemoryVT() != Orig.getValueType()) return SDValue(); return DAG.getStore(Store->getChain(), SDLoc(Store), Orig, Store->getBasePtr(), Store->getPointerInfo(), -- 2.7.4