diff options
author | Chris Lattner <sabre@nondot.org> | 2009-03-04 04:46:18 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-03-04 04:46:18 +0000 |
commit | 5512f28fa7b26e87e613dc1558b29b2a89647809 (patch) | |
tree | de00b82ae97cd0b553496c55e68263d3467a2388 /lib/Basic/IdentifierTable.cpp | |
parent | 91ee0140ecb60b5c1402edc9e577257636c4ca60 (diff) |
add a special case for codegen that improves the case where we have
multiple sequential cases to a) not create tons of fall-through basic blocks
and b) not recurse deeply. This fixes codegen on 100K deep cases, and improves
codegen on moderate cases from this:
switch i32 %tmp, label %sw.epilog [
i32 1000, label %sw.bb
i32 1001, label %sw.bb1
i32 1002, label %sw.bb2
i32 1003, label %sw.bb3
i32 1004, label %sw.bb4
...
sw.bb: ; preds = %entry
br label %sw.bb1
sw.bb1: ; preds = %entry, %sw.bb
br label %sw.bb2
sw.bb2: ; preds = %entry, %sw.bb1
br label %sw.bb3
sw.bb3: ; preds = %entry, %sw.bb2
br label %sw.bb4
to:
switch i32 %tmp, label %sw.epilog [
i32 1000, label %sw.bb
i32 1001, label %sw.bb
i32 1002, label %sw.bb
i32 1003, label %sw.bb
i32 1004, label %sw.bb
sw.bb: ;; many preds
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66015 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/IdentifierTable.cpp')
0 files changed, 0 insertions, 0 deletions