Dan Gohman 2d1be87ee4 Expand GEPs in ScalarEvolution expressions. SCEV expressions can now
have pointer types, though in contrast to C pointer types, SCEV
addition is never implicitly scaled. This not only eliminates the
need for special code like IndVars' EliminatePointerRecurrence
and LSR's own GEP expansion code, it also does a better job because
it lets the normal optimizations handle pointer expressions just
like integer expressions.

Also, since LLVM IR GEPs can't directly index into multi-dimensional
VLAs, moving the GEP analysis out of client code and into the SCEV
framework makes it easier for clients to handle multi-dimensional
VLAs the same way as other arrays.

Some existing regression tests show improved optimization.
test/CodeGen/ARM/2007-03-13-InstrSched.ll in particular improved to
the point where if-conversion started kicking in; I turned it off
for this test to preserve the intent of the test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69258 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16 03:18:22 +00:00
..
2008-04-19 22:29:10 +00:00
2008-04-19 22:29:10 +00:00
2008-04-19 22:29:10 +00:00
2008-04-19 22:29:10 +00:00
2008-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-05-07 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-03-25 04:26:08 +00:00
2008-03-25 04:26:08 +00:00
2008-06-27 03:14:20 +00:00
2007-10-14 05:57:21 +00:00
2007-02-25 22:23:15 +00:00
2007-03-19 18:27:35 +00:00
2007-04-26 01:14:14 +00:00
2007-07-19 23:53:29 +00:00
2007-07-19 23:13:04 +00:00
2007-05-16 06:14:10 +00:00
2007-06-05 01:45:08 +00:00
2007-08-13 18:42:37 +00:00
2007-10-12 09:10:27 +00:00
2007-10-13 03:10:54 +00:00
2007-10-13 03:10:54 +00:00
2007-10-15 16:35:13 +00:00
2007-10-16 19:29:47 +00:00
2007-10-19 22:05:00 +00:00
2007-11-02 17:36:58 +00:00
2008-03-13 08:05:02 +00:00
2008-04-28 23:31:41 +00:00
2009-02-12 17:04:57 +00:00
2009-03-26 23:03:32 +00:00
2008-12-19 10:55:56 +00:00
2008-10-01 15:07:14 +00:00
2008-02-14 01:32:53 +00:00
2008-05-22 04:45:22 +00:00
2008-02-21 07:42:26 +00:00
2008-03-02 18:05:14 +00:00
2008-03-04 08:01:56 +00:00
2008-04-19 22:29:10 +00:00
2009-04-04 10:24:24 +00:00
2008-06-12 21:23:38 +00:00
2008-09-05 20:04:37 +00:00
2008-11-27 00:37:06 +00:00
2008-02-12 19:11:29 +00:00
2008-04-19 22:29:10 +00:00
2008-04-19 22:29:10 +00:00
2008-04-19 22:29:10 +00:00
2009-02-09 23:32:07 +00:00
2009-03-12 17:07:39 +00:00
2007-02-13 23:41:24 +00:00
2009-03-23 18:27:36 +00:00
2008-04-03 21:25:03 +00:00
2009-03-04 02:47:25 +00:00
2008-10-24 21:20:25 +00:00
2007-04-30 05:11:58 +00:00
2007-09-25 17:50:55 +00:00
2008-02-21 07:42:26 +00:00
2008-02-21 07:42:26 +00:00
2009-01-21 21:28:03 +00:00
2007-10-29 22:07:18 +00:00
2008-04-25 20:13:47 +00:00
2008-04-25 20:13:47 +00:00
2007-05-17 03:29:17 +00:00
2008-02-23 02:57:25 +00:00
2008-01-24 06:35:44 +00:00
2008-03-09 06:57:21 +00:00
2009-01-20 19:29:54 +00:00
2009-01-15 20:18:42 +00:00
2007-11-24 05:39:29 +00:00
2008-02-21 07:42:26 +00:00
2007-12-29 08:19:39 +00:00
2008-04-19 22:29:10 +00:00
2009-02-13 22:36:38 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2007-04-16 14:23:07 +00:00
2008-03-25 04:26:08 +00:00
2008-01-17 19:59:44 +00:00
2008-02-12 19:11:29 +00:00
2007-10-12 07:49:48 +00:00
2009-01-07 01:48:08 +00:00
2008-01-15 22:22:02 +00:00
2009-03-01 02:03:43 +00:00
2008-05-07 22:59:08 +00:00
2008-05-29 07:09:24 +00:00
2008-04-25 21:47:35 +00:00
2008-07-25 19:08:59 +00:00
2008-05-24 00:10:02 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-07 22:59:08 +00:00
2008-05-09 19:56:32 +00:00
2008-05-22 18:56:56 +00:00
2008-05-07 22:59:08 +00:00
2008-07-17 19:48:04 +00:00
2008-05-07 22:59:08 +00:00
2008-02-21 07:42:26 +00:00
2008-09-27 01:56:22 +00:00
2008-03-19 00:52:20 +00:00
2007-07-19 23:13:04 +00:00
2008-09-27 01:56:22 +00:00
2008-09-27 01:56:22 +00:00