diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-09-18 06:30:59 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-09-18 06:30:59 +0000 | 
| commit | 797dee77053e4bbf0b95ae02ab725b279cf817ef (patch) | |
| tree | 907280b0f7a80507b57bed54ec2eaa1ec299f455 /llvm/lib/Transforms/Utils | |
| parent | 01f56c68e947157ab3aa6a3bfde7ebde73d18821 (diff) | |
| download | bcm5719-llvm-797dee77053e4bbf0b95ae02ab725b279cf817ef.tar.gz bcm5719-llvm-797dee77053e4bbf0b95ae02ab725b279cf817ef.zip | |
Compile
struct S { unsigned int i : 6, j : 11, k : 15; } b;
void plus2 (unsigned int x) {
  b.j += x;
}
to:
plus2:
        mov %EAX, DWORD PTR [b]
        mov %ECX, %EAX
        and %ECX, 131008
        mov %EDX, DWORD PTR [%ESP + 4]
        shl %EDX, 6
        add %EDX, %ECX
        and %EDX, 131008
        and %EAX, -131009
        or %EDX, %EAX
        mov DWORD PTR [b], %EDX
        ret
instead of:
plus2:
        mov %EAX, DWORD PTR [b]
        mov %ECX, %EAX
        shr %ECX, 6
        and %ECX, 2047
        add %ECX, DWORD PTR [%ESP + 4]
        shl %ECX, 6
        and %ECX, 131008
        and %EAX, -131009
        or %ECX, %EAX
        mov DWORD PTR [b], %ECX
        ret
llvm-svn: 23385
Diffstat (limited to 'llvm/lib/Transforms/Utils')
0 files changed, 0 insertions, 0 deletions

