OSDN Git Service

Fix PR1178
authorChris Lattner <sabre@nondot.org>
Mon, 5 Feb 2007 21:23:52 +0000 (21:23 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 5 Feb 2007 21:23:52 +0000 (21:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33924 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter.cpp

index 37fb51f..9f867a8 100644 (file)
@@ -839,9 +839,19 @@ void AsmPrinter::PrintSpecial(const MachineInstr *MI, const char *Code) {
   } else if (!strcmp(Code, "uid")) {
     // Assign a unique ID to this machine instruction.
     static const MachineInstr *LastMI = 0;
+    static const Function *F = 0;
     static unsigned Counter = 0U-1;
+
+    // Comparing the address of MI isn't sufficient, because machineinstrs may
+    // be allocated to the same address across functions.
+    const Function *ThisF = MI->getParent()->getParent()->getFunction();
+    
     // If this is a new machine instruction, bump the counter.
-    if (LastMI != MI) { ++Counter; LastMI = MI; }
+    if (LastMI != MI || F != ThisF) {
+      ++Counter;
+      LastMI = MI;
+      ThisF = F;
+    }
     O << Counter;
   } else {
     cerr << "Unknown special formatter '" << Code