summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExpr.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-03-04 04:46:18 +0000
committerChris Lattner <sabre@nondot.org>2009-03-04 04:46:18 +0000
commit4192bce91b2c4baf36d3cec47eeb33b2ef93648b (patch)
treeab88fd6f43804f94538f4b157eb0de6bd4921c0a /clang/lib/CodeGen/CGExpr.cpp
parent9bbf1ba1e6ed08efd19dcfa11c8549f472d430ed (diff)
downloadbcm5719-llvm-4192bce91b2c4baf36d3cec47eeb33b2ef93648b.tar.gz
bcm5719-llvm-4192bce91b2c4baf36d3cec47eeb33b2ef93648b.zip
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 llvm-svn: 66015
Diffstat (limited to 'clang/lib/CodeGen/CGExpr.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud