diff options
author | Chris Lattner <sabre@nondot.org> | 2004-03-01 02:34:08 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-03-01 02:34:08 +0000 |
commit | 5c7d3cda78b3d506b2876b5d6d0376b52016b261 (patch) | |
tree | 7d7c0b3fc1c15b76be8c8bbb30e3174e8ac9d329 /llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp | |
parent | 482cf01a1e9c422c81ba6fe1ae5f386fbb839768 (diff) | |
download | bcm5719-llvm-5c7d3cda78b3d506b2876b5d6d0376b52016b261.tar.gz bcm5719-llvm-5c7d3cda78b3d506b2876b5d6d0376b52016b261.zip |
Fix a minor code-quality issue. When passing 8 and 16-bit integer constants
to function calls, we would emit dead code, like this:
int Y(int, short, double);
int X() {
Y(4, 123, 4);
}
--- Old
X:
sub %ESP, 20
mov %EAX, 4
mov DWORD PTR [%ESP], %EAX
*** mov %AX, 123
mov %AX, 123
movsx %EAX, %AX
mov DWORD PTR [%ESP + 4], %EAX
fld QWORD PTR [.CPIX_0]
fstp QWORD PTR [%ESP + 8]
call Y
mov %EAX, 0
# IMPLICIT_USE %EAX %ESP
add %ESP, 20
ret
Now we emit:
X:
sub %ESP, 20
mov %EAX, 4
mov DWORD PTR [%ESP], %EAX
mov %AX, 123
movsx %EAX, %AX
mov DWORD PTR [%ESP + 4], %EAX
fld QWORD PTR [.CPIX_0]
fstp QWORD PTR [%ESP + 8]
call Y
mov %EAX, 0
# IMPLICIT_USE %EAX %ESP
add %ESP, 20
ret
Next up, eliminate the mov AX and movsx entirely!
llvm-svn: 12026
Diffstat (limited to 'llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp')
0 files changed, 0 insertions, 0 deletions