summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2016-12-27 21:20:06 +0000
committerKostya Serebryany <kcc@google.com>2016-12-27 21:20:06 +0000
commitf24e52c0c27d9195b947c776c7ac00459cdf4205 (patch)
treed7e83581109394fc13c82edb5b74a6ed04572df2 /llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
parent14b1bcc14b6b9139c74d0f8f65455781635850b4 (diff)
downloadbcm5719-llvm-f24e52c0c27d9195b947c776c7ac00459cdf4205.tar.gz
bcm5719-llvm-f24e52c0c27d9195b947c776c7ac00459cdf4205.zip
[sanitizer-coverage] sort the switch cases
llvm-svn: 290628
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp')
-rw-r--r--llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
index 8ef6be293d7..5b4b1fb7713 100644
--- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
+++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
@@ -601,6 +601,11 @@ void SanitizerCoverageModule::InjectTraceForSwitch(
C = ConstantExpr::getCast(CastInst::ZExt, It.getCaseValue(), Int64Ty);
Initializers.push_back(C);
}
+ std::sort(Initializers.begin() + 2, Initializers.end(),
+ [](const Constant *A, const Constant *B) {
+ return cast<ConstantInt>(A)->getLimitedValue() <
+ cast<ConstantInt>(B)->getLimitedValue();
+ });
ArrayType *ArrayOfInt64Ty = ArrayType::get(Int64Ty, Initializers.size());
GlobalVariable *GV = new GlobalVariable(
*CurModule, ArrayOfInt64Ty, false, GlobalVariable::InternalLinkage,
OpenPOWER on IntegriCloud