Skip to content

Commit 4f41698

Browse files
authored
[NFC][msan] Prepare function to extract main logic (#94880)
1 parent be06761 commit 4f41698

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4486,10 +4486,15 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
44864486
Value *B = I.getCondition();
44874487
Value *C = I.getTrueValue();
44884488
Value *D = I.getFalseValue();
4489+
44894490
Value *Sb = getShadow(B);
44904491
Value *Sc = getShadow(C);
44914492
Value *Sd = getShadow(D);
44924493

4494+
Value *Ob = MS.TrackOrigins ? getOrigin(B) : nullptr;
4495+
Value *Oc = MS.TrackOrigins ? getOrigin(C) : nullptr;
4496+
Value *Od = MS.TrackOrigins ? getOrigin(D) : nullptr;
4497+
44934498
// Result shadow if condition shadow is 0.
44944499
Value *Sa0 = IRB.CreateSelect(B, Sc, Sd);
44954500
Value *Sa1;
@@ -4522,10 +4527,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
45224527
}
45234528
// a = select b, c, d
45244529
// Oa = Sb ? Ob : (b ? Oc : Od)
4525-
setOrigin(
4526-
&I, IRB.CreateSelect(Sb, getOrigin(I.getCondition()),
4527-
IRB.CreateSelect(B, getOrigin(I.getTrueValue()),
4528-
getOrigin(I.getFalseValue()))));
4530+
setOrigin(&I, IRB.CreateSelect(Sb, Ob, IRB.CreateSelect(B, Oc, Od)));
45294531
}
45304532
}
45314533

0 commit comments

Comments
 (0)