Skip to content
  1. Sep 03, 2009
  2. Sep 02, 2009
  3. Sep 01, 2009
  4. Aug 31, 2009
    • Chris Lattner's avatar
      fix some cases where instcombine would change hte IR but not return true · ff5f1e4d
      Chris Lattner authored
      from runOnFunction
      
      llvm-svn: 80562
      ff5f1e4d
    • Chris Lattner's avatar
      comment and simplify some code. · 9e507479
      Chris Lattner authored
      llvm-svn: 80540
      9e507479
    • Chris Lattner's avatar
      add -debug output · 70ebbc59
      Chris Lattner authored
      llvm-svn: 80539
      70ebbc59
    • Chris Lattner's avatar
      improve -debug output, so that -debug is more likely to print when · 19dd315e
      Chris Lattner authored
      instcombine is changing stuff.
      
      llvm-svn: 80538
      19dd315e
    • Chris Lattner's avatar
      fix a bug I introduced with my 'instcombine builder' refactoring · 4e3e9307
      Chris Lattner authored
      changes: SimplifyDemandedBits can't use the builder yet because it
      has the wrong insertion point.  This fixes a crash building
      MultiSource/Benchmarks/PAQ8p
      
      llvm-svn: 80537
      4e3e9307
    • Chris Lattner's avatar
      simplify some code by making the SCCNodes set contain Function*'s · 2f2110af
      Chris Lattner authored
      instead of CallGraphNode*'s.  This also papers over a callgraph
      problem where a pass (in this case, MemCpyOpt) introduces a new
      function into the module (llvm.memset.i64) but doesn't add it to
      the call graph (nor should it, since it is a function pass).
      
      While it might be a good idea for MemCpyOpt to not synthesize 
      functions in a runOnFunction(), there is no need for FunctionAttrs
      to be boneheaded, so fix it there.  This fixes an assertion building
      176.gcc.
      
      llvm-svn: 80535
      2f2110af
    • Chris Lattner's avatar
      Fix PR4834, a tricky case where the inliner would resolve an · 081375bb
      Chris Lattner authored
      indirect function pointer, inline it, then go to delete the body.
      The problem is that the callgraph had other references to the function,
      though the inliner had no way to know it, so we got a dangling pointer
      and an invalid iterator out of the deal.
      
      The fix to this is pretty simple: stop the inliner from deleting the
      function by knowing that there are references to it.  Do this by making
      CallGraphNodes contain a refcount.  This requires moving deletion of 
      available_externally functions to the module-level cleanup sweep where
      it belongs.
      
      llvm-svn: 80533
      081375bb
    • Chris Lattner's avatar
      Fix some nasty callgraph dangling pointer problems in · 305b115a
      Chris Lattner authored
      argpromotion and structretpromote.  Basically, when replacing
      a function, they used the 'changeFunction' api which changes
      the entry in the function map (and steals/reuses the callgraph
      node).
      
      This has some interesting effects: first, the problem is that it doesn't
      update the "callee" edges in any callees of the function in the call graph.
      Second, this covers for a major problem in all the CGSCC pass stuff, which 
      is that it is completely broken when functions are deleted if they *don't*
      reuse a CGN.  (there is a cute little fixme about this though :).
      
      This patch changes the protocol that CGSCC passes must obey: now the CGSCC 
      pass manager copies the SCC and preincrements its iterator to avoid passes
      invalidating it.  This allows CGSCC passes to mutate the current SCC.  However
      multiple passes may be run on that SCC, so if passes do this, they are now
      required to *update* the SCC to be current when they return.
      
      Other less interesting parts of this patch are that it makes passes update
      the CG more directly, eliminates changeFunction, and requires clients of
      replaceCallSite to specify the new callee CGN if they are changing it.
      
      llvm-svn: 80527
      305b115a
  5. Aug 30, 2009
Loading