diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2006-11-13 00:23:28 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2006-11-13 00:23:28 +0000 |
commit | bf63734a1b938999a68f41569376e8654fdbc252 (patch) | |
tree | 29285a6d54dfd94722de509d7b25491e5b3a1578 | |
parent | b39a55a2e7921b4ee147b068aa70a13c463481ae (diff) |
Cute example from Chris Lattner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31696 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/README.txt | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/Target/README.txt b/lib/Target/README.txt index 3e5dbf6172..18cd4f66f2 100644 --- a/lib/Target/README.txt +++ b/lib/Target/README.txt @@ -360,3 +360,43 @@ are turned into memcpy calls at the source level. We need a "loops to memcpy" pass. //===---------------------------------------------------------------------===// + +-predsimplify should transform this: + +void bad(unsigned x) +{ + if (x > 4) + bar(12); + else if (x > 3) + bar(523); + else if (x > 2) + bar(36); + else if (x > 1) + bar(65); + else if (x > 0) + bar(45); + else + bar(367); +} + +into: + +void good(unsigned x) +{ + if (x == 4) + bar(523); + else if (x == 3) + bar(36); + else if (x == 2) + bar(65); + else if (x == 1) + bar(45); + else if (x == 0) + bar(367); + else + bar(12); +} + +to enable further optimizations. + +//===---------------------------------------------------------------------===// |