Evan Cheng
da55c4ffb7
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.
llvm-svn: 61259
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
2007-04-16 17:36:08 +00:00
2007-01-30 16:16:01 +00:00
2007-04-16 17:36:08 +00:00
2007-04-16 17:36:08 +00:00
2007-04-15 21:17:45 +00:00
2007-03-28 02:38:26 +00:00
2007-08-15 13:36:28 +00:00
2007-08-04 01:51:18 +00:00
2007-03-30 20:41:18 +00:00
2008-04-27 00:37:18 +00:00
2008-12-19 20:58:01 +00:00
2007-05-03 16:54:08 +00:00
2007-05-15 01:33:12 +00:00
2007-08-15 13:36:28 +00:00
2007-07-19 23:13:04 +00:00
2007-07-05 23:00:50 +00:00
2007-08-14 23:21:10 +00:00
2007-09-05 04:05:20 +00:00
2007-09-07 22:01:02 +00:00
2007-09-08 19:29:23 +00:00
2007-09-11 22:34:47 +00:00
2007-09-12 23:02:04 +00:00
2007-10-16 18:00:18 +00:00
2007-10-18 08:32:37 +00:00
2007-10-23 06:42:42 +00:00
2007-10-22 19:46:19 +00:00
2007-11-05 06:46:45 +00:00
2007-11-16 23:16:35 +00:00
2007-11-19 21:43:22 +00:00
2008-01-29 06:26:07 +00:00
2008-02-05 20:04:18 +00:00
2008-02-11 08:30:52 +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
2007-07-19 23:13:04 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2007-07-19 23:13:04 +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
2007-07-06 13:15:51 +00:00
2007-07-16 13:37:30 +00:00
2007-07-06 13:15:51 +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
2007-07-09 17:14:58 +00:00
2007-04-15 21:17:45 +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
2007-09-14 20:37:18 +00:00
2008-02-19 08:07:33 +00:00
2008-02-19 08:07:33 +00:00
2007-05-14 22:04:16 +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
2007-05-09 19:20:37 +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
2007-04-16 15:15:52 +00:00
2007-07-30 19:09:17 +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
2007-11-27 22:14:42 +00:00
2008-02-19 08:07:33 +00:00
2007-04-30 05:11:58 +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
2007-04-15 21:17:45 +00:00
2008-01-16 18:03:52 +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
2007-08-22 19:36:31 +00:00
2008-02-19 08:07:33 +00:00
2007-10-05 20:04:43 +00:00
2007-10-05 20:04:43 +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
2007-12-08 07:04:58 +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
2007-08-15 13:36:28 +00:00
2008-02-19 08:07:33 +00:00
2008-04-14 17:56:54 +00:00
2007-09-04 20:20:29 +00:00
2007-08-15 13:36:28 +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
2007-04-17 21:12:26 +00:00
2008-02-19 08:07:33 +00:00
2007-04-17 19:03:02 +00:00
2007-07-19 23:13:04 +00:00
2008-01-18 16:54:56 +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
2007-08-15 13:36:28 +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
2007-07-30 07:52:03 +00:00
2008-02-13 06:48:40 +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