- Aug 11, 2007
-
-
Evan Cheng authored
llvm-svn: 41016
-
- Aug 08, 2007
-
-
Evan Cheng authored
llvm-svn: 40921
-
Evan Cheng authored
- Fix some minor bugs related to special markers on val# def. ~0U means undefined, ~1U means dead val#. llvm-svn: 40916
-
Evan Cheng authored
llvm-svn: 40914
-
Evan Cheng authored
kill instruction #, and source register number (iff the value# is defined by a copy). - Now def instruction # is set for every value#, not just for copy defined ones. - Update some outdated code related inactive live ranges. - Kill info not yet set. That's next patch. llvm-svn: 40913
-
- Apr 17, 2007
-
-
Evan Cheng authored
llvm-svn: 36216
-
- Dec 17, 2006
-
-
Bill Wendling authored
rework the hacks that had us passing OStream in. We pass in std::ostream* instead, check for null, and then dispatch to the correct print() method. llvm-svn: 32636
-
- Dec 16, 2006
-
-
Jeff Cohen authored
llvm-svn: 32622
-
- Dec 15, 2006
-
-
Jeff Cohen authored
llvm-svn: 32617
-
- Dec 07, 2006
-
-
Bill Wendling authored
now cerr, cout, and NullStream resp. llvm-svn: 32298
-
- Nov 29, 2006
-
-
Bill Wendling authored
llvm-svn: 31992
-
- Nov 28, 2006
-
-
Bill Wendling authored
llvm-svn: 31958
-
Bill Wendling authored
llvm-svn: 31954
-
- Nov 02, 2006
-
-
Reid Spencer authored
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. llvm-svn: 31380
-
- Sep 02, 2006
-
-
Chris Lattner authored
method for joining the live ranges instead of the fully-general one. llvm-svn: 30049
-
- Aug 31, 2006
-
-
Chris Lattner authored
llvm-svn: 29994
-
- Aug 30, 2006
-
-
Chris Lattner authored
number of copies, potentially defining live ranges that appear to have differing value numbers that become identical when coallsced. Among other things, this fixes CodeGen/X86/shift-coalesce.ll and PR687. llvm-svn: 29968
-
- Aug 26, 2006
-
-
Chris Lattner authored
llvm-svn: 29896
-
Chris Lattner authored
paves the way for future changes, increases coallescing opportunities (in theory, not witnessed in practice), and eliminates the really expensive LiveIntervals::overlapsAliases method. llvm-svn: 29890
-
- Aug 25, 2006
-
-
Chris Lattner authored
llvm-svn: 29865
-
Chris Lattner authored
instructions which define each value#) to simplify and improve the coallescer. In particular, this patch: 1. Implements iterative coallescing. 2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a better solution. 3. Implements PR865, "coallescing" away the second copy in code like: A = B ... B = A This also includes changes to symbolically print registers in intervals when possible. llvm-svn: 29862
-
- Aug 22, 2006
-
-
Chris Lattner authored
defines each value# tracked by the interval. This will be used to improve coallescing. llvm-svn: 29830
-
- Oct 21, 2005
-
-
Chris Lattner authored
(an unused method). Fix the merger so that it can merge ranges like this [10:12)[16:40) with [12:38) into [10:40) instead of bogus ranges. This sort of input will be possible for the merger coming shortly llvm-svn: 23865
-
Chris Lattner authored
Andrew for bringing this to my attn. llvm-svn: 23850
-
- Oct 20, 2005
-
-
Chris Lattner authored
llvm-svn: 23844
-
Chris Lattner authored
Fix a *bug* in the extendIntervalEndTo method. In particular, if adding [2:10) to an interval containing [0:2),[10:30), we produced [0:10),[10,30). Which is not the most smart thing to do. Now produce [0:30). llvm-svn: 23841
-
Chris Lattner authored
llvm-svn: 23839
-
- Sep 21, 2005
-
-
Chris Lattner authored
llvm-svn: 23400
-
- May 14, 2005
-
-
Chris Lattner authored
llvm-svn: 22002
-
- Apr 22, 2005
-
-
Misha Brukman authored
llvm-svn: 21420
-
- Dec 04, 2004
-
-
Chris Lattner authored
Prolang-C/bison in the JIT llvm-svn: 18477
-
- Nov 18, 2004
-
-
Chris Lattner authored
incrementing i. llvm-svn: 17944
-
Chris Lattner authored
i->start == j->start, then certainly i->end > j->start. llvm-svn: 17943
-
Chris Lattner authored
llvm-svn: 17936
-
Chris Lattner authored
llvm-svn: 17934
-
- Nov 16, 2004
-
-
Brian Gaeke authored
llvm-svn: 17887
-
- Sep 28, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 16533
-
- Sep 02, 2004
-
-
Reid Spencer authored
Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
-
- Jul 25, 2004
-
-
Chris Lattner authored
llvm-svn: 15196
-
Chris Lattner authored
aggressively coallesce live ranges even if they overlap. Consider this LLVM code for example: int %test(int %X) { %Y = mul int %X, 1 ;; Codegens to Y = X %Z = add int %X, %Y ret int %Z } The mul is just there to get a copy into the code stream. This produces this machine code: (0x869e5a8, LLVM BB @0x869b9a0): %reg1024 = mov <fi#-2>, 1, %NOREG, 0 ;; "X" %reg1025 = mov %reg1024 ;; "Y" (subsumed by X) %reg1026 = add %reg1024, %reg1025 %EAX = mov %reg1026 ret Note that the life times of reg1024 and reg1025 overlap, even though they contain the same value. This results in this machine code: test: mov %EAX, DWORD PTR [%ESP + 4] mov %ECX, %EAX add %EAX, %ECX ret Another, worse case involves loops and PHI nodes. Consider this trivial loop: testcase: int %test2(int %X) { entry: br label %Loop Loop: %Y = phi int [%X, %entry], [%Z, %Loop] %Z = add int %Y, 1 %cond = seteq int %Z, 100 br bool %cond, label %Out, label %Loop Out: ret int %Z } Because of interactions between the PHI elimination pass and the register allocator, this got compiled to this code: test2: mov %ECX, DWORD PTR [%ESP + 4] .LBBtest2_1: *** mov %EAX, %ECX inc %EAX cmp %EAX, 100 *** mov %ECX, %EAX jne .LBBtest2_1 ret Or on powerpc, this code: _test2: mflr r0 stw r0, 8(r1) stwu r1, -60(r1) .LBB_test2_1: addi r2, r3, 1 cmpwi cr0, r2, 100 *** or r3, r2, r2 bne cr0, .LBB_test2_1 *** or r3, r2, r2 lwz r0, 68(r1) mtlr r0 addi r1, r1, 60 blr 0 With this improvement in place, we now generate this code for these two testcases, which is what we want: test: mov %EAX, DWORD PTR [%ESP + 4] add %EAX, %EAX ret test2: mov %EAX, DWORD PTR [%ESP + 4] .LBBtest2_1: inc %EAX cmp %EAX, 100 jne .LBBtest2_1 # Loop ret Or on PPC: _test2: mflr r0 stw r0, 8(r1) stwu r1, -60(r1) .LBB_test2_1: addi r3, r3, 1 cmpwi cr0, r3, 100 bne cr0, .LBB_test2_1 lwz r0, 68(r1) mtlr r0 addi r1, r1, 60 blr 0 Static numbers for spill code loads/stores/reg-reg copies (smaller is better): em3d: before: 47/25/26 after: 44/22/24 164.gzip: before: 433/245/310 after: 403/231/278 175.vpr: before: 3721/2189/1581 after: 4144/2081/1423 176.gcc: before: 26195/8866/9235 after: 25942/8082/8275 186.crafty: before: 4295/2587/3079 after: 4119/2519/2916 252.eon: before: 12754/7585/5803 after: 12508/7425/5643 256.bzip2: before: 463/226/315 after: 482:241/309 Runtime perf number samples on X86: gzip: before: 41.09 after: 39.86 bzip2: runtime: before: 56.71s after: 57.07s gcc: before: 6.16 after: 6.12 eon: before: 2.03s after: 2.00s llvm-svn: 15194
-