diff options
author | Chris Lattner <sabre@nondot.org> | 2005-03-06 02:14:28 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-03-06 02:14:28 +0000 |
commit | 04cb800c324ef661017aff474e266ed7f2cddb90 (patch) | |
tree | ff69ae5b4e7e08abb9c04edd889b9ac9ddbf5a3b /lib/Transforms/TransformInternals.cpp | |
parent | eaadf5827692ae713faa6b38175559568c3dba26 (diff) |
This fixes PR531, a crash when running the CBE on a bytecode file.
The problem is that Function::renameLocalSymbols is iterating through
the symbol table planes, occasionally calling setName to rename a value
(which used to do a symbol table remove/insert pair).
The problem is that if there is only a single value in a particular type
plane that the remove will nuke the symbol table plane, and the insert
will create and insert a new one. This hoses Function::renameLocalSymbols
because it has an iterator to the old plane, under the (very reasonable)
assumption that simply renaming a value won't cause the type plane to
disappear.
This patch fixes the bug by making the rename operation a single atomic
operation, which has a side effect of making the whole thing faster too. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20469 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/TransformInternals.cpp')
0 files changed, 0 insertions, 0 deletions