From: Simon Dardis Date: Wed, 9 Aug 2017 10:47:52 +0000 (+0000) Subject: [mips] PR34083 - Wimplicit-fallthrough warning in MipsAsmParser.cpp X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9e8fa29eb7e16b31b2f1a02c1c1cc08df3bffa33;p=llvm [mips] PR34083 - Wimplicit-fallthrough warning in MipsAsmParser.cpp Assert that a binary expression is actually a binary expression, rather than potientially incorrectly attempting to handle it as a unary expression. This resolves PR34083. Thanks to Simonn Pilgrim for reporting the issue! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310460 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp index e12188e7060..8a5de0150ad 100644 --- a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp +++ b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp @@ -5439,12 +5439,13 @@ bool MipsAsmParser::isEvaluated(const MCExpr *Expr) { return true; case MCExpr::SymbolRef: return (cast(Expr)->getKind() != MCSymbolRefExpr::VK_None); - case MCExpr::Binary: - if (const MCBinaryExpr *BE = dyn_cast(Expr)) { - if (!isEvaluated(BE->getLHS())) - return false; - return isEvaluated(BE->getRHS()); - } + case MCExpr::Binary: { + const MCBinaryExpr *BE = dyn_cast(Expr); + assert(BE && "Binary expression is not a binary expression?"); + if (!isEvaluated(BE->getLHS())) + return false; + return isEvaluated(BE->getRHS()); + } case MCExpr::Unary: return isEvaluated(cast(Expr)->getSubExpr()); case MCExpr::Target: