From bf63734a1b938999a68f41569376e8654fdbc252 Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Mon, 13 Nov 2006 00:23:28 +0000 Subject: [PATCH] Cute example from Chris Lattner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31696 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/README.txt | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/lib/Target/README.txt b/lib/Target/README.txt index 3e5dbf6172d..18cd4f66f26 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. + +//===---------------------------------------------------------------------===// -- 2.34.1