Skip to content
  1. May 20, 2004
  2. May 19, 2004
  3. May 18, 2004
  4. May 17, 2004
  5. May 14, 2004
  6. May 13, 2004
    • Chris Lattner's avatar
      This was not meant to be committed · 0026512b
      Chris Lattner authored
      llvm-svn: 13565
      0026512b
    • Chris Lattner's avatar
      Fix a nasty bug that caused us to unroll EXTREMELY large loops due to overflow · c12c945c
      Chris Lattner authored
      in the size calculation.
      
      This is not something you want to see:
      Loop Unroll: F[main] Loop %no_exit Loop Size = 2 Trip Count = 2147483648 - UNROLLING!
      
      The problem was that 2*2147483648 == 0.
      
      Now we get:
      Loop Unroll: F[main] Loop %no_exit Loop Size = 2 Trip Count = 2147483648 - TOO LARGE: 4294967296>100
      
      Thanks to some anonymous person playing with the demo page that repeatedly
      caused zion to go into swapping land.  That's one way to ensure you'll get
      a quick bugfix.  :)
      
      Testcase here: Transforms/LoopUnroll/2004-05-13-DontUnrollTooMuch.ll
      
      llvm-svn: 13564
      c12c945c
    • Chris Lattner's avatar
    • Misha Brukman's avatar
      Specify units in padding length. · 7dcf665e
      Misha Brukman authored
      llvm-svn: 13560
      7dcf665e
    • Misha Brukman's avatar
      Make page HTML-4.01 compliant (& => & in URL). · 60349229
      Misha Brukman authored
      llvm-svn: 13559
      60349229
    • Chris Lattner's avatar
      Two more improvements for null pointer handling: storing a null pointer · 8e7aea02
      Chris Lattner authored
      and passing a null pointer into a function.
      
      For this testcase:
      
      void %test(int** %X) {
        store int* null, int** %X
        call void %test(int** null)
        ret void
      }
      
      we now generate this:
      
      test:
              sub %ESP, 12
              mov %EAX, DWORD PTR [%ESP + 16]
              mov DWORD PTR [%EAX], 0
              mov DWORD PTR [%ESP], 0
              call test
              add %ESP, 12
              ret
      
      instead of this:
      
      test:
              sub %ESP, 12
              mov %EAX, DWORD PTR [%ESP + 16]
              mov %ECX, 0
              mov DWORD PTR [%EAX], %ECX
              mov %EAX, 0
              mov DWORD PTR [%ESP], %EAX
              call test
              add %ESP, 12
              ret
      
      llvm-svn: 13558
      8e7aea02
    • Chris Lattner's avatar
      Second half of my fixed-sized-alloca patch. This folds the LEA to compute · 593d22d6
      Chris Lattner authored
      the alloca address into common operations like loads/stores.
      
      In a simple testcase like this (which is just designed to excersize the
      alloca A, nothing more):
      
      int %test(int %X, bool %C) {
              %A = alloca int
              store int %X, int* %A
              store int* %A, int** %G
              br bool %C, label %T, label %F
      T:
              call int %test(int 1, bool false)
              %V = load int* %A
              ret int %V
      F:
              call int %test(int 123, bool true)
              %V2 = load int* %A
              ret int %V2
      }
      
      We now generate:
      
      test:
              sub %ESP, 12
              mov %EAX, DWORD PTR [%ESP + 16]
              mov %CL, BYTE PTR [%ESP + 20]
      ***     mov DWORD PTR [%ESP + 8], %EAX
              mov %EAX, OFFSET G
              lea %EDX, DWORD PTR [%ESP + 8]
              mov DWORD PTR [%EAX], %EDX
              test %CL, %CL
              je .LBB2 # PC rel: F
      .LBB1:  # T
              mov DWORD PTR [%ESP], 1
              mov DWORD PTR [%ESP + 4], 0
              call test
      ***     mov %EAX, DWORD PTR [%ESP + 8]
              add %ESP, 12
              ret
      .LBB2:  # F
              mov DWORD PTR [%ESP], 123
              mov DWORD PTR [%ESP + 4], 1
              call test
      ***     mov %EAX, DWORD PTR [%ESP + 8]
              add %ESP, 12
              ret
      
      Instead of:
      
      test:
              sub %ESP, 20
              mov %EAX, DWORD PTR [%ESP + 24]
              mov %CL, BYTE PTR [%ESP + 28]
      ***     lea %EDX, DWORD PTR [%ESP + 16]
      ***     mov DWORD PTR [%EDX], %EAX
              mov %EAX, OFFSET G
              mov DWORD PTR [%EAX], %EDX
              test %CL, %CL
      ***     mov DWORD PTR [%ESP + 12], %EDX
              je .LBB2 # PC rel: F
      .LBB1:  # T
              mov DWORD PTR [%ESP], 1
              mov %EAX, 0
              mov DWORD PTR [%ESP + 4], %EAX
              call test
      ***     mov %EAX, DWORD PTR [%ESP + 12]
      ***     mov %EAX, DWORD PTR [%EAX]
              add %ESP, 20
              ret
      .LBB2:  # F
              mov DWORD PTR [%ESP], 123
              mov %EAX, 1
              mov DWORD PTR [%ESP + 4], %EAX
              call test
      ***     mov %EAX, DWORD PTR [%ESP + 12]
      ***     mov %EAX, DWORD PTR [%EAX]
              add %ESP, 20
              ret
      
      llvm-svn: 13557
      593d22d6
    • Chris Lattner's avatar
      Substantially improve code generation for address exposed locals (aka fixed · 2bb33259
      Chris Lattner authored
      sized allocas in the entry block).  Instead of generating code like this:
      
      entry:
        reg1024 = ESP+1234
      ... (much later)
        *reg1024 = 17
      
      
      Generate code that looks like this:
      entry:
        (no code generated)
      ... (much later)
        t = ESP+1234
        *t = 17
      
      The advantage being that we DRAMATICALLY reduce the register pressure for these
      silly temporaries (they were all being spilled to the stack, resulting in very
      silly code).  This is actually a manual implementation of rematerialization :)
      
      I have a patch to fold the alloca address computation into loads & stores, which
      will make this much better still, but just getting this right took way too much time
      and I'm sleepy.
      
      llvm-svn: 13554
      2bb33259
    • Reid Spencer's avatar
      Reduce line length to about 80 chars. · 1b3b3ef3
      Reid Spencer authored
      llvm-svn: 13538
      1b3b3ef3
    • Misha Brukman's avatar
      Insert spacing between the table and the next section. · 53dd5e66
      Misha Brukman authored
      llvm-svn: 13523
      53dd5e66
    • Misha Brukman's avatar
      * Use stylesheets for table borders so we factor out the formatting and can · 4642d92b
      Misha Brukman authored
        adjust it much easier. Also changed border to gray to fit into the current
        color scheme.
      * Convert < and > to &lt; and &gt;, respectively.
      * Wrap long lines at 80 cols
      
      llvm-svn: 13522
      4642d92b
  7. May 12, 2004
Loading