Skip to content
  1. May 27, 2011
    • Eli Friedman's avatar
      Back out r132209; it's breaking nightly tests. · 380b8dad
      Eli Friedman authored
      llvm-svn: 132219
      380b8dad
    • Douglas Gregor's avatar
      Clean up my changes to jump-diagnostic handling for local variables of · 22ae696b
      Douglas Gregor authored
      class type (or array thereof), eliminating some redundant checks
      (thanks Eli!) and adding some tests where the behavior differs in
      C++98/03 vs. C++0x.
      
      llvm-svn: 132218
      22ae696b
    • 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
    • Alexis Hunt's avatar
      Add assertions to verify that we are not trying to instantiate a · 23f6b83d
      Alexis Hunt authored
      nontemplate in Sema::InstantiateTemplateDecl.
      
      This should make the issue in PR10026 more visible, although it's not
      going to fix it because something is violating this precondition.
      
      llvm-svn: 132208
      23f6b83d
    • Douglas Gregor's avatar
      Update the jump-scope checker for local variables with initializers, · 27d0c445
      Douglas Gregor authored
      so that it looks at the initializer of a local variable of class type
      (or array thereof) to determine whether it's just an implicit
      invocation of the trivial default constructor. Fixes PR10034.
      
      llvm-svn: 132191
      27d0c445
    • Richard Trieu's avatar
      0cbb131d
    • 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
    • Douglas Gregor's avatar
      Objective-C doesn't consider the use of incomplete types as method · a9d84933
      Douglas Gregor authored
      parameter types to be ill-formed. However, it relies on the
      completeness of method parameter types when producing metadata, e.g.,
      for a protocol, leading IR generating to crash in such cases.
      
      Since there's no real way to tighten down the semantics of Objective-C
      here without breaking existing code, do something safe but lame:
      suppress the generation of metadata when this happens.
      
      Fixes <rdar://problem/9123036>.
      
      llvm-svn: 132171
      a9d84933
  2. May 26, 2011
  3. May 25, 2011
  4. May 24, 2011
Loading