Evan Cheng
5379f412bc
Fix PR3149. If an early clobber def is a physical register and it is tied to an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this.
...
172 %ECX<def> = MOV32rr %reg1039<kill>
180 INLINEASM <es:subl $5,$1
sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>,
36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0
188 %EAX<def> = MOV32rr %EAX<kill>
196 %ECX<def> = MOV32rr %ECX<kill>
204 %ECX<def> = MOV32rr %ECX<kill>
212 %EAX<def> = MOV32rr %EAX<kill>
220 %EAX<def> = MOV32rr %EAX
228 %reg1039<def> = MOV32rr %ECX<kill>
The early clobber operand ties ECX input to the ECX def.
The live interval of ECX is represented as this:
%reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47)
The right way to represent this is something like
%reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47)
Of course that won't work since that means overlapping live ranges defined by two val#.
The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61259 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-19 20:58:01 +00:00
..
2008-03-09 00:32:10 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-04-27 00:37:18 +00:00
2008-12-19 20:58:01 +00:00
2008-03-10 22:59:08 +00:00
2008-03-10 22:59:08 +00:00
2008-03-18 08:26:47 +00:00
2008-03-19 00:52:20 +00:00
2008-03-24 23:16:37 +00:00
2008-03-25 02:02:19 +00:00
2008-03-26 20:15:49 +00:00
2008-04-10 18:38:47 +00:00
2008-04-16 20:24:25 +00:00
2008-04-24 20:01:58 +00:00
2008-05-01 18:41:09 +00:00
2008-06-19 22:01:11 +00:00
2008-06-21 17:00:47 +00:00
2008-06-23 23:41:14 +00:00
2008-07-10 16:33:38 +00:00
2008-07-15 10:18:22 +00:00
2008-07-15 15:02:44 +00:00
2008-07-15 10:14:24 +00:00
2008-07-17 17:35:14 +00:00
2008-07-24 08:17:07 +00:00
2008-09-12 18:13:14 +00:00
2008-12-16 18:21:39 +00:00
2008-10-28 15:00:32 +00:00
2008-10-28 09:38:36 +00:00
2008-10-30 20:34:30 +00:00
2008-10-31 14:06:52 +00:00
2008-12-02 21:57:09 +00:00
2008-12-19 10:55:56 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-08-25 18:53:58 +00:00
2008-08-25 18:53:58 +00:00
2008-08-30 00:54:31 +00:00
2008-08-30 00:54:31 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-02-19 08:07:33 +00:00
2008-10-15 18:27:15 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-11-05 22:56:47 +00:00
2008-05-20 21:00:03 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-04-14 17:56:54 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-03-10 22:59:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-02-26 13:37:13 +00:00
2008-02-19 08:07:33 +00:00
2008-12-05 01:06:39 +00:00
2008-12-05 01:06:39 +00:00
2008-02-19 08:07:33 +00:00
2008-10-01 19:46:30 +00:00
2008-02-19 08:07:33 +00:00
2008-11-26 16:44:30 +00:00
2008-03-11 01:59:03 +00:00
2008-02-19 08:07:33 +00:00
2008-03-10 23:03:31 +00:00
2008-07-17 19:10:17 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-27 21:12:32 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-03-19 21:39:28 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-03-13 22:13:53 +00:00
2008-03-18 17:28:38 +00:00
2008-03-22 22:27:01 +00:00
2008-04-14 17:56:54 +00:00
2008-03-08 00:19:12 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-03-02 17:56:29 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-04-14 17:56:54 +00:00
2008-02-19 08:07:33 +00:00
2008-11-04 17:31:08 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-03-07 20:36:53 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-04-30 09:16:33 +00:00
2008-04-30 09:16:33 +00:00
2008-04-30 09:16:33 +00:00
2008-09-17 00:30:57 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-27 23:14:50 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-10-28 09:55:04 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00