Evan Cheng
9e23336d0c
Experimental scheduler change to schedule / coalesce the copies added for function livein's. Take 2008-03-10-RegAllocInfLoop.ll, the schedule looks like this after these copies are inserted:
entry: 0x12049d0, LLVM BB @0x1201fd0, ID#0:
Live Ins: %EAX %EDX %ECX
%reg1031<def> = MOVPC32r 0
%reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
%reg1028<def> = MOV32rr %EAX
%reg1029<def> = MOV32rr %EDX
%reg1030<def> = MOV32rr %ECX
%reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x1201910 + 0]
%reg1025<def> = MOV32rr %reg1029
%reg1026<def> = MOV32rr %reg1030
%reg1024<def> = MOV32rr %reg1028
The copies unnecessarily increase register pressure and it will end up requiring a physical register to be spilled.
With -schedule-livein-copies:
entry: 0x12049d0, LLVM BB @0x1201fa0, ID#0:
Live Ins: %EAX %EDX %ECX
%reg1031<def> = MOVPC32r 0
%reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
%reg1024<def> = MOV32rr %EAX
%reg1025<def> = MOV32rr %EDX
%reg1026<def> = MOV32rr %ECX
%reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x12018e0 + 0]
Much better!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48307 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12 22:19:41 +00:00
..
2008-02-29 19:36:59 +00:00
2008-01-27 19:51:03 +00:00
2008-03-10 02:17:22 +00:00
2007-12-29 19:59:42 +00:00
2007-12-29 19:59:42 +00:00
2007-12-29 19:59:42 +00:00
2007-12-29 19:59:42 +00:00
2007-12-29 19:59:42 +00:00
2008-03-11 22:29:46 +00:00
2007-12-29 19:59:42 +00:00
2008-01-07 02:31:11 +00:00
2008-02-26 10:49:39 +00:00
2008-03-11 07:19:34 +00:00
2008-03-05 00:59:57 +00:00
2008-02-28 00:43:03 +00:00
2008-02-13 18:39:37 +00:00
2007-12-29 19:59:42 +00:00
2007-12-29 19:59:42 +00:00
2008-02-28 00:43:03 +00:00
2007-12-31 04:13:23 +00:00
2007-12-29 19:59:42 +00:00
2008-03-05 00:59:57 +00:00
2008-02-06 22:27:42 +00:00
2007-12-29 19:59:42 +00:00
2008-02-10 18:45:23 +00:00
2007-12-29 19:59:42 +00:00
2008-02-02 04:07:54 +00:00
2008-02-14 07:39:30 +00:00
2007-12-29 19:59:42 +00:00
2008-02-20 11:08:44 +00:00
2008-01-21 22:27:27 +00:00
2007-12-29 19:59:42 +00:00
2008-02-15 01:29:57 +00:00
2008-02-28 00:43:03 +00:00
2008-02-07 18:41:25 +00:00
2007-12-29 19:59:42 +00:00
2008-02-10 18:45:23 +00:00
2008-03-06 23:22:43 +00:00
2008-03-10 23:03:31 +00:00
2007-12-29 19:59:42 +00:00
2008-03-12 22:19:41 +00:00
2007-12-29 19:59:42 +00:00
2008-02-27 01:23:58 +00:00
2008-01-07 01:30:38 +00:00
2008-03-12 20:30:08 +00:00
2008-03-01 03:40:57 +00:00
2007-12-29 22:59:10 +00:00