From: Chris Lattner Date: Mon, 26 Jul 2004 01:22:59 +0000 (+0000) Subject: Fix an extremely serious regression that was causing LLVM basic blocks to be X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=badf091b47ee6c7db7cb549381f693a7850c1595;p=oota-llvm.git Fix an extremely serious regression that was causing LLVM basic blocks to be scrambled around almost at random, having really bad effects on icache locality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15225 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index d7c1723b69f..440056de2df 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -383,6 +383,12 @@ static BasicBlock *getBBVal(const ValID &ID, bool isDefinition = false) { ThrowException("Redefinition of label " + ID.getName()); ID.destroy(); // Free strdup'd memory. + + // Make sure to move the basic block to the correct location in the + // function, instead of leaving it inserted wherever it was first + // referenced. + CurFun.CurrentFunction->getBasicBlockList().remove(BB); + CurFun.CurrentFunction->getBasicBlockList().push_back(BB); return BB; }