Updated the enhanced disassembly library to produce
authorSean Callanan <scallanan@apple.com>
Tue, 9 Feb 2010 01:50:54 +0000 (01:50 +0000)
committerSean Callanan <scallanan@apple.com>
Tue, 9 Feb 2010 01:50:54 +0000 (01:50 +0000)
whitespace tokens in the right places.

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

tools/edis/EDToken.cpp

index 9408305d4bbeb37331e8f6611166fac65c488d73..cd79152e35946d092d9aaa34081bd124f47d9f87 100644 (file)
@@ -106,11 +106,28 @@ int EDToken::tokenize(std::vector<EDToken*> &tokens,
   
   bool readOpcode = false;
   
+  const char *wsPointer = asmTokens.begin()->getLoc().getPointer();
+  
   for (tokenIterator = asmTokens.begin();
        tokenIterator != asmTokens.end();
        ++tokenIterator) {
     SMLoc tokenLoc = tokenIterator->getLoc();
     
+    const char *tokenPointer = tokenLoc.getPointer();
+    
+    if(tokenPointer > wsPointer) {
+      unsigned long wsLength = tokenPointer - wsPointer;
+      
+      EDToken *whitespaceToken = new EDToken(StringRef(wsPointer, wsLength),
+                                             EDToken::kTokenWhitespace,
+                                             0,
+                                             disassembler);
+      
+      tokens.push_back(whitespaceToken);
+    }
+    
+    wsPointer = tokenPointer + tokenIterator->getString().size();
+    
     while (operandIterator != parsedOperands.end() &&
            tokenLoc.getPointer() > 
            (*operandIterator)->getEndLoc().getPointer()) {