Skip to content
  1. Oct 16, 2004
  2. Oct 14, 2004
  3. Oct 13, 2004
  4. Oct 12, 2004
  5. Oct 11, 2004
    • Chris Lattner's avatar
      Reenable the transform, turning X/-10 < 1 into X > -10 · a92af96c
      Chris Lattner authored
      llvm-svn: 16918
      a92af96c
    • Chris Lattner's avatar
      This patch implements two things (sorry). · 004e250c
      Chris Lattner authored
      First, it allows SRA of globals that have embedded arrays, implementing
      GlobalOpt/globalsra-partial.llx.  This comes up infrequently, but does allow,
      for example, deleting several stores to dead parts of globals in dhrystone.
      
      Second, this implements GlobalOpt/malloc-promote-*.llx, which is the
      following nifty transformation:
      
      Basically if a global pointer is initialized with malloc, and we can tell
      that the program won't notice, we transform this:
      
      struct foo *FooPtr;
      ...
        FooPtr = malloc(sizeof(struct foo));
      ...
        FooPtr->A   FooPtr->B
      
      Into:
      
      struct foo FooPtrBody;
      ...
         FooPtrBody.A  FooPtrBody.B
      
      This comes up occasionally, for example, the 'disp' global in 183.equake (where
      the xform speeds the CBE version of the program up from 56.16s to 52.40s (7%)
      on apoc), and the 'desired_accept', 'fixLRBT', 'macroArray', & 'key_queue'
      globals in 300.twolf (speeding it up from 22.29s to 21.55s (3.4%)).
      
      The nice thing about this xform is that it exposes the resulting global to
      global variable optimization and makes alias analysis easier in addition to
      eliminating a few loads.
      
      llvm-svn: 16916
      004e250c
    • Chris Lattner's avatar
      Just because we cannot completely eliminate all uses of a global, we can · e42eb31f
      Chris Lattner authored
      still optimize away all of the indirect calls and loads, etc from it.
      This turns code like this:
      
        if (G != 0)
          G();
      
      into
         if (G != 0)
           ActualCallee();
      
      This triggers a couple of times in gcc and libstdc++.
      
      llvm-svn: 16901
      e42eb31f
    • Reid Spencer's avatar
      Initial version of automake Makefile.am file. · 97327f05
      Reid Spencer authored
      llvm-svn: 16893
      97327f05
  6. Oct 10, 2004
  7. Oct 09, 2004
  8. Oct 08, 2004
  9. Oct 07, 2004
  10. Oct 06, 2004
    • Chris Lattner's avatar
      Implement GlobalConstifier/trivialstore.llx, and also do some · 1f849a08
      Chris Lattner authored
      simplifications of the resultant program to avoid making later passes
      do it all.
      
      This allows us to constify globals that just have the same constant that
      they are initialized stored into them.
      
      Suprisingly this comes up ALL of the freaking time, dozens of times in
      SPEC, 30 times in vortex alone.
      
      For example, on 256.bzip2, it allows us to constify these two globals:
      
      %smallMode = internal global ubyte 0             ; <ubyte*> [#uses=8]
      %verbosity = internal global int 0               ; <int*> [#uses=49]
      
      Which (with later optimizations) results in the bytecode file shrinking
      from 82286 to 69686 bytes!  Lets hear it for IPO :)
      
      For the record, it's nuking lots of "if (verbosity > 2) { do lots of stuff }"
      code.
      
      llvm-svn: 16793
      1f849a08
    • Chris Lattner's avatar
      Instcombine: -(X sdiv C) -> (X sdiv -C), tested by sub.ll:test16 · 0aee4b79
      Chris Lattner authored
      llvm-svn: 16769
      0aee4b79
    • Chris Lattner's avatar
      Reduce code growth implied by the tail duplication pass by not duplicating · 2ce32df8
      Chris Lattner authored
      an instruction if it can be hoisted to a common dominator of the block.
      This implements: test/Regression/Transforms/TailDup/MergeTest.ll
      
      llvm-svn: 16758
      2ce32df8
  11. Sep 30, 2004
  12. Sep 29, 2004
Loading