[llvm] r175063 - [ms-inline-asm] Use an array_pod_sort, rather than a std:sort.

Timur Iskhodzhanov timurrrr at google.com
Fri Feb 15 01:45:38 PST 2013


FYI this crashes on my Windows bot.

I'll update with the details when I reproduce locally.

2013/2/13 Chad Rosier <mcrosier at apple.com>:
> Author: mcrosier
> Date: Wed Feb 13 12:38:58 2013
> New Revision: 175063
>
> URL: http://llvm.org/viewvc/llvm-project?rev=175063&view=rev
> Log:
> [ms-inline-asm] Use an array_pod_sort, rather than a std:sort.
>
>
> Modified:
>     llvm/trunk/lib/MC/MCParser/AsmParser.cpp
>
> Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=175063&r1=175062&r2=175063&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
> +++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Wed Feb 13 12:38:58 2013
> @@ -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(SM
>    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 *A
>    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();
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list