diff --git a/lib/MC/MCContext.cpp b/lib/MC/MCContext.cpp index 5cc72e8e9f5..53ffc9409a6 100644 --- a/lib/MC/MCContext.cpp +++ b/lib/MC/MCContext.cpp @@ -73,33 +73,17 @@ MCSymbol *MCContext::CreateTempSymbol() { } 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) {