From c5c730b0e054de89cbd1ad710157c41e8b5c4381 Mon Sep 17 00:00:00 2001 From: Shuxin Yang Date: Thu, 10 Jan 2013 23:32:01 +0000 Subject: PR14904: Segmentation fault running pass 'Recognize loop idioms' The root cause is mistakenly taking for granted that "dyn_cast(a-Value)" return a non-NULL instruction. llvm-svn: 172145 --- llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp') diff --git a/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp b/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp index c4f90125ac5..8258719a020 100644 --- a/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp +++ b/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp @@ -407,7 +407,7 @@ bool NclPopcountRecognize::detectIdiom(Instruction *&CntInst, // step 2: detect instructions corresponding to "x2 = x1 & (x1 - 1)" { - if (DefX2->getOpcode() != Instruction::And) + if (!DefX2 || DefX2->getOpcode() != Instruction::And) return false; BinaryOperator *SubOneOp; -- cgit v1.2.3