diff options
author | Chad Rosier <mcrosier@apple.com> | 2013-02-13 18:38:58 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2013-02-13 18:38:58 +0000 |
commit | eb5c16893bd6407f0cf240c6afed638d522fdef1 (patch) | |
tree | 8588cd5198f0bc8e6547e9a0e84a058cc77d2624 /llvm/lib/MC/MCParser/AsmParser.cpp | |
parent | 5d47a9b253e48662840528e8d2a8e812b840b05a (diff) | |
download | bcm5719-llvm-eb5c16893bd6407f0cf240c6afed638d522fdef1.tar.gz bcm5719-llvm-eb5c16893bd6407f0cf240c6afed638d522fdef1.zip |
[ms-inline-asm] Use an array_pod_sort, rather than a std:sort.
llvm-svn: 175063
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp')
-rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 0644ea341a3..2cce8b0e43f 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -13,6 +13,7 @@ #include "llvm/ADT/APFloat.h" #include "llvm/ADT/SmallString.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/Twine.h" #include "llvm/MC/MCAsmInfo.h" @@ -4029,8 +4030,14 @@ bool AsmParser::ParseDirectiveMSAlign(SMLoc IDLoc, ParseStatementInfo &Info) { return false; } -bool AsmStringSort (AsmRewrite A, AsmRewrite B) { - return A.Loc.getPointer() < B.Loc.getPointer(); +static int RewritesSort (const void *A, const void *B) { + const AsmRewrite *AsmRewriteA = static_cast<const AsmRewrite*>(A); + const AsmRewrite *AsmRewriteB = static_cast<const AsmRewrite*>(B); + if (AsmRewriteA->Loc.getPointer() < AsmRewriteB->Loc.getPointer()) + return -1; + if (AsmRewriteB->Loc.getPointer() < AsmRewriteA->Loc.getPointer()) + return 1; + return 0; } bool AsmParser::ParseMSInlineAsm(void *AsmLoc, std::string &AsmString, @@ -4157,7 +4164,7 @@ bool AsmParser::ParseMSInlineAsm(void *AsmLoc, std::string &AsmString, AsmRewriteKind PrevKind = AOK_Imm; raw_string_ostream OS(AsmStringIR); const char *Start = SrcMgr.getMemoryBuffer(0)->getBufferStart(); - std::sort (AsmStrRewrites.begin(), AsmStrRewrites.end(), AsmStringSort); + array_pod_sort (AsmStrRewrites.begin(), AsmStrRewrites.end(), RewritesSort); for (SmallVectorImpl<struct AsmRewrite>::iterator I = AsmStrRewrites.begin(), E = AsmStrRewrites.end(); I != E; ++I) { const char *Loc = (*I).Loc.getPointer(); |