Skip to content
  1. Oct 01, 2008
    • Daniel Dunbar's avatar
      Add simple interface for protecting runtime functions from name · 23fd462f
      Daniel Dunbar authored
      collisions.
       - Provide CodeGenModule::CreateRuntimeFunction which guarantees that
         the function it creates will have the provided name in the final
         module. This allows the runtime to have its functions protected
         from declarations of the same name in the source code.
      
       - One could argue that this is a reason to abuse the llvm::Module
         namespace for dealing with function redeclarations. However, that
         approach seems conceptually flawed to me. This one also happens to
         be somewhat more efficient.
      
      No functionality change.
      
      llvm-svn: 56899
      23fd462f
  2. Sep 25, 2008
    • Devang Patel's avatar
      Large mechanical patch. · 322300d1
      Devang Patel authored
      s/ParamAttr/Attribute/g
      s/PAList/AttrList/g
      s/FnAttributeWithIndex/AttributeWithIndex/g
      s/FnAttr/Attribute/g
      
      This sets the stage 
      - to implement function notes as function attributes and 
      - to distinguish between function attributes and return value attributes.
      
      llvm-svn: 56623
      322300d1
  3. Sep 10, 2008
    • Daniel Dunbar's avatar
      Move FunctionType conversion into CGCall.cpp: · 7a95ca31
      Daniel Dunbar authored
       - Added CodeGenTypes::GetFunctionType, taking a CGFunctionInfo.
       - Updated Obj-C runtimes to use this instead of rolling the
         llvm::FunctionType by hand.
       - Killed CodeGenTypes::{ConvertReturnType, DecodeArgumentTypes}.
      
      Add ABIArgInfo class to encapsulate ABI decision of how to lower types
      to LLVM.
       - Will move to target sometime soon.
      
      llvm-svn: 56047
      7a95ca31
    • Daniel Dunbar's avatar
      Tweak CGCall functions again: · c68897d2
      Daniel Dunbar authored
       - Realized these functions will eventually need access to more data,
         moved to CodeGenModule. Eventually they should probably live
         together in some other helper class.
      
      llvm-svn: 56039
      c68897d2
  4. Sep 09, 2008
  5. Sep 08, 2008
    • Daniel Dunbar's avatar
      Refactor parameter attribute handling: · 3d7c90b8
      Daniel Dunbar authored
        - Add CGCall.h for dealing with ABI issues related to calls.
        - Add CGFunctionInfo and CGCallInfo for capturing ABI relevant
          information about functions and calls.
        - Isolate LLVM parameter attribute handling inside CGCall.cpp
      
      llvm-svn: 55963
      3d7c90b8
  6. Sep 05, 2008
  7. Sep 04, 2008
  8. Aug 26, 2008
    • Daniel Dunbar's avatar
      Objective-C @synthesize support. · 89654eef
      Daniel Dunbar authored
       - Only supports simple assignment and atomic semantics are ignored.
       - Not quite usable yet because the methods do not actually get added
         to the class metadata.
       - Added ObjCPropertyDecl::getSetterKind (one of Assign, Copy, Retain).
       - Rearrange CodeGenFunction so synthesis can reuse function prolog /
         epilog code.
      
      llvm-svn: 55365
      89654eef
  9. Aug 25, 2008
  10. Aug 23, 2008
  11. Aug 16, 2008
  12. Aug 14, 2008
    • Daniel Dunbar's avatar
      Add GetAddrOfConstantCString method · c4baa06d
      Daniel Dunbar authored
       - Returns addr of constant for argument + '\0'.
       - I couldn't think of a better name.
       - Move appropriate users of GetAddrOfConstantString to this.
      
      Rename getStringForStringLiteral to GetStringForStringLiteral.
      
      Add GetAddrOfConstantStringFromLiteral
       - This combines GetAddrOfConstantString and
         GetStringForStringLiteral. This method can be, but is not yet, more
         efficient.
      
      Change GetAddrOfConstantString to not add terminating '\0'
       - <rdar://problem/6140956>
      
      llvm-svn: 54768
      c4baa06d
  13. Aug 13, 2008
  14. Aug 11, 2008
  15. Aug 10, 2008
    • Daniel Dunbar's avatar
      Back out r54608 (inline string literals were getting an extra '\0') · 6dfdf8c9
      Daniel Dunbar authored
        temporarily, I assumed GetAddrForConstantString literal was being
        used consistently but it doesn't look like it is.
      
      Factored out a CodeGenModule::getStringForStringLiteral which handles
        extracting a std::string for the bytes of a StringLiteral, padded to
        match the type.
      
      Update EmitLValue to use getStringForStringLiteral, this was
        previously not padding strings correctly. Good thing we only emit
        strings in 4 different places!
      
      llvm-svn: 54621
      6dfdf8c9
  16. Aug 06, 2008
    • Daniel Dunbar's avatar
      Change CodeGen of global decls to key off of the name (instead of · 829e9888
      Daniel Dunbar authored
        having multiple bindings from all the possible decls which
        conceptually map to the same global).
      
       - This eliminates CodeGen depending on the LLVM module for name
         lookup.
      
       - This also eliminates the need for ReplaceMapValuesWith (hurrah).
      
       - This handles lookups for FunctionDecls correctly in the presence of
         aliases, this was previously broken.
      
       - WIP: Can still clean up & unify variable and function emission.
      
      llvm-svn: 54382
      829e9888
  17. Aug 05, 2008
  18. Aug 01, 2008
  19. Jul 30, 2008
    • Daniel Dunbar's avatar
      Change CodeGenModule GlobalDeclMap to directly reference globals · e49df9b5
      Daniel Dunbar authored
      instead of mapping the decl to a bitcast of the global to the correct
      type.
       
       - GetAddrOf{Function,GlobalVar} introduce the bitcast on every use now.
      
       - This solves a problem where a dangling pointer could be introduced
         by the RAUW done when replacing a forward or tentative
         definition. See testcase for more details.
      
       - Fixes <rdar://problem/6108358>
      
      llvm-svn: 54211
      e49df9b5
    • Daniel Dunbar's avatar
      Rework codegen emission of globals · 9c426524
      Daniel Dunbar authored
       - No (intended) functionality change.
      
       - Primary purpose is to clearly separate (lazy) construction of
         globals that are a forward declaration or tentative definition from
         those that are the final definition.
      
       - Lazy construction is now encapsulated in
         GetAddrOf{Function,GlobalVar} while final definitions are
         constructed in EmitGlobal{Function,Var}Definition.
       
       - External interface for dealing with globals is now limited to
         EmitGlobal and GetAddrOf{Function,GlobalVar}.
      
       - Also updated helper functions dealing with statics, annotations,
         and ctors to be private.
      
      llvm-svn: 54179
      9c426524
  20. Jul 29, 2008
  21. Jun 08, 2008
  22. Jun 01, 2008
  23. 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
  24. May 22, 2008
    • Dan Gohman's avatar
      Move getAccessedFieldNo out of lib/AST/Expr.cpp into · 75d69da5
      Dan Gohman authored
      lib/CodeGen/CGExpr.cpp and to change include/clang/AST/Attr.h to
      use its own enum for visibility types instead of using
      llvm::GlobalValue::VisibilityTypes. These changes eliminate
      dependencies in the AST library on LLVM's VMCore library.
      
      llvm-svn: 51398
      75d69da5
  25. 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
  26. Apr 20, 2008
  27. Apr 19, 2008
  28. Apr 16, 2008
    • Steve Naroff's avatar
      Remove FileVarDecl and BlockVarDecl. They are replaced by... · 08899ff8
      Steve Naroff authored
      Remove FileVarDecl and BlockVarDecl. They are replaced by VarDecl::isBlockVarDecl() and VarDecl::isFileVarDecl().
      
      This is a fairly mechanical/large change. As a result, I avoided making any changes/simplifications that weren't directly related. I did break two Analysis tests. I also have a couple FIXME's in UninitializedValues.cpp. Ted, can you take a look? If the bug isn't obvious, I am happy to dig in and fix it (since I broke it).
      
      llvm-svn: 49748
      08899ff8
  29. Mar 31, 2008
  30. Mar 16, 2008
    • Chris Lattner's avatar
      Make a major restructuring of the clang tree: introduce a top-level · 7a51313d
      Chris Lattner authored
      lib dir and move all the libraries into it.  This follows the main
      llvm tree, and allows the libraries to be built in parallel.  The
      top level now enforces that all the libs are built before Driver,
      but we don't care what order the libs are built in.  This speeds
      up parallel builds, particularly incremental ones.
      
      llvm-svn: 48402
      7a51313d
  31. Mar 14, 2008
Loading