diff options
author | Chris Lattner <sabre@nondot.org> | 2004-07-26 01:22:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-07-26 01:22:59 +0000 |
commit | badf091b47ee6c7db7cb549381f693a7850c1595 (patch) | |
tree | 70f8dd128c5da304434bb006bb1c99a9865ecc69 | |
parent | 1d78516c651368b8d9e3a20f1442982c9398b5be (diff) |
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
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index d7c1723b69..440056de2d 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; } |