Commit Graph

31969 Commits

Author SHA1 Message Date
Evan Cheng 8cd224e81c Relex assertions to account for additional implicit def / use operands.
llvm-svn: 36430
2007-04-25 07:12:14 +00:00
Chris Lattner 827cb98a0a If an alloca only has two types of uses: 1) reads 2) a memcpy/memmove that
copies from a constant global, then we can change the reads to read from the
global instead of from the alloca.  This eliminates the alloca and the memcpy,
and promotes secondary optimizations (because the loads are now loads from
a constant global).

This is important for a common C idiom:

void foo() {
   int A[] = {1,2,3,4,5,6,7,8,9...};
   ... only reads of A ...
}

For some reason, people forget to mark the array static or const.

This triggers on these multisource benchmarks:
JM/ldecode: block_pos, [3 x [4 x [4 x i32]]]
FreeBench/mason: m, [18 x i32], inlined 4 times
MiBench/office-stringsearch: search_strings, [1332 x i8*]
MiBench/office-stringsearch: find_strings, [1333 x i8*]
Prolangs-C++/city: dirs, [9 x i8*], inlined 4 places

and these spec benchmarks:
177.mesa: message, [8 x [32 x i8]]
186.crafty: bias_rl45, [64 x i32]
186.crafty: diag_sq, [64 x i32]
186.crafty: empty, [9 x i8]
186.crafty: xlate, [15 x i8]
186.crafty: status, [13 x i8]
186.crafty: bdinfo, [25 x i8]
445.gobmk: routines, [16 x i8*]
458.sjeng: piece_rep, [14 x i8*]
458.sjeng: t, [13 x i32], inlined 4 places.
464.h264ref: block8x8_idx, [3 x [4 x [4 x i32]]]
464.h264ref: block_pos, [3 x [4 x [4 x i32]]]
464.h264ref: j_off_tab, [12 x i32]

This implements Transforms/ScalarRepl/memcpy-from-global.ll

llvm-svn: 36429
2007-04-25 06:40:51 +00:00
Chris Lattner 7ebda6ba37 new testcase, should be able to eliminate the alloca and memcpy
llvm-svn: 36428
2007-04-25 06:29:34 +00:00
Chris Lattner bbe9b8a12f simplify some code
llvm-svn: 36427
2007-04-25 05:49:09 +00:00
Chris Lattner 31e5addb67 refactor the SROA code out into its own method, no functionality change.
llvm-svn: 36426
2007-04-25 05:02:56 +00:00
Chris Lattner b975bebec1 support for >4G stack frames
llvm-svn: 36425
2007-04-25 04:30:24 +00:00
Chris Lattner 868d969081 support for >4G frames
llvm-svn: 36424
2007-04-25 04:29:06 +00:00
Chris Lattner 1ef35a2721 support >4G stack frames
llvm-svn: 36423
2007-04-25 04:25:10 +00:00
Chris Lattner 9bd98ea4c1 support > 4G stack objects
llvm-svn: 36422
2007-04-25 04:20:54 +00:00
Owen Anderson 510fefcd8a Undo my previous changes. Since my approach to this problem is being revised,
this approach is no longer appropriate.

llvm-svn: 36421
2007-04-25 04:18:54 +00:00
Chris Lattner cb0ed0cfbd allow support for 64-bit stack objects
llvm-svn: 36420
2007-04-25 04:08:28 +00:00
Chris Lattner 7bf18ba0a2 allow 64-bit stack objects
llvm-svn: 36419
2007-04-25 04:07:31 +00:00
Chris Lattner 5ec45c5b90 new testcase
llvm-svn: 36418
2007-04-25 01:51:33 +00:00
Devang Patel d3208523b2 Fix
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070423/048376.html

llvm-svn: 36417
2007-04-25 00:37:04 +00:00
Devang Patel 206baa4425 New test.
llvm-svn: 36416
2007-04-25 00:35:37 +00:00
Chris Lattner d7c51e5423 testcase for PR1352
llvm-svn: 36415
2007-04-25 00:26:05 +00:00
Dale Johannesen 78dd0b2d3c fix typo
llvm-svn: 36414
2007-04-25 00:14:49 +00:00
Chris Lattner 01a26c74ae Be more careful about folding op(x, undef) when we have vector operands.
This fixes CodeGen/X86/2007-04-24-VectorCrash.ll

