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 | 0df2ada9d49aeb9e407773deb1ecfe78a1d9ed1b (patch) | |
| tree | cb868c434ba155e6e8624b6e76ec998dc155a008 /llvm/lib | |
| parent | ad75361d42b450f24ea033f8923b9c865fbef86b (diff) | |
| download | bcm5719-llvm-0df2ada9d49aeb9e407773deb1ecfe78a1d9ed1b.tar.gz bcm5719-llvm-0df2ada9d49aeb9e407773deb1ecfe78a1d9ed1b.zip | |
Cute example from Chris Lattner.
llvm-svn: 31696
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/README.txt | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/lib/Target/README.txt b/llvm/lib/Target/README.txt index 3e5dbf6172d..18cd4f66f26 100644 --- a/llvm/lib/Target/README.txt +++ b/llvm/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. + +//===---------------------------------------------------------------------===// |

