diff options
-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. + +//===---------------------------------------------------------------------===// |