llvm-svn: 36413
2007-04-25 00:00:45 +00:00
Chris Lattner 61e8297c44 new testcase that crashes llc
llvm-svn: 36412
2007-04-25 00:00:12 +00:00
Dale Johannesen 1d0d138fa6 Add me
llvm-svn: 36411
2007-04-24 23:48:30 +00:00
Chris Lattner cb35c61a4b Fix PR1351 and CodeGen/PowerPC/2007-04-24-InlineAsm-I-Modifier.ll
llvm-svn: 36410
2007-04-24 22:51:03 +00:00
Chris Lattner 02ba563c82 testcase for PR1351
llvm-svn: 36409
2007-04-24 22:49:57 +00:00
Bill Wendling f4fb685122 Testcases for MMX.
llvm-svn: 36408
2007-04-24 22:28:30 +00:00
Bill Wendling a784d875be Update.
llvm-svn: 36407
2007-04-24 21:20:03 +00:00
Bill Wendling b3b6c35beb Add the PADDQ to the list.
llvm-svn: 36406
2007-04-24 21:19:14 +00:00
Bill Wendling 5c7f25632e Add the final MMX instructions. Correct a few wrong patterns.
llvm-svn: 36405
2007-04-24 21:18:37 +00:00
Bill Wendling e2324ca17d Remove some invalid instructions from this check.
llvm-svn: 36404
2007-04-24 21:17:46 +00:00
Bill Wendling 591eab8844 Support for the special case of a vector with the canonical form:
vector_shuffle v1, v2, <2, 6, 3, 7>

I.e.

         vector_shuffle v, undef, <2, 2, 3, 3>

MMX only has a shuffle for v4i16 vectors. It needs to use the unpackh for
this type of operation.

llvm-svn: 36403
2007-04-24 21:16:55 +00:00
Bill Wendling 47917b697f Assertion when using a 1-element vector for an add operation. Get the
real vector type in this case.

llvm-svn: 36402
2007-04-24 21:13:23 +00:00
Devang Patel 895fa7acac New test.
llvm-svn: 36401
2007-04-24 21:05:52 +00:00
Devang Patel c829e9ff60 New test case.
llvm-svn: 36400
2007-04-24 19:24:39 +00:00
Devang Patel ff508e25f7 Add myself.
llvm-svn: 36399
2007-04-24 18:49:33 +00:00
Chris Lattner 890683d636 ensure that every error return sets a message (and goes through Error, for
easy breakpointing).

Fix bugs reading constantexpr geps.  We now can disassemble kc++ global
initializers.

llvm-svn: 36398
2007-04-24 18:15:21 +00:00
Chris Lattner 0ee6a3a561 fix memory leak
llvm-svn: 36397
2007-04-24 17:22:05 +00:00
Chris Lattner c86d3f691b fix a memory leak
llvm-svn: 36396
2007-04-24 17:20:52 +00:00
Chris Lattner a11d217c7a comentate
llvm-svn: 36395
2007-04-24 15:54:42 +00:00
Chris Lattner 1e16bcf7ff implement reading and writing of constant exprs.
llvm-svn: 36394
2007-04-24 07:07:11 +00:00
Chris Lattner c6a993dc8c add records for constant exprs
llvm-svn: 36393
2007-04-24 07:03:08 +00:00
Owen Anderson c24701ed7f Rollback some changes that adversely affected performance. I'm currently rethinking
my approach to this, so hopefully I'll find a way to do this without making this slower.

llvm-svn: 36392
2007-04-24 06:40:39 +00:00
Chris Lattner 1663ccaf13 implement support for reading aggregate constants, including handling forward
constant references, etc.

llvm-svn: 36391
2007-04-24 05:48:56 +00:00
Chris Lattner 08feb1e73a add supprot for FP constants, wide integers, and fix the encoding of MININT
llvm-svn: 36390
2007-04-24 04:04:35 +00:00
Chris Lattner fbc1d33b81 read basic constants: null, undef, integers <= 64bits
llvm-svn: 36389
2007-04-24 03:30:34 +00:00
Chris Lattner 1e50c299a8 fix off-by-one computing size for section abbrevs
llvm-svn: 36388
2007-04-24 03:29:47 +00:00
Scott Michel 4cfa616cee Use '-1U' where '-1UL' is obvious overkill, eliminating gcc warnings about
tests always being true in the process.

llvm-svn: 36387
2007-04-24 01:24:20 +00:00
Chris Lattner a272ead35a move check to the right place :)
llvm-svn: 36386
2007-04-24 00:21:45 +00:00
Chris Lattner 47d131bd32 track global inits
llvm-svn: 36385
2007-04-24 00:18:21 +00:00
Chris Lattner 52523561d9 Emit module-level constants.
llvm-svn: 36384
2007-04-24 00:16:04 +00:00
Dale Johannesen 8653d29b45 modify per review commentary
llvm-svn: 36383
2007-04-23 23:33:31 +00:00
Chris Lattner 82202333be add codes for constants table
llvm-svn: 36382
2007-04-23 23:29:59 +00:00
Christopher Lamb 15ea59ddfc Fix bug in isFloatingPoint()
llvm-svn: 36381
2007-04-23 22:50:40 +00:00