diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp index 0d45bc3bfebdc..ffb4e5b94c20b 100644 --- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -4481,12 +4481,17 @@ struct MemorySanitizerVisitor : public InstVisitor { } void visitSelectInst(SelectInst &I) { - IRBuilder<> IRB(&I); // a = select b, c, d Value *B = I.getCondition(); Value *C = I.getTrueValue(); Value *D = I.getFalseValue(); + handleSelectLikeInst(I, B, C, D); + } + + void handleSelectLikeInst(Instruction &I, Value *B, Value *C, Value *D) { + IRBuilder<> IRB(&I); + Value *Sb = getShadow(B); Value *Sc = getShadow(C); Value *Sd = getShadow(D);