Simplify MCContext::(Next|Get)Instance

- Allocate MCLabels in the context so they don't leak.
- Avoid duplicated densemap lookup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104020 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/MC/MCContext.cpp b/lib/MC/MCContext.cpp
index 5cc72e8..53ffc94 100644
--- a/lib/MC/MCContext.cpp
+++ b/lib/MC/MCContext.cpp
@@ -73,33 +73,17 @@
 }
 
 unsigned MCContext::NextInstance(int64_t LocalLabelVal) {
-  unsigned Instance;
-  MCLabel *Label;
-  Label = Instances[LocalLabelVal];
-  if (Label) {
-    Instance = Label->incInstance();
-  }
-  else {
-    Instance = 1;
-    Label = new MCLabel(Instance);
-    Instances[LocalLabelVal] = Label;
-  }
-  return Instance;
+  MCLabel *&Label = Instances[LocalLabelVal];
+  if (!Label)
+    Label = new (*this) MCLabel(0);
+  return Label->incInstance();
 }
 
 unsigned MCContext::GetInstance(int64_t LocalLabelVal) {
-  int Instance;
-  MCLabel *Label;
-  Label = Instances[LocalLabelVal];
-  if (Label) {
-    Instance = Label->getInstance();
-  }
-  else {
-    Instance = 0;
-    Label = new MCLabel(Instance);
-    Instances[LocalLabelVal] = Label;
-  }
-  return Instance;
+  MCLabel *&Label = Instances[LocalLabelVal];
+  if (!Label)
+    Label = new (*this) MCLabel(0);
+  return Label->getInstance();
 }
 
 MCSymbol *MCContext::CreateDirectionalLocalSymbol(int64_t LocalLabelVal) {