remove two implemented items

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26728 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-03-13 06:52:22 +00:00
parent 947c28935d
commit 2e8a77ff42

View File

@ -56,20 +56,6 @@ Number 1 is the preferred solution.
//===---------------------------------------------------------------------===//
DAG combine this into mul A, 8:
int %test(int %A) {
%B = mul int %A, 8 ;; shift
%C = add int %B, 7 ;; dead, no demanded bits.
%D = and int %C, -8 ;; dead once add is gone.
ret int %D
}
This sort of thing occurs in the alloca lowering code and other places that
are generating alignment of an already aligned value.
//===---------------------------------------------------------------------===//
Turn this into a signed shift right in instcombine:
int f(unsigned x) {
@ -81,14 +67,6 @@ http://gcc.gnu.org/ml/gcc-patches/2006-02/msg01492.html
//===---------------------------------------------------------------------===//
We should reassociate:
int f(int a, int b){ return a * a + 2 * a * b + b * b; }
into:
int f(int a, int b) { return a * (a + 2 * b) + b * b; }
to eliminate a multiply.
//===---------------------------------------------------------------------===//
On targets with expensive 64-bit multiply, we could LSR this:
for (i = ...; ++i) {