Rewrite the branch selector to be correct in the face of large functions.
authorChris Lattner <sabre@nondot.org>
Sat, 18 Nov 2006 00:32:03 +0000 (00:32 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 18 Nov 2006 00:32:03 +0000 (00:32 +0000)
commit54e853b8a6435591f5733f3d0d3f196ae755079b
treebb518fafb94ded79da4eccd166f859e033306f1c
parentd5275157b540f53fe3795489229c021390e90b3f
Rewrite the branch selector to be correct in the face of large functions.
The algorithm it used before wasn't 100% correct, we now use an iterative
expansion model.  This fixes assembler errors when compiling 403.gcc with
tail merging enabled.

Change the way the branch selector works overall: Now, the isel generates
PPC::BCC instructions (as it used to) directly, and these BCC instructions
are emitted to the output or jitted directly if branches don't need
expansion.  Only if branches need expansion are instructions rewritten
and created.  This should make branch select faster, and eliminates the
Bxx instructions from the .td file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31837 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCBranchSelector.cpp
lib/Target/PowerPC/PPCInstrFormats.td
lib/Target/PowerPC/PPCInstrInfo.td
lib/Target/PowerPC/README.txt