Skip to content
  1. Dec 10, 2009
    • Mike Stump's avatar
      Add terminate handler for copy constructors for thrown objects. WIP. · 25b20fc2
      Mike Stump authored
      llvm-svn: 90994
      25b20fc2
    • Ted Kremenek's avatar
      Fix null dereference in OSAtomicChecker and special case SymbolicRegions. We... · 85739137
      Ted Kremenek authored
      Fix null dereference in OSAtomicChecker and special case SymbolicRegions.  We still aren't handling them correctly; I've added to failing test cases to test/Analysis/NSString-failed-cases.m that should pass and then be merged in to test/Analysis/NSString.m.
      
      llvm-svn: 90993
      85739137
    • Douglas Gregor's avatar
      Reimplement reference initialization (C++ [dcl.init.ref]) using the · 3e1e5278
      Douglas Gregor authored
      new notion of an "initialization sequence", which encapsulates the
      computation of the initialization sequence along with diagnostic
      information and the capability to turn the computed sequence into an
      expression. At present, I've only switched one CheckReferenceInit
      callers over to this new mechanism; more will follow.
      
      Aside from (hopefully) being much more true to the standard, the
      diagnostics provided by this reference-initialization code are a bit
      better than before. Some examples:
      
      p5-var.cpp:54:12: error: non-const lvalue reference to type 'struct
      Derived'
            cannot bind to a value of unrelated type 'struct Base'
        Derived &dr2 = b; // expected-error{{non-const lvalue reference to
        ...
                 ^     ~
      p5-var.cpp:55:9: error: binding of reference to type 'struct Base' to
      a value of
            type 'struct Base const' drops qualifiers
        Base &br3 = bc; // expected-error{{drops qualifiers}}
              ^     ~~
      
      p5-var.cpp:57:15: error: ambiguous conversion from derived class
            'struct Diamond' to base class 'struct Base':
          struct Diamond -> struct Derived -> struct Base
          struct Diamond -> struct Derived2 -> struct Base
        Base &br5 = diamond; // expected-error{{ambiguous conversion from
            ...
                    ^~~~~~~
      p5-var.cpp:59:9: error: non-const lvalue reference to type 'long'
            cannot bind to
            a value of unrelated type 'int'
        long &lr = i; // expected-error{{non-const lvalue reference to type
            ...
              ^    ~
      
      p5-var.cpp:74:9: error: non-const lvalue reference to type 'struct
      Base' cannot
            bind to a temporary of type 'struct Base'
        Base &br1 = Base(); // expected-error{{non-const lvalue reference to
        ...
              ^     ~~~~~~
      
      p5-var.cpp:102:9: error: non-const reference cannot bind to bit-field
      'i'
        int & ir1 = (ib.i); // expected-error{{non-const reference cannot
        ...
              ^     ~~~~~~
      p5-var.cpp:98:7: note: bit-field is declared here
        int i : 17; // expected-note{{bit-field is declared here}}
            ^
      
      llvm-svn: 90992
      3e1e5278
  2. Dec 09, 2009
Loading