Fix pr6543: svn r88806 changed MachineJumpTableInfo::getJumpTableIndex() to
authorBob Wilson <bob.wilson@apple.com>
Thu, 18 Mar 2010 18:42:41 +0000 (18:42 +0000)
committerBob Wilson <bob.wilson@apple.com>
Thu, 18 Mar 2010 18:42:41 +0000 (18:42 +0000)
commitd1ec31dca534a8816d7f2fcbfdc7ed4476b471d3
tree774413147f4a222106266f4cee1b6f7e1d18e953
parent74cdc75313974456d1f040ca2dca33f16a18f9b3
Fix pr6543: svn r88806 changed MachineJumpTableInfo::getJumpTableIndex() to
always create a new jump table.  The intention was to avoid merging jump
tables in SelectionDAGBuilder, and to wait for the branch folding pass to
merge tables.  Unfortunately, the same getJumpTableIndex() method is also
used to merge tables in branch folding, so as a result of this change
branch tables are never merged.  Worse, the branch folding code is expecting
getJumpTableIndex to always return the index of an existing table, but with
this change, it never does so.  In at least some cases, e.g., pr6543, this
creates references to non-existent tables.

I've fixed the problem by adding a new createJumpTableIndex function, which
will always create a new table, and I've changed getJumpTableIndex to only
look at existing tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98845 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/MachineJumpTableInfo.h
lib/CodeGen/MachineFunction.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp