Skip to content
  1. Jul 09, 2011
  2. Jul 06, 2011
  3. Jul 01, 2011
  4. Jun 29, 2011
    • Eli Friedman's avatar
      We don't pass classes with a copy-constructor or destructor byval, so the... · 4774b7e4
      Eli Friedman authored
      We don't pass classes with a copy-constructor or destructor byval, so the address takes up an integer register (if one is available).  Make sure the x86-64 ABI implementation takes that into account properly.
      
      The fixed implementation is compatible with the implementation both gcc and llvm-gcc use.
      
      rdar://9686430 . (This is the issue that was reported in the thread "[LLVMdev] Segfault calling LLVM libs from a clang-compiled executable".)
      
      llvm-svn: 134059
      4774b7e4
  5. Jun 28, 2011
  6. Jun 27, 2011
  7. Jun 25, 2011
  8. Jun 24, 2011
  9. Jun 22, 2011
  10. Jun 21, 2011
    • Douglas Gregor's avatar
      Introduce a new AST node describing reference binding to temporaries. · fe31481f
      Douglas Gregor authored
      MaterializeTemporaryExpr captures a reference binding to a temporary
      value, making explicit that the temporary value (a prvalue) needs to
      be materialized into memory so that its address can be used. The
      intended AST invariant here is that a reference will always bind to a
      glvalue, and MaterializeTemporaryExpr will be used to convert prvalues
      into glvalues for that binding to happen. For example, given
      
        const int& r = 1.0;
      
      The initializer of "r" will be a MaterializeTemporaryExpr whose
      subexpression is an implicit conversion from the double literal "1.0"
      to an integer value. 
      
      IR generation benefits most from this new node, since it was
      previously guessing (badly) when to materialize temporaries for the
      purposes of reference binding. There are likely more refactoring and
      cleanups we could perform there, but the introduction of
      MaterializeTemporaryExpr fixes PR9565, a case where IR generation
      would effectively bind a const reference directly to a bitfield in a
      struct. Addresses <rdar://problem/9552231>.
      
      llvm-svn: 133521
      fe31481f
  11. Jun 20, 2011
    • Chris Lattner's avatar
      Update to match mainline ConstantStruct::get API change. Also, use · e64d7ba1
      Chris Lattner authored
      ConvertType on InitListExprs as they are being converted.  This is
      needed for a forthcoming patch, and improves the IR generated anyway
      (see additional type names in testcases). 
      
      This patch also converts a bunch of std::vector's in CGObjCMac to use
      C arrays.  There are a ton more that should be converted as well.
      
      llvm-svn: 133413
      e64d7ba1
  12. Jun 17, 2011
  13. Jun 15, 2011
  14. Jun 14, 2011
  15. Jun 11, 2011
  16. Jun 10, 2011
  17. Jun 05, 2011
  18. Jun 04, 2011
  19. May 31, 2011
  20. May 28, 2011
  21. May 27, 2011
    • Eli Friedman's avatar
      Back out r132209; it's breaking nightly tests. · 380b8dad
      Eli Friedman authored
      llvm-svn: 132219
      380b8dad
    • John McCall's avatar
      Implement a new, much improved version of the cleanup hack. We just need · 63fb333f
      John McCall authored
      to be careful to emit landing pads that are always prepared to handle a
      cleanup path.  This is correct mostly because of the fix to the LLVM
      inliner, r132200.
      
      llvm-svn: 132209
      63fb333f
    • Chandler Carruth's avatar
      Enhance Clang to start instantiating static data member definitions · 7c430c0e
      Chandler Carruth authored
      within class templates when they are necessary to complete the type of
      the member. The canonical example is code like:
      
        template <typename T> struct S {
          static const int arr[];
          static const int x;
          static int f();
        };
      
        template <typename T> const int S<T>::arr[] = { 1, 2, 3 };
        template <typename T> const int S<T>::x = sizeof(arr) / sizeof(arr[0]);
        template <typename T> int S<T>::f() { return x; }
      
        int x = S<int>::f();
      
      We need to instantiate S<T>::arr's definition to pick up its initializer
      and complete the array type. This involves new code to specially handle
      completing the type of an expression where the type alone is
      insufficient. It also requires *updating* the expression with the newly
      completed type. Fortunately, all the other infrastructure is already in
      Clang to do the instantiation, do the completion, and prune out the
      unused bits of code that result from this instantiation.
      
      This addresses the initial bug in PR10001, and will be a step to
      fleshing out other cases where we need to work harder to complete an
      expression's type. Who knew we still had missing C++03 "features"?
      
      llvm-svn: 132172
      7c430c0e
  22. May 24, 2011
  23. May 23, 2011
Loading