Skip to content
  1. Feb 13, 2009
    • Douglas Gregor's avatar
      Add basic support for C++ name mangling according to the Itanium C++ · 5fec5b04
      Douglas Gregor authored
      ABI to the CodeGen library. Since C++ code-generation is so
      incomplete, we can't exercise much of this mangling code. However, a
      few smoke tests show that it's doing the same thing as GCC. When C++
      codegen matures, we'll extend the ABI tester to verify name-mangling
      as well, and complete the implementation here.
      
      At this point, the major client of name mangling is in the uses of the
      new "overloadable" attribute in C, which allows overloading. Any
      "overloadable" function in C (or in an extern "C" block in C++) will
      be mangled the same way that the corresponding C++ function would be
      mangled.
      
      llvm-svn: 64413
      5fec5b04
  2. Feb 10, 2009
  3. Feb 09, 2009
  4. Feb 08, 2009
  5. Feb 07, 2009
  6. Feb 05, 2009
  7. Feb 04, 2009
  8. Feb 03, 2009
  9. Feb 02, 2009
    • Daniel Dunbar's avatar
      More ABI API cleanup. · d931a87f
      Daniel Dunbar authored
       - Lift CGFunctionInfo creation above ReturnTypeUsesSret and
         EmitFunction{Epi,Pro}log.
      
      llvm-svn: 63553
      d931a87f
  10. Jan 27, 2009
  11. Jan 26, 2009
  12. Jan 20, 2009
  13. Jan 09, 2009
  14. Dec 20, 2008
  15. Dec 12, 2008
  16. Dec 01, 2008
  17. Nov 24, 2008
  18. Nov 22, 2008
  19. Nov 17, 2008
  20. Nov 16, 2008
  21. Nov 13, 2008
    • Daniel Dunbar's avatar
      Normalize many BasicBlock names. · a612e79b
      Daniel Dunbar authored
       - Use dotted notation for blocks related to a particular statement
         type.
       - Use .end for landing pads.
      
      No functionality change in NDEBUG mode. :)
      
      llvm-svn: 59210
      a612e79b
  22. Nov 12, 2008
    • Daniel Dunbar's avatar
      Quick fix for crash in IRgen when we can tryEvaluate a condition to · f32443cd
      Daniel Dunbar authored
      something that is not an int.
      
       - Ignore these cases for now, added FIXME that we should also boolize
         them.
      
      llvm-svn: 59184
      f32443cd
    • Daniel Dunbar's avatar
      Handle ?: in EmitBranchOnBoolExpr. · bf3c22e5
      Daniel Dunbar authored
      llvm-svn: 59129
      bf3c22e5
    • Chris Lattner's avatar
      Handle Unary ! in EmitBranchOnBoolExpr, so that we can efficiently · d9537734
      Chris Lattner authored
      codegen stuff like "if (!(X && Y))"
      
      llvm-svn: 59115
      d9537734
    • Chris Lattner's avatar
      Move EmitBranchOnBoolExpr and ConstantFoldsToSimpleInteger to · cd439299
      Chris Lattner authored
      CodeGenFunction.cpp.  Change VisitConditionalOperator to use
      constant fold instead of codegen'ing a constant conditional.
      
      Change ForStmt to use EmitBranchOnBoolExpr, this shrinks
      expr.c very slightly to 40239 lines.
      
      llvm-svn: 59113
      cd439299
    • Daniel Dunbar's avatar
      Rework IRgen invariant w.r.t. current insert point. · 5c7e3935
      Daniel Dunbar authored
       - EmitStmt is no longer required to finish with a current insertion
         point defined (i.e. it does not need to make dummy
         blocks). Instead, it can clear the insertion point in the builder
         which indicates that the current insertion point is unreachable.
       - CodeGenFunction provides HaveInsertPoint and EnsureInsertPoint
         which respectively test if there is an insert point and ensure an
         insertion point exists (by making a dummy block).
       - Clearly mark functions in CodeGenFunction which can be called with
         no insertion point defined. Currently this is a limited set, and
         EmitStmt simply EnsureInsertPoint()s before emitting subsequent IR.
      
      Remove EmitDummyBlock, which is no longer needed. Clients who haven't
      already cleared the insertion point (typically via EmitBranch) can do
      so by hand.
      
      Remove isDummyBlock, which has effectively been renamed to
      HaveInsertPoint.
      
      The main thrust of this change is that we no longer have create dummy
      blocks just to destroy them a short time later in EmitBlock in the
      common case that there is no unreachable code following something like
      a goto. 
      
      Additionally, this means that we are not using the hokey condition in
      isDummyBlock that a block without a name is a dummy block. Guess how
      well that works when we never emit block names!
      
      llvm-svn: 59089
      5c7e3935
Loading