Skip to content
  1. Jan 14, 2009
  2. Dec 10, 2008
    • Evan Cheng's avatar
      Fix a couple of Dwarf bugs. · 288fbd21
      Evan Cheng authored
      - Emit DW_AT_byte_size for struct and union of size zero.
      - Emit DW_AT_declaration for forward type declaration.
      
      llvm-svn: 60812
      288fbd21
  3. Nov 10, 2008
  4. Oct 16, 2008
  5. Sep 23, 2008
  6. Sep 22, 2008
  7. Sep 04, 2008
  8. Jul 09, 2008
  9. Jul 07, 2008
  10. Jul 04, 2008
  11. Jul 02, 2008
  12. Jun 30, 2008
  13. Jun 29, 2008
    • Anton Korobeynikov's avatar
      Revert (52748 and friends): · a7c583d5
      Anton Korobeynikov authored
      Move GetConstantStringInfo to lib/Analysis. Remove
      string output routine from Constant. Update all
      callers. Change debug intrinsic api slightly to
      accomodate move of routine, these now return values
      instead of strings.
      
      This unbreaks llvm-gcc bootstrap.
      
      llvm-svn: 52884
      a7c583d5
  14. Jun 27, 2008
  15. Jun 26, 2008
  16. May 13, 2008
  17. Apr 02, 2008
    • Dale Johannesen's avatar
      Recommitting EH patch; this should answer most of the · fd967cf3
      Dale Johannesen authored
      review feedback.
      -enable-eh is still accepted but doesn't do anything.
      EH intrinsics use Dwarf EH if the target supports that,
      and are handled by LowerInvoke otherwise.
      The separation of the EH table and frame move data is,
      I think, logically figured out, but either one still
      causes full EH info to be generated (not sure how to
      split the metadata correctly).
      MachineModuleInfo::needsFrameInfo is no longer used and
      is removed.
      
      llvm-svn: 49064
      fd967cf3
  18. Mar 25, 2008
  19. Feb 02, 2008
    • Evan Cheng's avatar
      SDIsel processes llvm.dbg.declare by recording the variable debug information... · efd142a9
      Evan Cheng authored
      SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
      Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
      For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
      
      llvm-svn: 46659
      efd142a9
  20. Feb 01, 2008
  21. Jan 31, 2008
  22. Jan 30, 2008
  23. Jan 29, 2008
  24. Jan 16, 2008
  25. Jan 07, 2008
  26. Dec 29, 2007
  27. Dec 19, 2007
    • Duncan Sands's avatar
      The C++ exception handling personality function wants · 030bce7b
      Duncan Sands authored
      to know about calls that cannot throw ('nounwind'):
      if such a call does throw for some reason then the
      personality will terminate the program.  The distinction
      between an ordinary call and a nounwind call is that
      an ordinary call gets an entry in the exception table
      but a nounwind call does not.  This patch sets up the
      exception table appropriately.  One oddity is that
      I've chosen to bracket nounwind calls with labels (like
      invokes) - the other choice would have been to bracket
      ordinary calls with labels.  While bracketing
      ordinary calls is more natural (because bracketing
      by labels would then correspond exactly to getting an
      entry in the exception table), I didn't do it because
      introducing labels impedes some optimizations and I'm
      guessing that ordinary calls occur more often than
      nounwind calls.  This fixes the gcc filter2 eh test,
      at least at -O0 (the inliner needs some tweaking at
      higher optimization levels).
      
      llvm-svn: 45197
      030bce7b
  28. Dec 17, 2007
  29. Nov 30, 2007
  30. Sep 05, 2007
    • Duncan Sands's avatar
      Fix PR1628. When exception handling is turned on, · 3c1b7fc0
      Duncan Sands authored
      labels are generated bracketing each call (not just
      invokes).  This is used to generate entries in
      the exception table required by the C++ personality.
      However it gets in the way of tail-merging.  This
      patch solves the problem by no longer placing labels
      around ordinary calls.  Instead we generate entries
      in the exception table that cover every instruction
      in the function that wasn't covered by an invoke
      range (the range given by the labels around the invoke).
      As an optimization, such entries are only generated for
      parts of the function that contain a call, since for
      the moment those are the only instructions that can
      throw an exception [1].  As a happy consequence, we
      now get a smaller exception table, since the same
      region can cover many calls.  While there, I also
      implemented folding of invoke ranges - successive
      ranges are merged when safe to do so.  Finally, if
      a selector contains only a cleanup, there's a special
      shorthand for it - place a 0 in the call-site entry.
      I implemented this while there.  As a result, the
      exception table output (excluding filters) is now
      optimal - it cannot be made smaller [2].  The
      problem with throw filters is that folding them
      optimally is hard, and the benefit of folding them is
      minimal.
      
      [1] I tested that having trapping instructions (eg
      divide by zero) in such a region doesn't cause trouble.
      [2] It could be made smaller with the help of higher
      layers, eg by having branch folding reorder basic blocks
      ending in invokes with the same landing pad so they
      follow each other.  I don't know if this is worth doing.
      
      llvm-svn: 41718
      3c1b7fc0
Loading