llvm-6502/lib/Transforms/Scalar
Chris Lattner 0b7c0bf249 Generalize this transform, using MaskedValueIsZero, allowing us to compile:
struct S { unsigned int i : 6, j : 11, k : 15; } b;
void plus3 (unsigned int x) { b.k += x; }

To:

plus3:
        mov %EAX, DWORD PTR [%ESP + 4]
        shl %EAX, 17
        add DWORD PTR [b], %EAX
        ret

instead of:

plus3:
        mov %EAX, DWORD PTR [%ESP + 4]
        shl %EAX, 17
        mov %ECX, DWORD PTR [b]
        add %EAX, %ECX
        and %EAX, -131072
        and %ECX, 131071
        or %ECX, %EAX
        mov DWORD PTR [b], %ECX
        ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23384 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-18 06:02:59 +00:00
..
ADCE.cpp
BasicBlockPlacement.cpp
CondPropagate.cpp
ConstantProp.cpp
CorrelatedExprs.cpp
DCE.cpp
DeadStoreElimination.cpp
GCSE.cpp
IndVarSimplify.cpp Allow indvar simplify to canonicalize ANY affine IV, not just affine IVs with 2005-08-10 01:12:06 +00:00
InstructionCombining.cpp Generalize this transform, using MaskedValueIsZero, allowing us to compile: 2005-09-18 06:02:59 +00:00
LICM.cpp
LoopStrengthReduce.cpp Fix an issue where LSR would miss rewriting a use of an IV expression by a PHI node that is not the original PHI. 2005-09-13 02:09:55 +00:00
LoopUnroll.cpp
LoopUnswitch.cpp
LowerConstantExprs.cpp
LowerGC.cpp
LowerPacked.cpp
Makefile
PRE.cpp
Reassociate.cpp Fix a problem that Dan Berlin noticed, where reassociation would not succeed 2005-09-02 07:07:58 +00:00
ScalarReplAggregates.cpp
SCCP.cpp
SimplifyCFG.cpp
TailDuplication.cpp
TailRecursionElimination.cpp