Fix comparator used for looking up previously instantiated EDDisassemblers.
authorShantonu Sen <ssen@apple.com>
Wed, 9 Feb 2011 21:03:19 +0000 (21:03 +0000)
committerShantonu Sen <ssen@apple.com>
Wed, 9 Feb 2011 21:03:19 +0000 (21:03 +0000)
Now, Syntax is only used as a tie-breaker if the Arch
matches. Previously, a request for x86_64 disassembler followed by the
i386 disassembler in a single process would return the cached x86_64
disassembler. Fixes <rdar://problem/8958982>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125215 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCDisassembler/EDDisassembler.h

index fdbe7ad24c18150523a77c02967bcbe0154c4602..71e45f0b042f8b253dff98d0ae81aa794b03d645 100644 (file)
@@ -89,8 +89,10 @@ struct EDDisassembler {
     bool operator<(const CPUKey &key) const {
       if(Arch > key.Arch)
         return false;
-      if(Syntax >= key.Syntax)
-        return false;
+      else if (Arch == key.Arch) {
+        if(Syntax > key.Syntax)
+          return false;
+      }
       return true;
     }
   };