diff options
author | Kostya Serebryany <kcc@google.com> | 2016-12-27 21:20:06 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2016-12-27 21:20:06 +0000 |
commit | f24e52c0c27d9195b947c776c7ac00459cdf4205 (patch) | |
tree | d7e83581109394fc13c82edb5b74a6ed04572df2 /llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp | |
parent | 14b1bcc14b6b9139c74d0f8f65455781635850b4 (diff) | |
download | bcm5719-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.cpp | 5 |
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, |