Skip to content
  1. May 02, 2011
    • Chandler Carruth's avatar
      Nuke stale code for separately importing the qualifer -- it's just part · 1d352ec6
      Chandler Carruth authored
      of the QualifierLoc, and that's all we need to import now.
      
      llvm-svn: 130675
      1d352ec6
    • Nick Lewycky's avatar
      Remove dead variable, flagged by gcc's -Wunused-but-set-variable. · 1c60a0bc
      Nick Lewycky authored
      llvm-svn: 130674
      1c60a0bc
    • Nick Lewycky's avatar
      Remove dead variable flagged by gcc's -Wunused-but-set-variable. No · b4175cad
      Nick Lewycky authored
      functionality change.
      
      llvm-svn: 130673
      b4175cad
    • Nick Lewycky's avatar
      Remove a dead variable flagged by gcc's -Wunused-but-set-variable. No · 18a1ee7f
      Nick Lewycky authored
      functionality change.
      
      llvm-svn: 130672
      18a1ee7f
    • John McCall's avatar
      Revise the representation of parameter scope data so that the · 82490837
      John McCall authored
      scope depth overlaps with the ObjCDeclQualifier, dropping
      memory usage back to previous levels.
      
      llvm-svn: 130671
      82490837
    • Chandler Carruth's avatar
      Add an optional field attached to a DeclRefExpr which points back to the · 8d26bb08
      Chandler Carruth authored
      Decl actually found via name lookup & overload resolution when that Decl
      is different from the ValueDecl which is actually referenced by the
      expression.
      
      This can be used by AST consumers to correctly attribute references to
      the spelling location of a using declaration, and otherwise gain insight
      into the name resolution performed by Clang.
      
      The public interface to DRE is kept as narrow as possible: we provide
      a getFoundDecl() which always returns a NamedDecl, either the ValueDecl
      referenced or the new, more precise NamedDecl if present. This way AST
      clients can code against getFoundDecl without know when exactly the AST
      has a split representation.
      
      For an example of the data this provides consider:
      % cat x.cc
      namespace N1 {
        struct S {};
        void f(const S&);
      }
      void test(N1::S s) {
        f(s);
        using N1::f;
        f(s);
      }
      
      % ./bin/clang -fsyntax-only -Xclang -ast-dump x.cc
      [...]
      void test(N1::S s) (CompoundStmt 0x5b02010 <x.cc:5:20, line:9:1>
        (CallExpr 0x5b01df0 <line:6:3, col:6> 'void'
          (ImplicitCastExpr 0x5b01dd8 <col:3> 'void (*)(const struct N1::S &)' <FunctionToPointerDecay>
            (DeclRefExpr 0x5b01d80 <col:3> 'void (const struct N1::S &)' lvalue Function 0x5b01a20 'f' 'void (const struct N1::S &)'))
          (ImplicitCastExpr 0x5b01e20 <col:5> 'const struct N1::S' lvalue <NoOp>
            (DeclRefExpr 0x5b01d58 <col:5> 'N1::S':'struct N1::S' lvalue ParmVar 0x5b01b60 's' 'N1::S':'struct N1::S')))
        (DeclStmt 0x5b01ee0 <line:7:3, col:14>
          0x5b01e40 "UsingN1::;")
        (CallExpr 0x5b01fc8 <line:8:3, col:6> 'void'
          (ImplicitCastExpr 0x5b01fb0 <col:3> 'void (*)(const struct N1::S &)' <FunctionToPointerDecay>
            (DeclRefExpr 0x5b01f80 <col:3> 'void (const struct N1::S &)' lvalue Function 0x5b01a20 'f' 'void (const struct N1::S &)' (UsingShadow 0x5b01ea0 'f')))
          (ImplicitCastExpr 0x5b01ff8 <col:5> 'const struct N1::S' lvalue <NoOp>
            (DeclRefExpr 0x5b01f58 <col:5> 'N1::S':'struct N1::S' lvalue ParmVar 0x5b01b60 's' 'N1::S':'struct N1::S'))))
      
      Now we can tell that the second call is 'using' (no pun intended) the using
      declaration, and *which* using declaration it sees. Without this, we can
      mistake calls that go through using declarations for ADL calls, and have no way
      to attribute names looked up with using declarations to the appropriate
      UsingDecl.
      
      llvm-svn: 130670
      8d26bb08
    • John McCall's avatar
      Store a parameter index and function prototype depth in every · 8fb0d9d2
      John McCall authored
      parameter node and use this to correctly mangle parameter
      references in function template signatures.
      
      A follow-up patch will improve the storage usage of these
      fields;  here I've just done the lazy thing.
      
      llvm-svn: 130669
      8fb0d9d2
    • Chandler Carruth's avatar
      Remove the NameQualifier struct, which was just a wrapper around · bbf65b05
      Chandler Carruth authored
      NestedNameSpecifierLoc. It predates when we had such an object.
      
      Reference the NNSLoc directly in DREs, and embed it directly into the
      MemberNameQualifier struct.
      
      llvm-svn: 130668
      bbf65b05
  2. May 01, 2011
Loading