Skip to content
  1. May 29, 2008
    • Eli Friedman's avatar
      Always use packed structs. This isn't really very nice, but there's · 5a6d0ede
      Eli Friedman authored
      nothing fundamentally wrong with it. Emitting unpacked structs where 
      possible is more work for almost no practical benefit.  We'll probably 
      want to fix it at some point anyway, but it's low priority.
      
      The issue with long double in particular is that LLVM thinks an X86 long
      double is 10 bytes, while clang considers it for all purposes to be
      either 12 or 16 bytes, depending on the platform, even in a packed
      struct.
      
      llvm-svn: 51673
      5a6d0ede
  2. May 28, 2008
  3. May 27, 2008
  4. May 26, 2008
    • Eli Friedman's avatar
      Emit memmove, not memcpy, for structure copies; this is unfortunately · df649f3d
      Eli Friedman authored
      required for correctness in cases of copying a struct to itself or to 
      an overlapping struct (itself for cases like *a = *a, and overlapping 
      is possible with unions).
      
      Hopefully, this won't end up being a perf issue; LLVM *should* be able 
      to optimize memmove to memcpy in a lot of cases, and for small copies 
      the generated code *should* be mostly comparable. (In reality, LLVM 
      is currently horrible at optimizing memmove, but that's a bug, not a 
      fundamental issue.)
      
      gcc currently generates wrong code; that's 
      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32667.
      
      llvm-svn: 51566
      df649f3d
  5. May 25, 2008
  6. May 23, 2008
    • Dan Gohman's avatar
      Change uses of llvm::Type::isFirstClassType to use the new · 5d30975e
      Dan Gohman authored
      llvm::Type::isSingleValueType. Currently these two functions have
      the same behavior, but soon isFirstClassType will return true for
      struct and array types.
      
      Clang may some day want to use of isFirstClassType for some of
      these some day as an optimization, but it'll require some
      consideration.
      
      llvm-svn: 51446
      5d30975e
  7. May 22, 2008
  8. May 21, 2008
  9. May 20, 2008
  10. May 19, 2008
  11. May 17, 2008
    • Eli Friedman's avatar
      Fix support for _Bool bitfields. The issue is that the bitfield width · f2442dcc
      Eli Friedman authored
      used for _Bool is not the same as the primitive width (which for _Bool 
      is 1 bit).  The load and store changes add some casts to make the 
      types consistent.  The EmitLValue changes make sure that the pointer is 
      of an appropriate type for loading the bitfield.
      
      This isn't perfect, but it's an improvement, and getting everything 
      right depends on actually laying out structs in an ABI-compliant way.
      
      llvm-svn: 51224
      f2442dcc
  12. May 16, 2008
  13. May 15, 2008
  14. May 14, 2008
  15. May 13, 2008
  16. May 12, 2008
  17. May 10, 2008
  18. May 09, 2008
    • Nate Begeman's avatar
      Extend vector member references to include {.hi, .lo, .e, .o} which return a · f322eabb
      Nate Begeman authored
      vector of the same element type and half the width, with the high, low, even,
      and odd elements respectively.
      
      Allow member references to member references, so that .hi.hi gives you the high
      quarter of a vector.  This is fairly convenient syntax for some insert/extract
      operations.
      
      Remove some unnecessary methods/types in the ExtVectorElementExpr class.
      
      llvm-svn: 50892
      f322eabb
  19. May 08, 2008
    • Sanjiv Gupta's avatar
      Added -g command line options to clang for generating source level debug... · 15cb6690
      Sanjiv Gupta authored
      Added -g command line options to clang for generating source level debug information. This patch currently enables generation of line number debug information (stoppoints) and region begin/end debug information. The new files CGDebugInfo.h and CGDebugInfo.cpp implements the debug info manager class CGDebugInfo.
      
      llvm-svn: 50848
      15cb6690
Loading