[llvm-branch-commits] [cfe-branch] r136042 - in /cfe/branches/exception-handling-rewrite: ./ include/clang-c/ include/clang/Basic/ include/clang/Frontend/ include/clang/Serialization/ lib/ARCMigrate/ lib/AST/ lib/Basic/ lib/CodeGen/ lib/Frontend/ lib/Headers/ lib/Lex/ lib/Parse/ lib/Rewrite/ lib/Sema/ lib/Serialization/ lib/StaticAnalyzer/Checkers/ lib/StaticAnalyzer/Core/ lib/StaticAnalyzer/Frontend/ test/CodeGen/ test/FixIt/ test/Index/ test/Sema/ test/SemaCXX/ tools/c-index-test/ tools/driver/ tools/libclang/ www/
Bill Wendling
isanbard at gmail.com
Mon Jul 25 18:36:55 PDT 2011
Author: void
Date: Mon Jul 25 20:36:54 2011
New Revision: 136042
URL: http://llvm.org/viewvc/llvm-project?rev=136042&view=rev
Log:
Merge with ToT.
Added:
cfe/branches/exception-handling-rewrite/test/CodeGen/2002-07-29-Casts.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2002-07-29-Casts.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2002-09-19-StarInLabel.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2002-09-19-StarInLabel.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2003-08-18-SigSetJmp.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2003-08-18-SigSetJmp.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2003-08-29-StructLayoutBug.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2003-08-29-StructLayoutBug.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2003-09-18-BitfieldTests.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2003-09-18-BitfieldTests.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2003-10-06-NegateExprType.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2003-10-06-NegateExprType.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2003-11-13-TypeSafety.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2003-11-13-TypeSafety.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2003-11-16-StaticArrayInit.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2003-11-16-StaticArrayInit.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2004-01-08-ExternInlineRedefine.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2004-01-08-ExternInlineRedefine.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2004-03-15-SimpleIndirectGoto.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2004-03-15-SimpleIndirectGoto.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2004-11-27-InvalidConstantExpr.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2004-11-27-InvalidConstantExpr.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2007-02-07-AddrLabel.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2007-02-07-AddrLabel.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2007-04-05-UnPackedStruct.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2007-04-05-UnPackedStruct.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2007-04-11-PR1321.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2007-04-11-PR1321.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2007-04-24-VolatileStructCopy.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2007-04-24-VolatileStructCopy.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2007-04-24-str-const.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2007-04-24-str-const.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2007-05-11-str-const.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2007-05-11-str-const.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2007-06-05-NoInlineAttribute.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2007-06-05-NoInlineAttribute.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2007-09-17-WeakRef.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2007-09-17-WeakRef.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2010-07-14-ref-off-end.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2010-07-14-ref-off-end.c
cfe/branches/exception-handling-rewrite/test/CodeGen/2011-03-31-ArrayRefFolding.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/2011-03-31-ArrayRefFolding.c
cfe/branches/exception-handling-rewrite/test/CodeGen/Atomics-no64bit.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/Atomics-no64bit.c
cfe/branches/exception-handling-rewrite/test/CodeGen/inline-asm-mrv.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/inline-asm-mrv.c
cfe/branches/exception-handling-rewrite/test/CodeGen/sret2.c
- copied unchanged from r136040, cfe/trunk/test/CodeGen/sret2.c
cfe/branches/exception-handling-rewrite/test/FixIt/fixit-static-object-decl.m
- copied unchanged from r136040, cfe/trunk/test/FixIt/fixit-static-object-decl.m
cfe/branches/exception-handling-rewrite/test/Index/cursor-ref-names.cpp
- copied unchanged from r136040, cfe/trunk/test/Index/cursor-ref-names.cpp
cfe/branches/exception-handling-rewrite/test/Sema/2009-03-09-WeakDeclarations-1.c
- copied unchanged from r136040, cfe/trunk/test/Sema/2009-03-09-WeakDeclarations-1.c
cfe/branches/exception-handling-rewrite/test/Sema/2009-04-22-UnknownSize.c
- copied unchanged from r136040, cfe/trunk/test/Sema/2009-04-22-UnknownSize.c
cfe/branches/exception-handling-rewrite/test/Sema/2009-07-17-VoidParameter.c
- copied unchanged from r136040, cfe/trunk/test/Sema/2009-07-17-VoidParameter.c
cfe/branches/exception-handling-rewrite/test/Sema/2010-05-31-palignr.c
- copied unchanged from r136040, cfe/trunk/test/Sema/2010-05-31-palignr.c
cfe/branches/exception-handling-rewrite/test/Sema/align-arm-apcs-gnu.c
- copied unchanged from r136040, cfe/trunk/test/Sema/align-arm-apcs-gnu.c
cfe/branches/exception-handling-rewrite/test/Sema/align-arm.c
- copied unchanged from r136040, cfe/trunk/test/Sema/align-arm.c
Removed:
cfe/branches/exception-handling-rewrite/test/Sema/align-arm-apcs.c
Modified:
cfe/branches/exception-handling-rewrite/ (props changed)
cfe/branches/exception-handling-rewrite/include/clang-c/Index.h
cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceLocation.h
cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceManager.h
cfe/branches/exception-handling-rewrite/include/clang/Basic/TargetInfo.h
cfe/branches/exception-handling-rewrite/include/clang/Frontend/VerifyDiagnosticsClient.h
cfe/branches/exception-handling-rewrite/include/clang/Serialization/ASTReader.h
cfe/branches/exception-handling-rewrite/lib/ARCMigrate/PlistReporter.cpp
cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransBlockObjCVariable.cpp
cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransformActions.cpp
cfe/branches/exception-handling-rewrite/lib/ARCMigrate/Transforms.cpp
cfe/branches/exception-handling-rewrite/lib/AST/ASTContext.cpp
cfe/branches/exception-handling-rewrite/lib/AST/ExprConstant.cpp
cfe/branches/exception-handling-rewrite/lib/Basic/DiagnosticIDs.cpp
cfe/branches/exception-handling-rewrite/lib/Basic/SourceLocation.cpp
cfe/branches/exception-handling-rewrite/lib/Basic/SourceManager.cpp
cfe/branches/exception-handling-rewrite/lib/Basic/TargetInfo.cpp
cfe/branches/exception-handling-rewrite/lib/Basic/Targets.cpp
cfe/branches/exception-handling-rewrite/lib/CodeGen/CGBuiltin.cpp
cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDebugInfo.cpp
cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDecl.cpp
cfe/branches/exception-handling-rewrite/lib/CodeGen/CodeGenModule.cpp
cfe/branches/exception-handling-rewrite/lib/Frontend/DependencyFile.cpp
cfe/branches/exception-handling-rewrite/lib/Frontend/PrintPreprocessedOutput.cpp
cfe/branches/exception-handling-rewrite/lib/Frontend/TextDiagnosticPrinter.cpp
cfe/branches/exception-handling-rewrite/lib/Frontend/VerifyDiagnosticsClient.cpp
cfe/branches/exception-handling-rewrite/lib/Headers/tgmath.h
cfe/branches/exception-handling-rewrite/lib/Lex/Lexer.cpp
cfe/branches/exception-handling-rewrite/lib/Lex/MacroInfo.cpp
cfe/branches/exception-handling-rewrite/lib/Lex/PPDirectives.cpp
cfe/branches/exception-handling-rewrite/lib/Lex/PPMacroExpansion.cpp
cfe/branches/exception-handling-rewrite/lib/Lex/TokenLexer.cpp
cfe/branches/exception-handling-rewrite/lib/Parse/ParseExpr.cpp
cfe/branches/exception-handling-rewrite/lib/Parse/ParseStmt.cpp
cfe/branches/exception-handling-rewrite/lib/Rewrite/HTMLRewrite.cpp
cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteMacros.cpp
cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteObjC.cpp
cfe/branches/exception-handling-rewrite/lib/Sema/Sema.cpp
cfe/branches/exception-handling-rewrite/lib/Sema/SemaCodeComplete.cpp
cfe/branches/exception-handling-rewrite/lib/Sema/SemaDecl.cpp
cfe/branches/exception-handling-rewrite/lib/Sema/SemaDeclCXX.cpp
cfe/branches/exception-handling-rewrite/lib/Serialization/ASTReader.cpp
cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/BugReporter.cpp
cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/CFRefCount.cpp
cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/ExprEngine.cpp
cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp
cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
cfe/branches/exception-handling-rewrite/test/Index/blocks.c
cfe/branches/exception-handling-rewrite/test/Index/index-templates.cpp
cfe/branches/exception-handling-rewrite/test/Index/recursive-cxx-member-calls.cpp
cfe/branches/exception-handling-rewrite/test/Index/recursive-member-access.c
cfe/branches/exception-handling-rewrite/test/SemaCXX/warn-unreachable.cpp (props changed)
cfe/branches/exception-handling-rewrite/tools/c-index-test/c-index-test.c
cfe/branches/exception-handling-rewrite/tools/driver/cc1as_main.cpp
cfe/branches/exception-handling-rewrite/tools/libclang/CIndex.cpp
cfe/branches/exception-handling-rewrite/tools/libclang/CIndexUSRs.cpp
cfe/branches/exception-handling-rewrite/tools/libclang/libclang.darwin.exports
cfe/branches/exception-handling-rewrite/tools/libclang/libclang.exports
cfe/branches/exception-handling-rewrite/www/cxx_status.html
cfe/branches/exception-handling-rewrite/www/get_started.html
Propchange: cfe/branches/exception-handling-rewrite/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jul 25 20:36:54 2011
@@ -1,2 +1,3 @@
/cfe/branches/type-system-rewrite:134693-134817
+/cfe/trunk:135899-136040
/cfe/trunk/test/SemaTemplate:126920
Modified: cfe/branches/exception-handling-rewrite/include/clang-c/Index.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/include/clang-c/Index.h?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/include/clang-c/Index.h (original)
+++ cfe/branches/exception-handling-rewrite/include/clang-c/Index.h Mon Jul 25 20:36:54 2011
@@ -2385,6 +2385,54 @@
* from which it was instantiated. Otherwise, returns a NULL cursor.
*/
CINDEX_LINKAGE CXCursor clang_getSpecializedCursorTemplate(CXCursor C);
+
+/**
+ * \brief Given a cursor that references something else, return the source range
+ * covering that reference.
+ *
+ * \param C A cursor pointing to a member reference, a declaration reference, or
+ * an operator call.
+ * \param NameFlags A bitset with three independent flags:
+ * CXNameRange_WantQualifier, CXNameRange_WantTemplateArgs, and
+ * CXNameRange_WantSinglePiece.
+ * \param PieceIndex For contiguous names or when passing the flag
+ * CXNameRange_WantSinglePiece, only one piece with index 0 is
+ * available. When the CXNameRange_WantSinglePiece flag is not passed for a
+ * non-contiguous names, this index can be used to retreive the individual
+ * pieces of the name. See also CXNameRange_WantSinglePiece.
+ *
+ * \returns The piece of the name pointed to by the given cursor. If there is no
+ * name, or if the PieceIndex is out-of-range, a null-cursor will be returned.
+ */
+CINDEX_LINKAGE CXSourceRange clang_getCursorReferenceNameRange(CXCursor C,
+ unsigned NameFlags,
+ unsigned PieceIndex);
+
+enum CXNameRefFlags {
+ /**
+ * \brief Include the nested-name-specifier, e.g. Foo:: in x.Foo::y, in the
+ * range.
+ */
+ CXNameRange_WantQualifier = 0x1,
+
+ /**
+ * \brief Include the explicit template arguments, e.g. <int> in x.f<int>, in
+ * the range.
+ */
+ CXNameRange_WantTemplateArgs = 0x2,
+
+ /**
+ * \brief If the name is non-contiguous, return the full spanning range.
+ *
+ * Non-contiguous names occur in Objective-C when a selector with two or more
+ * parameters is used, or in C++ when using an operator:
+ * \code
+ * [object doSomething:here withValue:there]; // ObjC
+ * return some_vector[1]; // C++
+ * \endcode
+ */
+ CXNameRange_WantSinglePiece = 0x4
+};
/**
* @}
Modified: cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceLocation.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceLocation.h?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceLocation.h (original)
+++ cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceLocation.h Mon Jul 25 20:36:54 2011
@@ -274,11 +274,11 @@
FileID getFileID() const;
- FullSourceLoc getInstantiationLoc() const;
+ FullSourceLoc getExpansionLoc() const;
FullSourceLoc getSpellingLoc() const;
- unsigned getInstantiationLineNumber(bool *Invalid = 0) const;
- unsigned getInstantiationColumnNumber(bool *Invalid = 0) const;
+ unsigned getExpansionLineNumber(bool *Invalid = 0) const;
+ unsigned getExpansionColumnNumber(bool *Invalid = 0) const;
unsigned getSpellingLineNumber(bool *Invalid = 0) const;
unsigned getSpellingColumnNumber(bool *Invalid = 0) const;
Modified: cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceManager.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceManager.h?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceManager.h (original)
+++ cfe/branches/exception-handling-rewrite/include/clang/Basic/SourceManager.h Mon Jul 25 20:36:54 2011
@@ -723,24 +723,24 @@
return SourceLocation::getFileLoc(FileOffset);
}
- /// getInstantiationLoc - Given a SourceLocation object, return the
- /// instantiation location referenced by the ID.
- SourceLocation getInstantiationLoc(SourceLocation Loc) const {
+ /// getExpansionLoc - Given a SourceLocation object, return the expansion
+ /// location referenced by the ID.
+ SourceLocation getExpansionLoc(SourceLocation Loc) const {
// Handle the non-mapped case inline, defer to out of line code to handle
- // instantiations.
+ // expansions.
if (Loc.isFileID()) return Loc;
- return getInstantiationLocSlowCase(Loc);
+ return getExpansionLocSlowCase(Loc);
}
- /// getImmediateInstantiationRange - Loc is required to be an instantiation
- /// location. Return the start/end of the instantiation information.
+ /// getImmediateExpansionRange - Loc is required to be an expansion location.
+ /// Return the start/end of the expansion information.
std::pair<SourceLocation,SourceLocation>
- getImmediateInstantiationRange(SourceLocation Loc) const;
+ getImmediateExpansionRange(SourceLocation Loc) const;
- /// getInstantiationRange - Given a SourceLocation object, return the
- /// range of tokens covered by the instantiation in the ultimate file.
+ /// getExpansionRange - Given a SourceLocation object, return the range of
+ /// tokens covered by the expansion the ultimate file.
std::pair<SourceLocation,SourceLocation>
- getInstantiationRange(SourceLocation Loc) const;
+ getExpansionRange(SourceLocation Loc) const;
/// getSpellingLoc - Given a SourceLocation object, return the spelling
@@ -767,11 +767,11 @@
return std::make_pair(FID, Loc.getOffset()-getSLocEntry(FID).getOffset());
}
- /// getDecomposedInstantiationLoc - Decompose the specified location into a
+ /// getDecomposedExpansionLoc - Decompose the specified location into a
/// raw FileID + Offset pair. If the location is an instantiation record,
/// walk through it until we find the final location instantiated.
std::pair<FileID, unsigned>
- getDecomposedInstantiationLoc(SourceLocation Loc) const {
+ getDecomposedExpansionLoc(SourceLocation Loc) const {
FileID FID = getFileID(Loc);
const SrcMgr::SLocEntry *E = &getSLocEntry(FID);
@@ -779,7 +779,7 @@
if (Loc.isFileID())
return std::make_pair(FID, Offset);
- return getDecomposedInstantiationLocSlowCase(E);
+ return getDecomposedExpansionLocSlowCase(E);
}
/// getDecomposedSpellingLoc - Decompose the specified location into a raw
@@ -828,8 +828,8 @@
unsigned getColumnNumber(FileID FID, unsigned FilePos,
bool *Invalid = 0) const;
unsigned getSpellingColumnNumber(SourceLocation Loc, bool *Invalid = 0) const;
- unsigned getInstantiationColumnNumber(SourceLocation Loc,
- bool *Invalid = 0) const;
+ unsigned getExpansionColumnNumber(SourceLocation Loc,
+ bool *Invalid = 0) const;
unsigned getPresumedColumnNumber(SourceLocation Loc, bool *Invalid = 0) const;
@@ -839,8 +839,7 @@
/// about to emit a diagnostic.
unsigned getLineNumber(FileID FID, unsigned FilePos, bool *Invalid = 0) const;
unsigned getSpellingLineNumber(SourceLocation Loc, bool *Invalid = 0) const;
- unsigned getInstantiationLineNumber(SourceLocation Loc,
- bool *Invalid = 0) const;
+ unsigned getExpansionLineNumber(SourceLocation Loc, bool *Invalid = 0) const;
unsigned getPresumedLineNumber(SourceLocation Loc, bool *Invalid = 0) const;
/// Return the filename or buffer identifier of the buffer the location is in.
@@ -1130,11 +1129,11 @@
FileID getFileIDLocal(unsigned SLocOffset) const;
FileID getFileIDLoaded(unsigned SLocOffset) const;
- SourceLocation getInstantiationLocSlowCase(SourceLocation Loc) const;
+ SourceLocation getExpansionLocSlowCase(SourceLocation Loc) const;
SourceLocation getSpellingLocSlowCase(SourceLocation Loc) const;
std::pair<FileID, unsigned>
- getDecomposedInstantiationLocSlowCase(const SrcMgr::SLocEntry *E) const;
+ getDecomposedExpansionLocSlowCase(const SrcMgr::SLocEntry *E) const;
std::pair<FileID, unsigned>
getDecomposedSpellingLocSlowCase(const SrcMgr::SLocEntry *E,
unsigned Offset) const;
Modified: cfe/branches/exception-handling-rewrite/include/clang/Basic/TargetInfo.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/include/clang/Basic/TargetInfo.h?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/include/clang/Basic/TargetInfo.h (original)
+++ cfe/branches/exception-handling-rewrite/include/clang/Basic/TargetInfo.h Mon Jul 25 20:36:54 2011
@@ -88,6 +88,7 @@
unsigned HasAlignMac68kSupport : 1;
unsigned RealTypeUsesObjCFPRet : 3;
+ unsigned UsePreferredTypeAlign : 1;
// TargetInfo Constructor. Default initializes all fields.
TargetInfo(const std::string &T);
@@ -272,6 +273,12 @@
return HasAlignMac68kSupport;
}
+ /// usePreferredTypeAlign - Check whether this target uses minimum alignment
+ /// defined by ABI or some other preferred alignment.
+ bool usePreferredTypeAlign() const {
+ return UsePreferredTypeAlign;
+ }
+
/// getTypeName - Return the user string for the specified integer type enum.
/// For example, SignedShort -> "short".
static const char *getTypeName(IntType T);
Modified: cfe/branches/exception-handling-rewrite/include/clang/Frontend/VerifyDiagnosticsClient.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/include/clang/Frontend/VerifyDiagnosticsClient.h?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/include/clang/Frontend/VerifyDiagnosticsClient.h (original)
+++ cfe/branches/exception-handling-rewrite/include/clang/Frontend/VerifyDiagnosticsClient.h Mon Jul 25 20:36:54 2011
@@ -70,6 +70,7 @@
Preprocessor *CurrentPreprocessor;
private:
+ FileID FirstErrorFID; // FileID of first diagnostic
void CheckDiagnostics();
public:
Modified: cfe/branches/exception-handling-rewrite/include/clang/Serialization/ASTReader.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/include/clang/Serialization/ASTReader.h?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/include/clang/Serialization/ASTReader.h (original)
+++ cfe/branches/exception-handling-rewrite/include/clang/Serialization/ASTReader.h Mon Jul 25 20:36:54 2011
@@ -387,7 +387,46 @@
/// directly loaded modules.
SmallVector<Module *, 1> Loaders;
};
-
+
+/// \brief The manager for modules loaded by the ASTReader.
+class ModuleManager {
+ /// \brief The chain of AST files. The first entry is the one named by the
+ /// user, the last one is the one that doesn't depend on anything further.
+ SmallVector<Module*, 2> Chain;
+public:
+ typedef SmallVector<Module*, 2>::iterator ModuleIterator;
+ typedef SmallVector<Module*, 2>::const_iterator ModuleConstIterator;
+ typedef SmallVector<Module*, 2>::reverse_iterator ModuleReverseIterator;
+
+ ModuleIterator begin() { return Chain.begin(); }
+ ModuleIterator end() { return Chain.end(); }
+
+ ModuleConstIterator begin() const { return Chain.begin(); }
+ ModuleConstIterator end() const { return Chain.end(); }
+
+ ModuleReverseIterator rbegin() { return Chain.rbegin(); }
+ ModuleReverseIterator rend() { return Chain.rend(); }
+
+ const std::string &getPrimaryFileName() const { return Chain[0]->FileName; }
+
+ Module &getPrimaryModule() { return *Chain[0]; }
+ Module &getLastModule() { return *Chain.back(); }
+ Module &operator[](unsigned Index) const { return *Chain[Index]; }
+
+ unsigned size() const { return Chain.size(); }
+
+ Module &addModule(ModuleKind Type) {
+ Module *newModule = new Module(Type);
+ Chain.push_back(newModule);
+ return *newModule;
+ }
+
+ ~ModuleManager() {
+ for (unsigned i = 0, e = Chain.size(); i != e; ++i)
+ delete Chain[e - i - 1];
+ }
+};
+
} // end namespace serialization
/// \brief Reads an AST files chain containing the contents of a translation
@@ -425,7 +464,12 @@
typedef serialization::Module Module;
typedef serialization::ModuleKind ModuleKind;
+ typedef serialization::ModuleManager ModuleManager;
+ typedef ModuleManager::ModuleIterator ModuleIterator;
+ typedef ModuleManager::ModuleConstIterator ModuleConstIterator;
+ typedef ModuleManager::ModuleReverseIterator ModuleReverseIterator;
+
private:
/// \brief The receiver of some callbacks invoked by ASTReader.
llvm::OwningPtr<ASTReaderListener> Listener;
@@ -460,10 +504,8 @@
/// \brief The first module in source order.
Module *FirstInSource;
- /// \brief The chain of AST files. The first entry is the one named by the
- /// user, the last one is the one that doesn't depend on anything further.
- /// That is, the entry I was created with -include-pch I+1.
- SmallVector<Module*, 2> Chain;
+ /// \brief The module manager which manages modules and their dependencies
+ ModuleManager ModuleMgr;
/// \brief A map of global bit offsets to the module that stores entities
/// at those bit offsets.
@@ -1040,7 +1082,9 @@
}
/// \brief Retrieve the name of the named (primary) AST file
- const std::string &getFileName() const { return Chain[0]->FileName; }
+ const std::string &getFileName() const {
+ return ModuleMgr.getPrimaryFileName();
+ }
/// \brief Retrieve the name of the original source file name
const std::string &getOriginalSourceFile() { return OriginalFileName; }
@@ -1096,8 +1140,10 @@
/// reader.
unsigned getTotalNumPreprocessedEntities() const {
unsigned Result = 0;
- for (unsigned I = 0, N = Chain.size(); I != N; ++I)
- Result += Chain[I]->NumPreallocatedPreprocessingEntities;
+ for (ModuleConstIterator I = ModuleMgr.begin(),
+ E = ModuleMgr.end(); I != E; ++I) {
+ Result += (*I)->NumPreallocatedPreprocessingEntities;
+ }
return Result;
}
Modified: cfe/branches/exception-handling-rewrite/lib/ARCMigrate/PlistReporter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/ARCMigrate/PlistReporter.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/ARCMigrate/PlistReporter.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/ARCMigrate/PlistReporter.cpp Mon Jul 25 20:36:54 2011
@@ -22,7 +22,7 @@
static void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V,
const SourceManager &SM, SourceLocation L) {
- FileID FID = SM.getFileID(SM.getInstantiationLoc(L));
+ FileID FID = SM.getFileID(SM.getExpansionLoc(L));
FIDMap::iterator I = FIDs.find(FID);
if (I != FIDs.end()) return;
FIDs[FID] = V.size();
@@ -31,7 +31,7 @@
static unsigned GetFID(const FIDMap& FIDs, const SourceManager &SM,
SourceLocation L) {
- FileID FID = SM.getFileID(SM.getInstantiationLoc(L));
+ FileID FID = SM.getFileID(SM.getExpansionLoc(L));
FIDMap::const_iterator I = FIDs.find(FID);
assert(I != FIDs.end());
return I->second;
@@ -47,7 +47,7 @@
SourceLocation L, const FIDMap &FM,
unsigned indent, bool extend = false) {
- FullSourceLoc Loc(SM.getInstantiationLoc(L), const_cast<SourceManager&>(SM));
+ FullSourceLoc Loc(SM.getExpansionLoc(L), const_cast<SourceManager&>(SM));
// Add in the length of the token, so that we cover multi-char tokens.
unsigned offset =
@@ -55,9 +55,9 @@
Indent(o, indent) << "<dict>\n";
Indent(o, indent) << " <key>line</key><integer>"
- << Loc.getInstantiationLineNumber() << "</integer>\n";
+ << Loc.getExpansionLineNumber() << "</integer>\n";
Indent(o, indent) << " <key>col</key><integer>"
- << Loc.getInstantiationColumnNumber() + offset << "</integer>\n";
+ << Loc.getExpansionColumnNumber() + offset << "</integer>\n";
Indent(o, indent) << " <key>file</key><integer>"
<< GetFID(FM, SM, Loc) << "</integer>\n";
Indent(o, indent) << "</dict>\n";
Modified: cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransBlockObjCVariable.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransBlockObjCVariable.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransBlockObjCVariable.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransBlockObjCVariable.cpp Mon Jul 25 20:36:54 2011
@@ -100,7 +100,7 @@
bool useWeak = canApplyWeak(Pass.Ctx, var->getType());
SourceManager &SM = Pass.Ctx.getSourceManager();
Transaction Trans(Pass.TA);
- Pass.TA.replaceText(SM.getInstantiationLoc(attr->getLocation()),
+ Pass.TA.replaceText(SM.getExpansionLoc(attr->getLocation()),
"__block",
useWeak ? "__weak" : "__unsafe_unretained");
}
Modified: cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransformActions.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransformActions.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransformActions.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/ARCMigrate/TransformActions.cpp Mon Jul 25 20:36:54 2011
@@ -68,11 +68,11 @@
SourceLocation beginLoc = range.getBegin(), endLoc = range.getEnd();
assert(beginLoc.isValid() && endLoc.isValid());
if (range.isTokenRange()) {
- Begin = FullSourceLoc(srcMgr.getInstantiationLoc(beginLoc), srcMgr);
+ Begin = FullSourceLoc(srcMgr.getExpansionLoc(beginLoc), srcMgr);
End = FullSourceLoc(getLocForEndOfToken(endLoc, srcMgr, PP), srcMgr);
} else {
- Begin = FullSourceLoc(srcMgr.getInstantiationLoc(beginLoc), srcMgr);
- End = FullSourceLoc(srcMgr.getInstantiationLoc(endLoc), srcMgr);
+ Begin = FullSourceLoc(srcMgr.getExpansionLoc(beginLoc), srcMgr);
+ End = FullSourceLoc(srcMgr.getExpansionLoc(endLoc), srcMgr);
}
assert(Begin.isValid() && End.isValid());
}
@@ -381,7 +381,7 @@
return false;
SourceManager &SM = Ctx.getSourceManager();
- if (SM.isInSystemHeader(SM.getInstantiationLoc(loc)))
+ if (SM.isInSystemHeader(SM.getExpansionLoc(loc)))
return false;
if (loc.isFileID())
@@ -394,7 +394,7 @@
return false;
SourceManager &SM = Ctx.getSourceManager();
- if (SM.isInSystemHeader(SM.getInstantiationLoc(loc)))
+ if (SM.isInSystemHeader(SM.getExpansionLoc(loc)))
return false;
if (loc.isFileID())
@@ -416,7 +416,7 @@
return false;
SourceManager &SM = Ctx.getSourceManager();
- loc = SM.getInstantiationLoc(loc);
+ loc = SM.getExpansionLoc(loc);
// Break down the source location.
std::pair<FileID, unsigned> locInfo = SM.getDecomposedLoc(loc);
@@ -477,7 +477,7 @@
StringRef text,
StringRef replacementText) {
SourceManager &SM = Ctx.getSourceManager();
- loc = SM.getInstantiationLoc(loc);
+ loc = SM.getExpansionLoc(loc);
// canReplaceText already checked if loc points at text.
SourceLocation afterText = loc.getFileLocWithOffset(text.size());
@@ -491,7 +491,7 @@
IndentationRanges.push_back(
std::make_pair(CharRange(CharSourceRange::getTokenRange(range),
SM, PP),
- SM.getInstantiationLoc(parentIndent)));
+ SM.getExpansionLoc(parentIndent)));
}
void TransformActionsImpl::commitClearDiagnostic(ArrayRef<unsigned> IDs,
@@ -501,7 +501,7 @@
void TransformActionsImpl::addInsertion(SourceLocation loc, StringRef text) {
SourceManager &SM = Ctx.getSourceManager();
- loc = SM.getInstantiationLoc(loc);
+ loc = SM.getExpansionLoc(loc);
for (std::list<CharRange>::reverse_iterator
I = Removals.rbegin(), E = Removals.rend(); I != E; ++I) {
if (!SM.isBeforeInTranslationUnit(loc, I->End))
@@ -589,7 +589,7 @@
SourceManager &SM,
Preprocessor &PP) {
if (loc.isMacroID())
- loc = SM.getInstantiationRange(loc).second;
+ loc = SM.getExpansionRange(loc).second;
return PP.getLocForEndOfToken(loc);
}
Modified: cfe/branches/exception-handling-rewrite/lib/ARCMigrate/Transforms.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/ARCMigrate/Transforms.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/ARCMigrate/Transforms.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/ARCMigrate/Transforms.cpp Mon Jul 25 20:36:54 2011
@@ -95,7 +95,7 @@
if (loc.isMacroID()) {
if (!Lexer::isAtEndOfMacroExpansion(loc, SM, Ctx.getLangOptions()))
return SourceLocation();
- loc = SM.getInstantiationRange(loc).second;
+ loc = SM.getExpansionRange(loc).second;
}
loc = Lexer::getLocForEndOfToken(loc, /*Offset=*/0, SM, Ctx.getLangOptions());
Modified: cfe/branches/exception-handling-rewrite/lib/AST/ASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/AST/ASTContext.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/AST/ASTContext.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/AST/ASTContext.cpp Mon Jul 25 20:36:54 2011
@@ -696,7 +696,10 @@
// Walk through any array types while we're at it.
T = getBaseElementType(arrayType);
}
- Align = std::max(Align, getPreferredTypeAlign(T.getTypePtr()));
+ if (Target.usePreferredTypeAlign())
+ Align = std::max(Align, getPreferredTypeAlign(T.getTypePtr()));
+ else
+ Align = std::max(Align, getTypeAlign(T.getTypePtr()));
}
// Fields can be subject to extra alignment constraints, like if
Modified: cfe/branches/exception-handling-rewrite/lib/AST/ExprConstant.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/AST/ExprConstant.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/AST/ExprConstant.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/AST/ExprConstant.cpp Mon Jul 25 20:36:54 2011
@@ -1592,10 +1592,15 @@
// result shall be the alignment of the referenced type."
if (const ReferenceType *Ref = T->getAs<ReferenceType>())
T = Ref->getPointeeType();
-
- // __alignof is defined to return the preferred alignment.
- return Info.Ctx.toCharUnitsFromBits(
- Info.Ctx.getPreferredTypeAlign(T.getTypePtr()));
+
+ // __alignof defaults to returning the preferred alignment, but
+ // can be overridden by the specific target.
+ if (Info.Ctx.Target.usePreferredTypeAlign())
+ return Info.Ctx.toCharUnitsFromBits(
+ Info.Ctx.getPreferredTypeAlign(T.getTypePtr()));
+ else
+ return Info.Ctx.toCharUnitsFromBits(
+ Info.Ctx.getTypeAlign(T.getTypePtr()));
}
CharUnits IntExprEvaluator::GetAlignOfExpr(const Expr *E) {
Modified: cfe/branches/exception-handling-rewrite/lib/Basic/DiagnosticIDs.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Basic/DiagnosticIDs.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Basic/DiagnosticIDs.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Basic/DiagnosticIDs.cpp Mon Jul 25 20:36:54 2011
@@ -540,7 +540,7 @@
Diag.SuppressSystemWarnings &&
Loc.isValid() &&
Diag.getSourceManager().isInSystemHeader(
- Diag.getSourceManager().getInstantiationLoc(Loc)))
+ Diag.getSourceManager().getExpansionLoc(Loc)))
return DiagnosticIDs::Ignored;
return Result;
Modified: cfe/branches/exception-handling-rewrite/lib/Basic/SourceLocation.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Basic/SourceLocation.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Basic/SourceLocation.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Basic/SourceLocation.cpp Mon Jul 25 20:36:54 2011
@@ -54,7 +54,7 @@
return;
}
- SM.getInstantiationLoc(*this).print(OS, SM);
+ SM.getExpansionLoc(*this).print(OS, SM);
OS << " <Spelling=";
SM.getSpellingLoc(*this).print(OS, SM);
@@ -75,9 +75,9 @@
}
-FullSourceLoc FullSourceLoc::getInstantiationLoc() const {
+FullSourceLoc FullSourceLoc::getExpansionLoc() const {
assert(isValid());
- return FullSourceLoc(SrcMgr->getInstantiationLoc(*this), *SrcMgr);
+ return FullSourceLoc(SrcMgr->getExpansionLoc(*this), *SrcMgr);
}
FullSourceLoc FullSourceLoc::getSpellingLoc() const {
@@ -85,14 +85,14 @@
return FullSourceLoc(SrcMgr->getSpellingLoc(*this), *SrcMgr);
}
-unsigned FullSourceLoc::getInstantiationLineNumber(bool *Invalid) const {
+unsigned FullSourceLoc::getExpansionLineNumber(bool *Invalid) const {
assert(isValid());
- return SrcMgr->getInstantiationLineNumber(*this, Invalid);
+ return SrcMgr->getExpansionLineNumber(*this, Invalid);
}
-unsigned FullSourceLoc::getInstantiationColumnNumber(bool *Invalid) const {
+unsigned FullSourceLoc::getExpansionColumnNumber(bool *Invalid) const {
assert(isValid());
- return SrcMgr->getInstantiationColumnNumber(*this, Invalid);
+ return SrcMgr->getExpansionColumnNumber(*this, Invalid);
}
unsigned FullSourceLoc::getSpellingLineNumber(bool *Invalid) const {
Modified: cfe/branches/exception-handling-rewrite/lib/Basic/SourceManager.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Basic/SourceManager.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Basic/SourceManager.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Basic/SourceManager.cpp Mon Jul 25 20:36:54 2011
@@ -289,7 +289,7 @@
/// unspecified.
void SourceManager::AddLineNote(SourceLocation Loc, unsigned LineNo,
int FilenameID) {
- std::pair<FileID, unsigned> LocInfo = getDecomposedInstantiationLoc(Loc);
+ std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);
bool Invalid = false;
const SLocEntry &Entry = getSLocEntry(LocInfo.first, &Invalid);
@@ -319,7 +319,7 @@
return AddLineNote(Loc, LineNo, FilenameID);
}
- std::pair<FileID, unsigned> LocInfo = getDecomposedInstantiationLoc(Loc);
+ std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);
bool Invalid = false;
const SLocEntry &Entry = getSLocEntry(LocInfo.first, &Invalid);
@@ -783,11 +783,11 @@
}
SourceLocation SourceManager::
-getInstantiationLocSlowCase(SourceLocation Loc) const {
+getExpansionLocSlowCase(SourceLocation Loc) const {
do {
// Note: If Loc indicates an offset into a token that came from a macro
// expansion (e.g. the 5th character of the token) we do not want to add
- // this offset when going to the instantiation location. The instatiation
+ // this offset when going to the instantiation location. The expansion
// location is the macro invocation, which the offset has nothing to do
// with. This is unlike when we get the spelling loc, because the offset
// directly correspond to the token whose spelling we're inspecting.
@@ -809,7 +809,7 @@
std::pair<FileID, unsigned>
-SourceManager::getDecomposedInstantiationLocSlowCase(
+SourceManager::getDecomposedExpansionLocSlowCase(
const SrcMgr::SLocEntry *E) const {
// If this is an instantiation record, walk through all the instantiation
// points.
@@ -857,30 +857,30 @@
}
-/// getImmediateInstantiationRange - Loc is required to be an instantiation
+/// getImmediateExpansionRange - Loc is required to be an instantiation
/// location. Return the start/end of the instantiation information.
std::pair<SourceLocation,SourceLocation>
-SourceManager::getImmediateInstantiationRange(SourceLocation Loc) const {
+SourceManager::getImmediateExpansionRange(SourceLocation Loc) const {
assert(Loc.isMacroID() && "Not an instantiation loc!");
const InstantiationInfo &II = getSLocEntry(getFileID(Loc)).getInstantiation();
return II.getInstantiationLocRange();
}
-/// getInstantiationRange - Given a SourceLocation object, return the
-/// range of tokens covered by the instantiation in the ultimate file.
+/// getExpansionRange - Given a SourceLocation object, return the range of
+/// tokens covered by the expansion in the ultimate file.
std::pair<SourceLocation,SourceLocation>
-SourceManager::getInstantiationRange(SourceLocation Loc) const {
+SourceManager::getExpansionRange(SourceLocation Loc) const {
if (Loc.isFileID()) return std::make_pair(Loc, Loc);
std::pair<SourceLocation,SourceLocation> Res =
- getImmediateInstantiationRange(Loc);
+ getImmediateExpansionRange(Loc);
// Fully resolve the start and end locations to their ultimate instantiation
// points.
while (!Res.first.isFileID())
- Res.first = getImmediateInstantiationRange(Res.first).first;
+ Res.first = getImmediateExpansionRange(Res.first).first;
while (!Res.second.isFileID())
- Res.second = getImmediateInstantiationRange(Res.second).second;
+ Res.second = getImmediateExpansionRange(Res.second).second;
return Res;
}
@@ -958,10 +958,10 @@
return getColumnNumber(LocInfo.first, LocInfo.second, Invalid);
}
-unsigned SourceManager::getInstantiationColumnNumber(SourceLocation Loc,
- bool *Invalid) const {
+unsigned SourceManager::getExpansionColumnNumber(SourceLocation Loc,
+ bool *Invalid) const {
if (isInvalid(Loc, Invalid)) return 0;
- std::pair<FileID, unsigned> LocInfo = getDecomposedInstantiationLoc(Loc);
+ std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);
return getColumnNumber(LocInfo.first, LocInfo.second, Invalid);
}
@@ -1153,10 +1153,10 @@
std::pair<FileID, unsigned> LocInfo = getDecomposedSpellingLoc(Loc);
return getLineNumber(LocInfo.first, LocInfo.second);
}
-unsigned SourceManager::getInstantiationLineNumber(SourceLocation Loc,
- bool *Invalid) const {
+unsigned SourceManager::getExpansionLineNumber(SourceLocation Loc,
+ bool *Invalid) const {
if (isInvalid(Loc, Invalid)) return 0;
- std::pair<FileID, unsigned> LocInfo = getDecomposedInstantiationLoc(Loc);
+ std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);
return getLineNumber(LocInfo.first, LocInfo.second);
}
unsigned SourceManager::getPresumedLineNumber(SourceLocation Loc,
@@ -1176,7 +1176,7 @@
SrcMgr::CharacteristicKind
SourceManager::getFileCharacteristic(SourceLocation Loc) const {
assert(!Loc.isInvalid() && "Can't get file characteristic of invalid loc!");
- std::pair<FileID, unsigned> LocInfo = getDecomposedInstantiationLoc(Loc);
+ std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);
bool Invalid = false;
const SLocEntry &SEntry = getSLocEntry(LocInfo.first, &Invalid);
if (Invalid || !SEntry.isFile())
@@ -1223,7 +1223,7 @@
if (Loc.isInvalid()) return PresumedLoc();
// Presumed locations are always for instantiation points.
- std::pair<FileID, unsigned> LocInfo = getDecomposedInstantiationLoc(Loc);
+ std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);
bool Invalid = false;
const SLocEntry &Entry = getSLocEntry(LocInfo.first, &Invalid);
Modified: cfe/branches/exception-handling-rewrite/lib/Basic/TargetInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Basic/TargetInfo.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Basic/TargetInfo.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Basic/TargetInfo.cpp Mon Jul 25 20:36:54 2011
@@ -65,6 +65,9 @@
// Default to no types using fpret.
RealTypeUsesObjCFPRet = 0;
+ // Default to using preferred type alignment.
+ UsePreferredTypeAlign = true;
+
// Default to using the Itanium ABI.
CXXABI = CXXABI_Itanium;
Modified: cfe/branches/exception-handling-rewrite/lib/Basic/Targets.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Basic/Targets.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Basic/Targets.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Basic/Targets.cpp Mon Jul 25 20:36:54 2011
@@ -1978,11 +1978,13 @@
"v64:32:64-v128:32:128-a0:0:32-n32");
}
- // FIXME: Override "preferred align" for double and long long.
+ // Default to using minimum alignment, not preferred.
+ UsePreferredTypeAlign = false;
} else if (Name == "aapcs") {
// FIXME: Enumerated types are variable width in straight AAPCS.
+
} else if (Name == "aapcs-linux") {
- ;
+
} else
return false;
Modified: cfe/branches/exception-handling-rewrite/lib/CodeGen/CGBuiltin.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/CodeGen/CGBuiltin.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/CodeGen/CGBuiltin.cpp Mon Jul 25 20:36:54 2011
@@ -1457,8 +1457,7 @@
Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
Ops[3] = Builder.CreateBitCast(Ops[3], Ty);
Ops.push_back(GetPointeeAlignment(*this, E->getArg(1)));
- Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops.begin() + 1, Ops.end()),
- "vld2_lane");
+ Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), "vld2_lane");
Ty = llvm::PointerType::getUnqual(Ops[1]->getType());
Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
return Builder.CreateStore(Ops[1], Ops[0]);
@@ -1470,8 +1469,7 @@
Ops[3] = Builder.CreateBitCast(Ops[3], Ty);
Ops[4] = Builder.CreateBitCast(Ops[4], Ty);
Ops.push_back(GetPointeeAlignment(*this, E->getArg(1)));
- Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops.begin() + 1, Ops.end()),
- "vld3_lane");
+ Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), "vld3_lane");
Ty = llvm::PointerType::getUnqual(Ops[1]->getType());
Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
return Builder.CreateStore(Ops[1], Ops[0]);
@@ -1484,8 +1482,7 @@
Ops[4] = Builder.CreateBitCast(Ops[4], Ty);
Ops[5] = Builder.CreateBitCast(Ops[5], Ty);
Ops.push_back(GetPointeeAlignment(*this, E->getArg(1)));
- Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops.begin() + 1, Ops.end()),
- "vld3_lane");
+ Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), "vld3_lane");
Ty = llvm::PointerType::getUnqual(Ops[1]->getType());
Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
return Builder.CreateStore(Ops[1], Ops[0]);
Modified: cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDebugInfo.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDebugInfo.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDebugInfo.cpp Mon Jul 25 20:36:54 2011
@@ -51,7 +51,7 @@
void CGDebugInfo::setLocation(SourceLocation Loc) {
if (Loc.isValid())
- CurLoc = CGM.getContext().getSourceManager().getInstantiationLoc(Loc);
+ CurLoc = CGM.getContext().getSourceManager().getExpansionLoc(Loc);
}
/// getContextDescriptor - Get context info for the decl.
@@ -1740,7 +1740,7 @@
// Don't bother if things are the same as last time.
SourceManager &SM = CGM.getContext().getSourceManager();
if (CurLoc == PrevLoc ||
- SM.getInstantiationLoc(CurLoc) == SM.getInstantiationLoc(PrevLoc))
+ SM.getExpansionLoc(CurLoc) == SM.getExpansionLoc(PrevLoc))
// New Builder may not be in sync with CGDebugInfo.
if (!Builder.getCurrentDebugLocation().isUnknown())
return;
Modified: cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDecl.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/CodeGen/CGDecl.cpp Mon Jul 25 20:36:54 2011
@@ -274,8 +274,7 @@
if (const AnnotateAttr *AA = D.getAttr<AnnotateAttr>()) {
SourceManager &SM = CGM.getContext().getSourceManager();
llvm::Constant *Ann =
- CGM.EmitAnnotateAttr(GV, AA,
- SM.getInstantiationLineNumber(D.getLocation()));
+ CGM.EmitAnnotateAttr(GV, AA, SM.getExpansionLineNumber(D.getLocation()));
CGM.AddAnnotation(Ann);
}
Modified: cfe/branches/exception-handling-rewrite/lib/CodeGen/CodeGenModule.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/CodeGen/CodeGenModule.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/CodeGen/CodeGenModule.cpp Mon Jul 25 20:36:54 2011
@@ -1311,8 +1311,8 @@
if (const AnnotateAttr *AA = D->getAttr<AnnotateAttr>()) {
SourceManager &SM = Context.getSourceManager();
- AddAnnotation(EmitAnnotateAttr(GV, AA,
- SM.getInstantiationLineNumber(D->getLocation())));
+ AddAnnotation(EmitAnnotateAttr(
+ GV, AA, SM.getExpansionLineNumber(D->getLocation())));
}
GV->setInitializer(Init);
Modified: cfe/branches/exception-handling-rewrite/lib/Frontend/DependencyFile.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Frontend/DependencyFile.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Frontend/DependencyFile.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Frontend/DependencyFile.cpp Mon Jul 25 20:36:54 2011
@@ -123,7 +123,7 @@
SourceManager &SM = PP->getSourceManager();
const FileEntry *FE =
- SM.getFileEntryForID(SM.getFileID(SM.getInstantiationLoc(Loc)));
+ SM.getFileEntryForID(SM.getFileID(SM.getExpansionLoc(Loc)));
if (FE == 0) return;
StringRef Filename = FE->getName();
Modified: cfe/branches/exception-handling-rewrite/lib/Frontend/PrintPreprocessedOutput.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Frontend/PrintPreprocessedOutput.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Frontend/PrintPreprocessedOutput.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Frontend/PrintPreprocessedOutput.cpp Mon Jul 25 20:36:54 2011
@@ -419,7 +419,7 @@
// Print out space characters so that the first token on a line is
// indented for easy reading.
- unsigned ColNo = SM.getInstantiationColumnNumber(Tok.getLocation());
+ unsigned ColNo = SM.getExpansionColumnNumber(Tok.getLocation());
// This hack prevents stuff like:
// #define HASH #
Modified: cfe/branches/exception-handling-rewrite/lib/Frontend/TextDiagnosticPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Frontend/TextDiagnosticPrinter.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Frontend/TextDiagnosticPrinter.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Frontend/TextDiagnosticPrinter.cpp Mon Jul 25 20:36:54 2011
@@ -85,8 +85,8 @@
"Expect a correspondence between source and caret line!");
if (!R.isValid()) return;
- SourceLocation Begin = SM.getInstantiationLoc(R.getBegin());
- SourceLocation End = SM.getInstantiationLoc(R.getEnd());
+ SourceLocation Begin = SM.getExpansionLoc(R.getBegin());
+ SourceLocation End = SM.getExpansionLoc(R.getEnd());
// If the End location and the start location are the same and are a macro
// location, then the range was something that came from a macro expansion
@@ -94,27 +94,27 @@
// highlight the range. If this is a function-like macro, we'd also like to
// highlight the arguments.
if (Begin == End && R.getEnd().isMacroID())
- End = SM.getInstantiationRange(R.getEnd()).second;
+ End = SM.getExpansionRange(R.getEnd()).second;
- unsigned StartLineNo = SM.getInstantiationLineNumber(Begin);
+ unsigned StartLineNo = SM.getExpansionLineNumber(Begin);
if (StartLineNo > LineNo || SM.getFileID(Begin) != FID)
return; // No intersection.
- unsigned EndLineNo = SM.getInstantiationLineNumber(End);
+ unsigned EndLineNo = SM.getExpansionLineNumber(End);
if (EndLineNo < LineNo || SM.getFileID(End) != FID)
return; // No intersection.
// Compute the column number of the start.
unsigned StartColNo = 0;
if (StartLineNo == LineNo) {
- StartColNo = SM.getInstantiationColumnNumber(Begin);
+ StartColNo = SM.getExpansionColumnNumber(Begin);
if (StartColNo) --StartColNo; // Zero base the col #.
}
// Compute the column number of the end.
unsigned EndColNo = CaretLine.size();
if (EndLineNo == LineNo) {
- EndColNo = SM.getInstantiationColumnNumber(End);
+ EndColNo = SM.getExpansionColumnNumber(End);
if (EndColNo) {
--EndColNo; // Zero base the col #.
@@ -322,7 +322,7 @@
// Otherwise, the caller of the macro is located where this macro is
// expanded (while the spelling is part of the macro definition).
- return SM.getImmediateInstantiationRange(Loc).first;
+ return SM.getImmediateExpansionRange(Loc).first;
}
/// Gets the location of the immediate macro callee, one level down the stack
@@ -335,7 +335,7 @@
// expansion location points to the unexpanded paramater reference within
// the macro definition (or callee).
if (SM.isMacroArgInstantiation(Loc))
- return SM.getImmediateInstantiationRange(Loc).first;
+ return SM.getImmediateExpansionRange(Loc).first;
// Otherwise, the callee of the macro is located where this location was
// spelled inside the macro definition.
@@ -519,7 +519,7 @@
// We have an insertion hint. Determine whether the inserted
// code is on the same line as the caret.
std::pair<FileID, unsigned> HintLocInfo
- = SM.getDecomposedInstantiationLoc(Hint->RemoveRange.getBegin());
+ = SM.getDecomposedExpansionLoc(Hint->RemoveRange.getBegin());
if (SM.getLineNumber(HintLocInfo.first, HintLocInfo.second) ==
SM.getLineNumber(FID, FileOffset)) {
// Insert the new code into the line just below the code
@@ -914,7 +914,7 @@
if (DiagOpts->ShowSourceRanges && Info.getNumRanges()) {
FileID CaretFileID =
- SM.getFileID(SM.getInstantiationLoc(Info.getLocation()));
+ SM.getFileID(SM.getExpansionLoc(Info.getLocation()));
bool PrintedRange = false;
for (unsigned i = 0, e = Info.getNumRanges(); i != e; ++i) {
@@ -923,8 +923,8 @@
SourceLocation B = Info.getRange(i).getBegin();
SourceLocation E = Info.getRange(i).getEnd();
- B = SM.getInstantiationLoc(B);
- E = SM.getInstantiationLoc(E);
+ B = SM.getExpansionLoc(B);
+ E = SM.getExpansionLoc(E);
// If the End location and the start location are the same and are a
// macro location, then the range was something that came from a
@@ -932,7 +932,7 @@
// best we can do is to highlight the range. If this is a
// function-like macro, we'd also like to highlight the arguments.
if (B == E && Info.getRange(i).getEnd().isMacroID())
- E = SM.getInstantiationRange(Info.getRange(i).getEnd()).second;
+ E = SM.getExpansionRange(Info.getRange(i).getEnd()).second;
std::pair<FileID, unsigned> BInfo = SM.getDecomposedLoc(B);
std::pair<FileID, unsigned> EInfo = SM.getDecomposedLoc(E);
Modified: cfe/branches/exception-handling-rewrite/lib/Frontend/VerifyDiagnosticsClient.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Frontend/VerifyDiagnosticsClient.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Frontend/VerifyDiagnosticsClient.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Frontend/VerifyDiagnosticsClient.cpp Mon Jul 25 20:36:54 2011
@@ -52,6 +52,10 @@
void VerifyDiagnosticsClient::HandleDiagnostic(Diagnostic::Level DiagLevel,
const DiagnosticInfo &Info) {
+ if (FirstErrorFID.isInvalid() && Info.hasSourceManager()) {
+ const SourceManager &SM = Info.getSourceManager();
+ FirstErrorFID = SM.getFileID(Info.getLocation());
+ }
// Send the diagnostic to the buffer, we will check it once we reach the end
// of the source file (or are destructed).
Buffer->HandleDiagnostic(DiagLevel, Info);
@@ -323,14 +327,12 @@
/// FindExpectedDiags - Lex the main source file to find all of the
// expected errors and warnings.
-static void FindExpectedDiags(Preprocessor &PP, ExpectedData &ED) {
- // Create a raw lexer to pull all the comments out of the main file. We don't
- // want to look in #include'd headers for expected-error strings.
- SourceManager &SM = PP.getSourceManager();
- FileID FID = SM.getMainFileID();
- if (SM.getMainFileID().isInvalid())
+static void FindExpectedDiags(Preprocessor &PP, ExpectedData &ED, FileID FID) {
+ // Create a raw lexer to pull all the comments out of FID.
+ if (FID.isInvalid())
return;
+ SourceManager& SM = PP.getSourceManager();
// Create a lexer to lex all the tokens of the main file in raw mode.
const llvm::MemoryBuffer *FromFile = SM.getBuffer(FID);
Lexer RawLex(FID, FromFile, SM, PP.getLangOptions());
@@ -481,11 +483,21 @@
// If we have a preprocessor, scan the source for expected diagnostic
// markers. If not then any diagnostics are unexpected.
if (CurrentPreprocessor) {
- FindExpectedDiags(*CurrentPreprocessor, ED);
+ SourceManager &SM = CurrentPreprocessor->getSourceManager();
+ // Extract expected-error strings from main file.
+ FindExpectedDiags(*CurrentPreprocessor, ED, SM.getMainFileID());
+ // Only check for expectations in other diagnostic locations
+ // if they are not the main file (via ID or FileEntry) - the main
+ // file has already been looked at, and its expectations must not
+ // be added twice.
+ if (!FirstErrorFID.isInvalid() && FirstErrorFID != SM.getMainFileID()
+ && (!SM.getFileEntryForID(FirstErrorFID)
+ || (SM.getFileEntryForID(FirstErrorFID) !=
+ SM.getFileEntryForID(SM.getMainFileID()))))
+ FindExpectedDiags(*CurrentPreprocessor, ED, FirstErrorFID);
// Check that the expected diagnostics occurred.
- NumErrors += CheckResults(Diags, CurrentPreprocessor->getSourceManager(),
- *Buffer, ED);
+ NumErrors += CheckResults(Diags, SM, *Buffer, ED);
} else {
NumErrors += (PrintProblem(Diags, 0,
Buffer->err_begin(), Buffer->err_end(),
Modified: cfe/branches/exception-handling-rewrite/lib/Headers/tgmath.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Headers/tgmath.h?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Headers/tgmath.h (original)
+++ cfe/branches/exception-handling-rewrite/lib/Headers/tgmath.h Mon Jul 25 20:36:54 2011
@@ -1049,19 +1049,18 @@
static float
_TG_ATTRS
- __tg_nexttoward(float __x, float __y) {return nexttowardf(__x, __y);}
+ __tg_nexttoward(float __x, long double __y) {return nexttowardf(__x, __y);}
static double
_TG_ATTRS
- __tg_nexttoward(double __x, double __y) {return nexttoward(__x, __y);}
+ __tg_nexttoward(double __x, long double __y) {return nexttoward(__x, __y);}
static long double
_TG_ATTRS
__tg_nexttoward(long double __x, long double __y) {return nexttowardl(__x, __y);}
#undef nexttoward
-#define nexttoward(__x, __y) __tg_nexttoward(__tg_promote2((__x), (__y))(__x), \
- __tg_promote2((__x), (__y))(__y))
+#define nexttoward(__x, __y) __tg_nexttoward(__tg_promote1((__x))(__x), (__y))
// remainder
Modified: cfe/branches/exception-handling-rewrite/lib/Lex/Lexer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Lex/Lexer.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Lex/Lexer.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Lex/Lexer.cpp Mon Jul 25 20:36:54 2011
@@ -394,7 +394,7 @@
// If this comes from a macro expansion, we really do want the macro name, not
// the token this macro expanded to.
- Loc = SM.getInstantiationLoc(Loc);
+ Loc = SM.getExpansionLoc(Loc);
std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
bool Invalid = false;
StringRef Buffer = SM.getBufferData(LocInfo.first, &Invalid);
@@ -687,7 +687,7 @@
return SourceLocation(); // Points inside the macro expansion.
// Continue and find the location just after the macro expansion.
- Loc = SM.getInstantiationRange(Loc).second;
+ Loc = SM.getExpansionRange(Loc).second;
}
unsigned Len = Lexer::MeasureTokenLength(Loc, SM, Features);
@@ -912,7 +912,7 @@
// Figure out the expansion loc range, which is the range covered by the
// original _Pragma(...) sequence.
std::pair<SourceLocation,SourceLocation> II =
- SM.getImmediateInstantiationRange(FileLoc);
+ SM.getImmediateExpansionRange(FileLoc);
return SM.createInstantiationLoc(SpellingLoc, II.first, II.second, TokLen);
}
Modified: cfe/branches/exception-handling-rewrite/lib/Lex/MacroInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Lex/MacroInfo.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Lex/MacroInfo.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Lex/MacroInfo.cpp Mon Jul 25 20:36:54 2011
@@ -68,9 +68,9 @@
assert((macroEnd.isFileID() || lastToken.is(tok::comment)) &&
"Macro defined in macro?");
std::pair<FileID, unsigned>
- startInfo = SM.getDecomposedInstantiationLoc(macroStart);
+ startInfo = SM.getDecomposedExpansionLoc(macroStart);
std::pair<FileID, unsigned>
- endInfo = SM.getDecomposedInstantiationLoc(macroEnd);
+ endInfo = SM.getDecomposedExpansionLoc(macroEnd);
assert(startInfo.first == endInfo.first &&
"Macro definition spanning multiple FileIDs ?");
assert(startInfo.second <= endInfo.second);
Modified: cfe/branches/exception-handling-rewrite/lib/Lex/PPDirectives.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Lex/PPDirectives.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Lex/PPDirectives.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Lex/PPDirectives.cpp Mon Jul 25 20:36:54 2011
@@ -825,7 +825,7 @@
// If we are leaving the current presumed file, check to make sure the
// presumed include stack isn't empty!
FileID CurFileID =
- SM.getDecomposedInstantiationLoc(FlagTok.getLocation()).first;
+ SM.getDecomposedExpansionLoc(FlagTok.getLocation()).first;
PresumedLoc PLoc = SM.getPresumedLoc(FlagTok.getLocation());
if (PLoc.isInvalid())
return true;
@@ -834,7 +834,7 @@
// different physical file, then we aren't in a "1" line marker flag region.
SourceLocation IncLoc = PLoc.getIncludeLoc();
if (IncLoc.isInvalid() ||
- SM.getDecomposedInstantiationLoc(IncLoc).first != CurFileID) {
+ SM.getDecomposedExpansionLoc(IncLoc).first != CurFileID) {
PP.Diag(FlagTok, diag::err_pp_linemarker_invalid_pop);
PP.DiscardUntilEndOfDirective();
return true;
Modified: cfe/branches/exception-handling-rewrite/lib/Lex/PPMacroExpansion.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Lex/PPMacroExpansion.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Lex/PPMacroExpansion.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Lex/PPMacroExpansion.cpp Mon Jul 25 20:36:54 2011
@@ -838,7 +838,7 @@
// can matter for a function-like macro that expands to contain __LINE__.
// Skip down through expansion points until we find a file loc for the
// end of the expansion history.
- Loc = SourceMgr.getInstantiationRange(Loc).second;
+ Loc = SourceMgr.getExpansionRange(Loc).second;
PresumedLoc PLoc = SourceMgr.getPresumedLoc(Loc);
// __LINE__ expands to a simple numeric value.
Modified: cfe/branches/exception-handling-rewrite/lib/Lex/TokenLexer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Lex/TokenLexer.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Lex/TokenLexer.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Lex/TokenLexer.cpp Mon Jul 25 20:36:54 2011
@@ -55,7 +55,7 @@
// definition. Tokens that get lexed directly from the definition will
// have their locations pointing inside this chunk. This is to avoid
// creating separate source location entries for each token.
- SourceLocation macroStart = SM.getInstantiationLoc(Tokens[0].getLocation());
+ SourceLocation macroStart = SM.getExpansionLoc(Tokens[0].getLocation());
MacroDefStartInfo = SM.getDecomposedLoc(macroStart);
MacroExpansionStart = SM.createInstantiationLoc(macroStart,
ExpandLocStart,
Modified: cfe/branches/exception-handling-rewrite/lib/Parse/ParseExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Parse/ParseExpr.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Parse/ParseExpr.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Parse/ParseExpr.cpp Mon Jul 25 20:36:54 2011
@@ -311,7 +311,7 @@
const char *FIText = ": ";
const SourceManager &SM = PP.getSourceManager();
if (FILoc.isFileID() || PP.isAtStartOfMacroExpansion(FILoc)) {
- FILoc = SM.getInstantiationLoc(FILoc);
+ FILoc = SM.getExpansionLoc(FILoc);
bool IsInvalid = false;
const char *SourcePtr =
SM.getCharacterData(FILoc.getFileLocWithOffset(-1), &IsInvalid);
Modified: cfe/branches/exception-handling-rewrite/lib/Parse/ParseStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Parse/ParseStmt.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Parse/ParseStmt.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Parse/ParseStmt.cpp Mon Jul 25 20:36:54 2011
@@ -1567,12 +1567,12 @@
// that the rest of the line is an assembly-language statement.
SourceManager &SrcMgr = PP.getSourceManager();
SourceLocation TokLoc = Tok.getLocation();
- unsigned LineNo = SrcMgr.getInstantiationLineNumber(TokLoc);
+ unsigned LineNo = SrcMgr.getExpansionLineNumber(TokLoc);
do {
EndLoc = TokLoc;
ConsumeAnyToken();
TokLoc = Tok.getLocation();
- } while ((SrcMgr.getInstantiationLineNumber(TokLoc) == LineNo) &&
+ } while ((SrcMgr.getExpansionLineNumber(TokLoc) == LineNo) &&
Tok.isNot(tok::r_brace) && Tok.isNot(tok::semi) &&
Tok.isNot(tok::eof));
}
Modified: cfe/branches/exception-handling-rewrite/lib/Rewrite/HTMLRewrite.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Rewrite/HTMLRewrite.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Rewrite/HTMLRewrite.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Rewrite/HTMLRewrite.cpp Mon Jul 25 20:36:54 2011
@@ -33,8 +33,8 @@
void html::HighlightRange(Rewriter &R, SourceLocation B, SourceLocation E,
const char *StartTag, const char *EndTag) {
SourceManager &SM = R.getSourceMgr();
- B = SM.getInstantiationLoc(B);
- E = SM.getInstantiationLoc(E);
+ B = SM.getExpansionLoc(B);
+ E = SM.getExpansionLoc(E);
FileID FID = SM.getFileID(B);
assert(SM.getFileID(E) == FID && "B/E not in the same file!");
@@ -519,7 +519,7 @@
// expansion by inserting a start tag before the macro expansion and
// end tag after it.
std::pair<SourceLocation, SourceLocation> LLoc =
- SM.getInstantiationRange(Tok.getLocation());
+ SM.getExpansionRange(Tok.getLocation());
// Ignore tokens whose instantiation location was not the main file.
if (SM.getFileID(LLoc.first) != FID) {
@@ -542,7 +542,7 @@
// instantiation. It would be really nice to pop up a window with all the
// spelling of the tokens or something.
while (!Tok.is(tok::eof) &&
- SM.getInstantiationLoc(Tok.getLocation()) == LLoc.first) {
+ SM.getExpansionLoc(Tok.getLocation()) == LLoc.first) {
// Insert a newline if the macro expansion is getting large.
if (LineLen > 60) {
Expansion += "<br>";
Modified: cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteMacros.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteMacros.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteMacros.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteMacros.cpp Mon Jul 25 20:36:54 2011
@@ -112,7 +112,7 @@
// that aren't in the preprocessed view, we have macros that expand to no
// tokens, or macro arguments etc.
while (RawTok.isNot(tok::eof) || PPTok.isNot(tok::eof)) {
- SourceLocation PPLoc = SM.getInstantiationLoc(PPTok.getLocation());
+ SourceLocation PPLoc = SM.getExpansionLoc(PPTok.getLocation());
// If PPTok is from a different source file, ignore it.
if (!SM.isFromMainFile(PPLoc)) {
@@ -197,7 +197,7 @@
while (PPOffs < RawOffs) {
Expansion += ' ' + PP.getSpelling(PPTok);
PP.Lex(PPTok);
- PPLoc = SM.getInstantiationLoc(PPTok.getLocation());
+ PPLoc = SM.getExpansionLoc(PPTok.getLocation());
PPOffs = SM.getFileOffset(PPLoc);
}
Expansion += ' ';
Modified: cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteObjC.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteObjC.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Rewrite/RewriteObjC.cpp Mon Jul 25 20:36:54 2011
@@ -690,7 +690,7 @@
// #included file. If the former, rewrite it now. If the later, check to see
// if we rewrote the #include/#import.
SourceLocation Loc = D->getLocation();
- Loc = SM->getInstantiationLoc(Loc);
+ Loc = SM->getExpansionLoc(Loc);
// If this is for a builtin, ignore it.
if (Loc.isInvalid()) return;
@@ -933,8 +933,8 @@
SourceLocation LocStart = Method->getLocStart();
SourceLocation LocEnd = Method->getLocEnd();
- if (SM->getInstantiationLineNumber(LocEnd) >
- SM->getInstantiationLineNumber(LocStart)) {
+ if (SM->getExpansionLineNumber(LocEnd) >
+ SM->getExpansionLineNumber(LocStart)) {
InsertText(LocStart, "#if 0\n");
ReplaceText(LocEnd, 1, ";\n#endif\n");
} else {
@@ -2342,13 +2342,13 @@
startLoc = ECE->getLParenLoc();
else
startLoc = E->getLocStart();
- startLoc = SM->getInstantiationLoc(startLoc);
+ startLoc = SM->getExpansionLoc(startLoc);
const char *endBuf = SM->getCharacterData(startLoc);
ReplaceText(DeclLoc, endBuf-startBuf-1, TypeAsString);
}
else {
SourceLocation X = ND->getLocEnd();
- X = SM->getInstantiationLoc(X);
+ X = SM->getExpansionLoc(X);
const char *endBuf = SM->getCharacterData(X);
ReplaceText(DeclLoc, endBuf-startBuf-1, TypeAsString);
}
@@ -5108,7 +5108,7 @@
DeclLoc = ND->getLocation();
const char *startBuf = SM->getCharacterData(DeclLoc);
SourceLocation X = ND->getLocEnd();
- X = SM->getInstantiationLoc(X);
+ X = SM->getExpansionLoc(X);
const char *endBuf = SM->getCharacterData(X);
std::string Name(ND->getNameAsString());
std::string ByrefType;
@@ -5203,7 +5203,7 @@
startLoc = ECE->getLParenLoc();
else
startLoc = E->getLocStart();
- startLoc = SM->getInstantiationLoc(startLoc);
+ startLoc = SM->getExpansionLoc(startLoc);
endBuf = SM->getCharacterData(startLoc);
ByrefType += " " + Name;
ByrefType += " = {(void*)";
Modified: cfe/branches/exception-handling-rewrite/lib/Sema/Sema.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Sema/Sema.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Sema/Sema.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Sema/Sema.cpp Mon Jul 25 20:36:54 2011
@@ -687,7 +687,7 @@
// There's no good way right now to look at the intermediate
// instantiations, so just jump to the instantiation location.
- loc = getSourceManager().getInstantiationLoc(loc);
+ loc = getSourceManager().getExpansionLoc(loc);
// If that's written with the name, stop here.
SmallVector<char, 16> buffer;
Modified: cfe/branches/exception-handling-rewrite/lib/Sema/SemaCodeComplete.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Sema/SemaCodeComplete.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Sema/SemaCodeComplete.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Sema/SemaCodeComplete.cpp Mon Jul 25 20:36:54 2011
@@ -3706,7 +3706,7 @@
LookupVisibleDecls(Ctx, LookupOrdinaryName, Consumer);
HandleCodeCompleteResults(this, CodeCompleter,
- CodeCompletionContext::CCC_Name,
+ Results.getCompletionContext(),
Results.data(),Results.size());
}
Modified: cfe/branches/exception-handling-rewrite/lib/Sema/SemaDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Sema/SemaDecl.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Sema/SemaDecl.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Sema/SemaDecl.cpp Mon Jul 25 20:36:54 2011
@@ -3937,7 +3937,8 @@
QualType T = NewVD->getType();
if (T->isObjCObjectType()) {
- Diag(NewVD->getLocation(), diag::err_statically_allocated_object);
+ Diag(NewVD->getLocation(), diag::err_statically_allocated_object)
+ << FixItHint::CreateInsertion(NewVD->getLocation(), "*");
return NewVD->setInvalidDecl();
}
Modified: cfe/branches/exception-handling-rewrite/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Sema/SemaDeclCXX.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Sema/SemaDeclCXX.cpp Mon Jul 25 20:36:54 2011
@@ -4947,7 +4947,7 @@
IdentLoc, Named, CommonAncestor);
if (IsUsingDirectiveInToplevelContext(CurContext) &&
- !SourceMgr.isFromMainFile(SourceMgr.getInstantiationLoc(IdentLoc))) {
+ !SourceMgr.isFromMainFile(SourceMgr.getExpansionLoc(IdentLoc))) {
Diag(IdentLoc, diag::warn_using_directive_in_header);
}
Modified: cfe/branches/exception-handling-rewrite/lib/Serialization/ASTReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/Serialization/ASTReader.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/Serialization/ASTReader.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/Serialization/ASTReader.cpp Mon Jul 25 20:36:54 2011
@@ -1740,16 +1740,16 @@
}
void ASTReader::ReadDefinedMacros() {
- for (unsigned I = 0, N = Chain.size(); I != N; ++I) {
- Module &F = *Chain[N - I - 1];
- llvm::BitstreamCursor &MacroCursor = F.MacroCursor;
+ for (ModuleReverseIterator I = ModuleMgr.rbegin(),
+ E = ModuleMgr.rend(); I != E; ++I) {
+ llvm::BitstreamCursor &MacroCursor = (*I)->MacroCursor;
// If there was no preprocessor block, skip this file.
if (!MacroCursor.getBitStreamReader())
continue;
llvm::BitstreamCursor Cursor = MacroCursor;
- Cursor.JumpToBit(F.MacroStartOffset);
+ Cursor.JumpToBit((*I)->MacroStartOffset);
RecordData Record;
while (true) {
@@ -2465,8 +2465,9 @@
}
ASTReader::ASTReadResult ASTReader::validateFileEntries() {
- for (unsigned CI = 0, CN = Chain.size(); CI != CN; ++CI) {
- Module *F = Chain[CI];
+ for (ModuleIterator I = ModuleMgr.begin(),
+ E = ModuleMgr.end(); I != E; ++I) {
+ Module *F = *I;
llvm::BitstreamCursor &SLocEntryCursor = F->SLocEntryCursor;
for (unsigned i = 0, e = F->LocalNumSLocFileEntries; i != e; ++i) {
@@ -2582,9 +2583,10 @@
Id != IdEnd; ++Id)
Identifiers.push_back(Id->second);
// We need to search the tables in all files.
- for (unsigned J = 0, M = Chain.size(); J != M; ++J) {
+ for (ModuleIterator J = ModuleMgr.begin(),
+ M = ModuleMgr.end(); J != M; ++J) {
ASTIdentifierLookupTable *IdTable
- = (ASTIdentifierLookupTable *)Chain[J]->IdentifierLookupTable;
+ = (ASTIdentifierLookupTable *)(*J)->IdentifierLookupTable;
// Not all AST files necessarily have identifier tables, only the useful
// ones.
if (!IdTable)
@@ -2592,7 +2594,7 @@
for (unsigned I = 0, N = Identifiers.size(); I != N; ++I) {
IdentifierInfo *II = Identifiers[I];
// Look in the on-disk hash tables for an entry for this identifier
- ASTIdentifierLookupTrait Info(*this, *Chain[J], II);
+ ASTIdentifierLookupTrait Info(*this, *(*J), II);
std::pair<const char*,unsigned> Key(II->getNameStart(),II->getLength());
ASTIdentifierLookupTable::iterator Pos = IdTable->find(Key, &Info);
if (Pos == IdTable->end())
@@ -2622,7 +2624,7 @@
OriginalFileID = SourceMgr.getDecomposedLoc(Loc).first;
}
else {
- OriginalFileID = FileID::get(Chain[0]->SLocEntryBaseID
+ OriginalFileID = FileID::get(ModuleMgr.getPrimaryModule().SLocEntryBaseID
+ OriginalFileID.getOpaqueValue() - 1);
}
@@ -2635,9 +2637,9 @@
ASTReader::ASTReadResult ASTReader::ReadASTCore(StringRef FileName,
ModuleKind Type) {
- Module *Prev = Chain.empty() ? 0 : Chain.back();
- Chain.push_back(new Module(Type));
- Module &F = *Chain.back();
+ Module *Prev = !ModuleMgr.size() ? 0 : &ModuleMgr.getLastModule();
+ ModuleMgr.addModule(Type);
+ Module &F = ModuleMgr.getLastModule();
if (Prev)
Prev->NextInSource = &F;
else
@@ -3060,12 +3062,12 @@
}
void ASTReader::ReadPreprocessedEntities() {
- for (unsigned I = 0, N = Chain.size(); I != N; ++I) {
- Module &F = *Chain[I];
+ for (ModuleIterator I = ModuleMgr.begin(), E = ModuleMgr.end(); I != E; ++I) {
+ Module &F = *(*I);
if (!F.PreprocessorDetailCursor.getBitStreamReader())
continue;
- SavedStreamPosition SavedPosition(F.PreprocessorDetailCursor);
+ SavedStreamPosition SavedPosition(F.PreprocessorDetailCursor);
F.PreprocessorDetailCursor.JumpToBit(F.PreprocessorDetailStartOffset);
while (LoadPreprocessedEntity(F)) { }
}
@@ -3083,8 +3085,8 @@
HeaderFileInfo ASTReader::GetHeaderFileInfo(const FileEntry *FE) {
HeaderFileInfoTrait Trait(FE->getName());
- for (unsigned I = 0, N = Chain.size(); I != N; ++I) {
- Module &F = *Chain[I];
+ for (ModuleIterator I = ModuleMgr.begin(), E = ModuleMgr.end(); I != E; ++I) {
+ Module &F = *(*I);
HeaderFileInfoLookupTable *Table
= static_cast<HeaderFileInfoLookupTable *>(F.HeaderFileInfoTable);
if (!Table)
@@ -3107,8 +3109,8 @@
}
void ASTReader::ReadPragmaDiagnosticMappings(Diagnostic &Diag) {
- for (unsigned I = 0, N = Chain.size(); I != N; ++I) {
- Module &F = *Chain[I];
+ for (ModuleIterator I = ModuleMgr.begin(), E = ModuleMgr.end(); I != E; ++I) {
+ Module &F = *(*I);
unsigned Idx = 0;
while (Idx < F.PragmaDiagMappings.size()) {
SourceLocation Loc = ReadSourceLocation(F, F.PragmaDiagMappings[Idx++]);
@@ -4304,8 +4306,9 @@
/// Return the amount of memory used by memory buffers, breaking down
/// by heap-backed versus mmap'ed memory.
void ASTReader::getMemoryBufferSizes(MemoryBufferSizes &sizes) const {
- for (unsigned i = 0, e = Chain.size(); i != e; ++i)
- if (llvm::MemoryBuffer *buf = Chain[i]->Buffer.get()) {
+ for (ModuleConstIterator I = ModuleMgr.begin(),
+ E = ModuleMgr.end(); I != E; ++I) {
+ if (llvm::MemoryBuffer *buf = (*I)->Buffer.get()) {
size_t bytes = buf->getBufferSize();
switch (buf->getBufferKind()) {
case llvm::MemoryBuffer::MemoryBuffer_Malloc:
@@ -4316,6 +4319,7 @@
break;
}
}
+ }
}
void ASTReader::InitializeSema(Sema &S) {
@@ -4402,7 +4406,7 @@
// The special data sets below always come from the most recent PCH,
// which is at the front of the chain.
- Module &F = *Chain.front();
+ Module &F = ModuleMgr.getPrimaryModule();
// If there were any pending implicit instantiations, deserialize them
// and add them to Sema's queue of such instantiations.
@@ -4459,9 +4463,9 @@
IdentifierInfo* ASTReader::get(const char *NameStart, const char *NameEnd) {
// Try to find this name within our on-disk hash tables. We start with the
// most recent one, since that one contains the most up-to-date info.
- for (unsigned I = 0, N = Chain.size(); I != N; ++I) {
+ for (ModuleIterator I = ModuleMgr.begin(), E = ModuleMgr.end(); I != E; ++I) {
ASTIdentifierLookupTable *IdTable
- = (ASTIdentifierLookupTable *)Chain[I]->IdentifierLookupTable;
+ = (ASTIdentifierLookupTable *)(*I)->IdentifierLookupTable;
if (!IdTable)
continue;
std::pair<const char*, unsigned> Key(NameStart, NameEnd - NameStart);
@@ -4504,9 +4508,9 @@
}
ASTIdentifierIterator::ASTIdentifierIterator(const ASTReader &Reader)
- : Reader(Reader), Index(Reader.Chain.size() - 1) {
+ : Reader(Reader), Index(Reader.ModuleMgr.size() - 1) {
ASTIdentifierLookupTable *IdTable
- = (ASTIdentifierLookupTable *)Reader.Chain[Index]->IdentifierLookupTable;
+ = (ASTIdentifierLookupTable *)Reader.ModuleMgr[Index].IdentifierLookupTable;
Current = IdTable->key_begin();
End = IdTable->key_end();
}
@@ -4519,7 +4523,8 @@
--Index;
ASTIdentifierLookupTable *IdTable
- = (ASTIdentifierLookupTable *)Reader.Chain[Index]->IdentifierLookupTable;
+ = (ASTIdentifierLookupTable *)Reader.ModuleMgr[Index].
+ IdentifierLookupTable;
Current = IdTable->key_begin();
End = IdTable->key_end();
}
@@ -4538,8 +4543,8 @@
std::pair<ObjCMethodList, ObjCMethodList>
ASTReader::ReadMethodPool(Selector Sel) {
// Find this selector in a hash table. We want to find the most recent entry.
- for (unsigned I = 0, N = Chain.size(); I != N; ++I) {
- Module &F = *Chain[I];
+ for (ModuleIterator I = ModuleMgr.begin(), E = ModuleMgr.end(); I != E; ++I) {
+ Module &F = *(*I);
if (!F.SelectorLookupTable)
continue;
@@ -5305,8 +5310,6 @@
}
ASTReader::~ASTReader() {
- for (unsigned i = 0, e = Chain.size(); i != e; ++i)
- delete Chain[e - i - 1];
// Delete all visible decl lookup tables
for (DeclContextOffsetsMap::iterator I = DeclContextOffsets.begin(),
E = DeclContextOffsets.end();
Modified: cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp Mon Jul 25 20:36:54 2011
@@ -53,7 +53,7 @@
const CompoundLiteralExpr* CL = CR->getLiteralExpr();
os << "stack memory associated with a compound literal "
"declared on line "
- << SM.getInstantiationLineNumber(CL->getLocStart())
+ << SM.getExpansionLineNumber(CL->getLocStart())
<< " returned to caller";
range = CL->getSourceRange();
}
@@ -62,14 +62,14 @@
SourceLocation L = ARE->getLocStart();
range = ARE->getSourceRange();
os << "stack memory allocated by call to alloca() on line "
- << SM.getInstantiationLineNumber(L);
+ << SM.getExpansionLineNumber(L);
}
else if (const BlockDataRegion *BR = dyn_cast<BlockDataRegion>(R)) {
const BlockDecl *BD = BR->getCodeRegion()->getDecl();
SourceLocation L = BD->getLocStart();
range = BD->getSourceRange();
os << "stack-allocated block declared on line "
- << SM.getInstantiationLineNumber(L);
+ << SM.getExpansionLineNumber(L);
}
else if (const VarRegion *VR = dyn_cast<VarRegion>(R)) {
os << "stack memory associated with local variable '"
Modified: cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/BugReporter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/BugReporter.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/BugReporter.cpp Mon Jul 25 20:36:54 2011
@@ -213,7 +213,7 @@
if (Loc.asStmt())
os << "Execution continues on line "
- << getSourceManager().getInstantiationLineNumber(Loc.asLocation())
+ << getSourceManager().getExpansionLineNumber(Loc.asLocation())
<< '.';
else {
os << "Execution jumps to the end of the ";
@@ -560,7 +560,7 @@
const PathDiagnosticLocation &End = PDB.getEnclosingStmtLocation(S);
os << "Control jumps to line "
- << End.asLocation().getInstantiationLineNumber();
+ << End.asLocation().getExpansionLineNumber();
PD.push_front(new PathDiagnosticControlFlowPiece(Start, End,
os.str()));
break;
@@ -578,11 +578,11 @@
default:
os << "No cases match in the switch statement. "
"Control jumps to line "
- << End.asLocation().getInstantiationLineNumber();
+ << End.asLocation().getExpansionLineNumber();
break;
case Stmt::DefaultStmtClass:
os << "Control jumps to the 'default' case at line "
- << End.asLocation().getInstantiationLineNumber();
+ << End.asLocation().getExpansionLineNumber();
break;
case Stmt::CaseStmtClass: {
@@ -609,7 +609,7 @@
os << LHS->EvaluateAsInt(PDB.getASTContext());
os << ":' at line "
- << End.asLocation().getInstantiationLineNumber();
+ << End.asLocation().getExpansionLineNumber();
break;
}
}
@@ -974,15 +974,15 @@
SourceRange ContaineeR = Containee.asRange();
SourceManager &SM = PDB.getSourceManager();
- SourceLocation ContainerRBeg = SM.getInstantiationLoc(ContainerR.getBegin());
- SourceLocation ContainerREnd = SM.getInstantiationLoc(ContainerR.getEnd());
- SourceLocation ContaineeRBeg = SM.getInstantiationLoc(ContaineeR.getBegin());
- SourceLocation ContaineeREnd = SM.getInstantiationLoc(ContaineeR.getEnd());
-
- unsigned ContainerBegLine = SM.getInstantiationLineNumber(ContainerRBeg);
- unsigned ContainerEndLine = SM.getInstantiationLineNumber(ContainerREnd);
- unsigned ContaineeBegLine = SM.getInstantiationLineNumber(ContaineeRBeg);
- unsigned ContaineeEndLine = SM.getInstantiationLineNumber(ContaineeREnd);
+ SourceLocation ContainerRBeg = SM.getExpansionLoc(ContainerR.getBegin());
+ SourceLocation ContainerREnd = SM.getExpansionLoc(ContainerR.getEnd());
+ SourceLocation ContaineeRBeg = SM.getExpansionLoc(ContaineeR.getBegin());
+ SourceLocation ContaineeREnd = SM.getExpansionLoc(ContaineeR.getEnd());
+
+ unsigned ContainerBegLine = SM.getExpansionLineNumber(ContainerRBeg);
+ unsigned ContainerEndLine = SM.getExpansionLineNumber(ContainerREnd);
+ unsigned ContaineeBegLine = SM.getExpansionLineNumber(ContaineeRBeg);
+ unsigned ContaineeEndLine = SM.getExpansionLineNumber(ContaineeREnd);
assert(ContainerBegLine <= ContainerEndLine);
assert(ContaineeBegLine <= ContaineeEndLine);
@@ -990,11 +990,11 @@
return (ContainerBegLine <= ContaineeBegLine &&
ContainerEndLine >= ContaineeEndLine &&
(ContainerBegLine != ContaineeBegLine ||
- SM.getInstantiationColumnNumber(ContainerRBeg) <=
- SM.getInstantiationColumnNumber(ContaineeRBeg)) &&
+ SM.getExpansionColumnNumber(ContainerRBeg) <=
+ SM.getExpansionColumnNumber(ContaineeRBeg)) &&
(ContainerEndLine != ContaineeEndLine ||
- SM.getInstantiationColumnNumber(ContainerREnd) >=
- SM.getInstantiationColumnNumber(ContainerREnd)));
+ SM.getExpansionColumnNumber(ContainerREnd) >=
+ SM.getExpansionColumnNumber(ContainerREnd)));
}
void EdgeBuilder::rawAddEdge(PathDiagnosticLocation NewLoc) {
@@ -1010,8 +1010,8 @@
return;
// FIXME: Ignore intra-macro edges for now.
- if (NewLocClean.asLocation().getInstantiationLoc() ==
- PrevLocClean.asLocation().getInstantiationLoc())
+ if (NewLocClean.asLocation().getExpansionLoc() ==
+ PrevLocClean.asLocation().getExpansionLoc())
return;
PD.push_front(new PathDiagnosticControlFlowPiece(NewLocClean, PrevLocClean));
@@ -1495,7 +1495,7 @@
// Determine the instantiation location, which is the location we group
// related PathDiagnosticPieces.
SourceLocation InstantiationLoc = Loc.isMacroID() ?
- SM.getInstantiationLoc(Loc) :
+ SM.getExpansionLoc(Loc) :
SourceLocation();
if (Loc.isFileID()) {
@@ -1517,7 +1517,7 @@
PathDiagnosticMacroPiece *MacroGroup = 0;
SourceLocation ParentInstantiationLoc = InstantiationLoc.isMacroID() ?
- SM.getInstantiationLoc(Loc) :
+ SM.getExpansionLoc(Loc) :
SourceLocation();
// Walk the entire macro stack.
Modified: cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/CFRefCount.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/CFRefCount.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/CFRefCount.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/CFRefCount.cpp Mon Jul 25 20:36:54 2011
@@ -2480,7 +2480,7 @@
Description.clear();
llvm::raw_string_ostream os(Description);
SourceManager& SMgr = Eng.getContext().getSourceManager();
- unsigned AllocLine = SMgr.getInstantiationLineNumber(AllocSite);
+ unsigned AllocLine = SMgr.getExpansionLineNumber(AllocSite);
os << "Potential leak ";
if (tf.isGCEnabled()) {
os << "(when using garbage collection) ";
Modified: cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/ExprEngine.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/ExprEngine.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/ExprEngine.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/ExprEngine.cpp Mon Jul 25 20:36:54 2011
@@ -3099,9 +3099,9 @@
if (SLoc.isFileID()) {
Out << "\\lline="
- << GraphPrintSourceManager->getInstantiationLineNumber(SLoc)
+ << GraphPrintSourceManager->getExpansionLineNumber(SLoc)
<< " col="
- << GraphPrintSourceManager->getInstantiationColumnNumber(SLoc)
+ << GraphPrintSourceManager->getExpansionColumnNumber(SLoc)
<< "\\l";
}
@@ -3152,9 +3152,9 @@
if (SLoc.isFileID()) {
Out << "\\lline="
- << GraphPrintSourceManager->getInstantiationLineNumber(SLoc)
+ << GraphPrintSourceManager->getExpansionLineNumber(SLoc)
<< " col="
- << GraphPrintSourceManager->getInstantiationColumnNumber(SLoc);
+ << GraphPrintSourceManager->getExpansionColumnNumber(SLoc);
}
if (isa<SwitchStmt>(T)) {
Modified: cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp Mon Jul 25 20:36:54 2011
@@ -143,7 +143,7 @@
// Verify that the entire path is from the same FileID.
for (PathDiagnostic::const_iterator I = D.begin(), E = D.end(); I != E; ++I) {
- FullSourceLoc L = I->getLocation().asLocation().getInstantiationLoc();
+ FullSourceLoc L = I->getLocation().asLocation().getExpansionLoc();
if (FID.isInvalid()) {
FID = SMgr.getFileID(L);
@@ -154,12 +154,12 @@
for (PathDiagnosticPiece::range_iterator RI=I->ranges_begin(),
RE=I->ranges_end(); RI!=RE; ++RI) {
- SourceLocation L = SMgr.getInstantiationLoc(RI->getBegin());
+ SourceLocation L = SMgr.getExpansionLoc(RI->getBegin());
if (!L.isFileID() || SMgr.getFileID(L) != FID)
return; // FIXME: Emit a warning?
- L = SMgr.getInstantiationLoc(RI->getEnd());
+ L = SMgr.getExpansionLoc(RI->getEnd());
if (!L.isFileID() || SMgr.getFileID(L) != FID)
return; // FIXME: Emit a warning?
@@ -221,9 +221,9 @@
<< html::EscapeText(Entry->getName())
<< "</td></tr>\n<tr><td class=\"rowname\">Location:</td><td>"
"<a href=\"#EndPath\">line "
- << (*D.rbegin()).getLocation().asLocation().getInstantiationLineNumber()
+ << (*D.rbegin()).getLocation().asLocation().getExpansionLineNumber()
<< ", column "
- << (*D.rbegin()).getLocation().asLocation().getInstantiationColumnNumber()
+ << (*D.rbegin()).getLocation().asLocation().getExpansionColumnNumber()
<< "</a></td></tr>\n"
"<tr><td class=\"rowname\">Description:</td><td>"
<< D.getDescription() << "</td></tr>\n";
@@ -261,7 +261,7 @@
os << "\n<!-- BUGFILE " << DirName << Entry->getName() << " -->\n";
os << "\n<!-- BUGLINE "
- << D.back()->getLocation().asLocation().getInstantiationLineNumber()
+ << D.back()->getLocation().asLocation().getExpansionLineNumber()
<< " -->\n";
os << "\n<!-- BUGPATHLENGTH " << D.size() << " -->\n";
@@ -324,7 +324,7 @@
SourceManager &SM = R.getSourceMgr();
assert(&Pos.getManager() == &SM && "SourceManagers are different!");
- std::pair<FileID, unsigned> LPosInfo = SM.getDecomposedInstantiationLoc(Pos);
+ std::pair<FileID, unsigned> LPosInfo = SM.getDecomposedExpansionLoc(Pos);
if (LPosInfo.first != BugFileID)
return;
@@ -335,7 +335,7 @@
// Compute the column number. Rewind from the current position to the start
// of the line.
unsigned ColNo = SM.getColumnNumber(LPosInfo.first, LPosInfo.second);
- const char *TokInstantiationPtr =Pos.getInstantiationLoc().getCharacterData();
+ const char *TokInstantiationPtr =Pos.getExpansionLoc().getCharacterData();
const char *LineStart = TokInstantiationPtr-ColNo;
// Compute LineEnd.
@@ -441,7 +441,7 @@
// Get the name of the macro by relexing it.
{
- FullSourceLoc L = MP->getLocation().asLocation().getInstantiationLoc();
+ FullSourceLoc L = MP->getLocation().asLocation().getExpansionLoc();
assert(L.isFileID());
StringRef BufferInfo = L.getBufferData();
const char* MacroName = L.getDecomposedLoc().second + BufferInfo.data();
@@ -549,11 +549,11 @@
SourceManager &SM = R.getSourceMgr();
const LangOptions &LangOpts = R.getLangOpts();
- SourceLocation InstantiationStart = SM.getInstantiationLoc(Range.getBegin());
- unsigned StartLineNo = SM.getInstantiationLineNumber(InstantiationStart);
+ SourceLocation InstantiationStart = SM.getExpansionLoc(Range.getBegin());
+ unsigned StartLineNo = SM.getExpansionLineNumber(InstantiationStart);
- SourceLocation InstantiationEnd = SM.getInstantiationLoc(Range.getEnd());
- unsigned EndLineNo = SM.getInstantiationLineNumber(InstantiationEnd);
+ SourceLocation InstantiationEnd = SM.getExpansionLoc(Range.getEnd());
+ unsigned EndLineNo = SM.getExpansionLineNumber(InstantiationEnd);
if (EndLineNo < StartLineNo)
return;
@@ -563,7 +563,7 @@
return;
// Compute the column number of the end.
- unsigned EndColNo = SM.getInstantiationColumnNumber(InstantiationEnd);
+ unsigned EndColNo = SM.getExpansionColumnNumber(InstantiationEnd);
unsigned OldEndColNo = EndColNo;
if (EndColNo) {
Modified: cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp Mon Jul 25 20:36:54 2011
@@ -109,7 +109,7 @@
static void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V,
const SourceManager* SM, SourceLocation L) {
- FileID FID = SM->getFileID(SM->getInstantiationLoc(L));
+ FileID FID = SM->getFileID(SM->getExpansionLoc(L));
FIDMap::iterator I = FIDs.find(FID);
if (I != FIDs.end()) return;
FIDs[FID] = V.size();
@@ -118,7 +118,7 @@
static unsigned GetFID(const FIDMap& FIDs, const SourceManager &SM,
SourceLocation L) {
- FileID FID = SM.getFileID(SM.getInstantiationLoc(L));
+ FileID FID = SM.getFileID(SM.getExpansionLoc(L));
FIDMap::const_iterator I = FIDs.find(FID);
assert(I != FIDs.end());
return I->second;
@@ -134,7 +134,7 @@
SourceLocation L, const FIDMap &FM,
unsigned indent, bool extend = false) {
- FullSourceLoc Loc(SM.getInstantiationLoc(L), const_cast<SourceManager&>(SM));
+ FullSourceLoc Loc(SM.getExpansionLoc(L), const_cast<SourceManager&>(SM));
// Add in the length of the token, so that we cover multi-char tokens.
unsigned offset =
@@ -142,9 +142,9 @@
Indent(o, indent) << "<dict>\n";
Indent(o, indent) << " <key>line</key><integer>"
- << Loc.getInstantiationLineNumber() << "</integer>\n";
+ << Loc.getExpansionLineNumber() << "</integer>\n";
Indent(o, indent) << " <key>col</key><integer>"
- << Loc.getInstantiationColumnNumber() + offset << "</integer>\n";
+ << Loc.getExpansionColumnNumber() + offset << "</integer>\n";
Indent(o, indent) << " <key>file</key><integer>"
<< GetFID(FM, SM, Loc) << "</integer>\n";
Indent(o, indent) << "</dict>\n";
Modified: cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp (original)
+++ cfe/branches/exception-handling-rewrite/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp Mon Jul 25 20:36:54 2011
@@ -267,7 +267,7 @@
// Don't run the actions on declarations in header files unless
// otherwise specified.
SourceManager &SM = Ctx->getSourceManager();
- SourceLocation SL = SM.getInstantiationLoc(D->getLocation());
+ SourceLocation SL = SM.getExpansionLoc(D->getLocation());
if (!Opts.AnalyzeAll && !SM.isFromMainFile(SL))
return;
Modified: cfe/branches/exception-handling-rewrite/test/Index/blocks.c
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/test/Index/blocks.c?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/test/Index/blocks.c (original)
+++ cfe/branches/exception-handling-rewrite/test/Index/blocks.c Mon Jul 25 20:36:54 2011
@@ -26,7 +26,7 @@
// CHECK: blocks.c:9:37: UnexposedExpr= Extent=[9:37 - 9:55]
// CHECK: blocks.c:9:37: UnexposedExpr=x:4:19 Extent=[9:37 - 9:51]
// CHECK: blocks.c:9:38: TypeRef=int_t:3:13 Extent=[9:38 - 9:43]
-// CHECK: blocks.c:9:50: MemberRefExpr=x:4:19 Extent=[9:45 - 9:51]
+// CHECK: blocks.c:9:50: MemberRefExpr=x:4:19 SingleRefName=[9:50 - 9:51] RefName=[9:50 - 9:51] Extent=[9:45 - 9:51]
// CHECK: blocks.c:9:45: DeclRefExpr=foo:9:23 Extent=[9:45 - 9:48]
// CHECK: blocks.c:9:54: DeclRefExpr=i:8:11 Extent=[9:54 - 9:55]
// CHECK: blocks.c:9:59: UnexposedExpr= Extent=[9:59 - 9:64]
Modified: cfe/branches/exception-handling-rewrite/test/Index/index-templates.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/test/Index/index-templates.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/test/Index/index-templates.cpp (original)
+++ cfe/branches/exception-handling-rewrite/test/Index/index-templates.cpp Mon Jul 25 20:36:54 2011
@@ -157,11 +157,11 @@
// CHECK-LOAD: index-templates.cpp:53:6: FunctionDecl=template_exprs:53:6 (Definition)
// CHECK-LOAD: index-templates.cpp:54:3: CallExpr=f:4:6 Extent=[54:3 - 54:68]
// CHECK-LOAD: index-templates.cpp:54:3: UnexposedExpr=f:4:6 Extent=[54:3 - 54:35]
-// CHECK-LOAD: index-templates.cpp:54:3: DeclRefExpr=f:4:6 Extent=[54:3 - 54:35]
+// CHECK-LOAD: index-templates.cpp:54:3: DeclRefExpr=f:4:6 RefName=[54:3 - 54:4] RefName=[54:4 - 54:35] Extent=[54:3 - 54:35]
// CHECK-LOAD: index-templates.cpp:54:5: TypeRef=Unsigned:42:18 Extent=[54:5 - 54:13]
// CHECK-LOAD: index-templates.cpp:54:15: DeclRefExpr=OneDimension:35:16 Extent=[54:15 - 54:27]
// CHECK-LOAD: index-templates.cpp:54:29: TemplateRef=array:37:8 Extent=[54:29 - 54:34]
-// CHECK-LOAD: index-templates.cpp:55:8: MemberRefExpr=getAs:50:26 Extent=[55:3 - 55:23]
+// CHECK-LOAD: index-templates.cpp:55:8: MemberRefExpr=getAs:50:26 SingleRefName=[55:8 - 55:13] RefName=[55:8 - 55:13] Extent=[55:3 - 55:23]
// CHECK-LOAD: index-templates.cpp:55:3: CallExpr=Z4:49:8 Extent=[55:3 - 55:7]
// CHECK-LOAD: index-templates.cpp:55:14: TypeRef=Unsigned:42:18 Extent=[55:14 - 55:22]
// CHECK-LOAD: index-templates.cpp:68:6: FunctionTemplate=unresolved_exprs:68:6 (Definition)
Modified: cfe/branches/exception-handling-rewrite/test/Index/recursive-cxx-member-calls.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/test/Index/recursive-cxx-member-calls.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/test/Index/recursive-cxx-member-calls.cpp (original)
+++ cfe/branches/exception-handling-rewrite/test/Index/recursive-cxx-member-calls.cpp Mon Jul 25 20:36:54 2011
@@ -1699,7 +1699,7 @@
// CHECK: 53:12: UnexposedExpr= Extent=[53:12 - 53:35]
// CHECK: 53:12: UnexposedExpr=Length:44:10 Extent=[53:12 - 53:18]
// CHECK: 53:12: MemberRefExpr=Length:44:10 Extent=[53:12 - 53:18]
-// CHECK: 53:29: MemberRefExpr=Length:44:10 Extent=[53:22 - 53:35]
+// CHECK: 53:29: MemberRefExpr=Length:44:10 SingleRefName=[53:29 - 53:35] RefName=[53:29 - 53:35] Extent=[53:22 - 53:35]
// CHECK: 53:22: DeclRefExpr=Prefix:52:29 Extent=[53:22 - 53:28]
// CHECK: 54:11: UnexposedExpr= Extent=[54:11 - 54:56]
// CHECK: 54:11: CallExpr=memcmp:7:7 Extent=[54:11 - 54:51]
@@ -1708,9 +1708,9 @@
// CHECK: 54:18: UnexposedExpr=Data:43:15 Extent=[54:18 - 54:22]
// CHECK: 54:18: MemberRefExpr=Data:43:15 Extent=[54:18 - 54:22]
// CHECK: 54:24: UnexposedExpr=Data:43:15 Extent=[54:24 - 54:35]
-// CHECK: 54:31: MemberRefExpr=Data:43:15 Extent=[54:24 - 54:35]
+// CHECK: 54:31: MemberRefExpr=Data:43:15 SingleRefName=[54:31 - 54:35] RefName=[54:31 - 54:35] Extent=[54:24 - 54:35]
// CHECK: 54:24: DeclRefExpr=Prefix:52:29 Extent=[54:24 - 54:30]
-// CHECK: 54:44: MemberRefExpr=Length:44:10 Extent=[54:37 - 54:50]
+// CHECK: 54:44: MemberRefExpr=Length:44:10 SingleRefName=[54:44 - 54:50] RefName=[54:44 - 54:50] Extent=[54:37 - 54:50]
// CHECK: 54:37: DeclRefExpr=Prefix:52:29 Extent=[54:37 - 54:43]
// CHECK: 54:55: UnexposedExpr= Extent=[54:55 - 54:56]
// CHECK: 56:8: CXXMethod=endswith:56:8 (Definition) Extent=[56:3 - 59:4]
@@ -1722,7 +1722,7 @@
// CHECK: 57:12: UnexposedExpr= Extent=[57:12 - 57:35]
// CHECK: 57:12: UnexposedExpr=Length:44:10 Extent=[57:12 - 57:18]
// CHECK: 57:12: MemberRefExpr=Length:44:10 Extent=[57:12 - 57:18]
-// CHECK: 57:29: MemberRefExpr=Length:44:10 Extent=[57:22 - 57:35]
+// CHECK: 57:29: MemberRefExpr=Length:44:10 SingleRefName=[57:29 - 57:35] RefName=[57:29 - 57:35] Extent=[57:22 - 57:35]
// CHECK: 57:22: DeclRefExpr=Suffix:56:27 Extent=[57:22 - 57:28]
// CHECK: 58:7: UnexposedExpr= Extent=[58:7 - 58:69]
// CHECK: 58:7: CallExpr=memcmp:7:7 Extent=[58:7 - 58:64]
@@ -1732,12 +1732,12 @@
// CHECK: 58:14: UnexposedExpr= Extent=[58:14 - 58:35]
// CHECK: 58:14: CallExpr=end:50:12 Extent=[58:14 - 58:19]
// CHECK: 58:14: MemberRefExpr=end:50:12 Extent=[58:14 - 58:17]
-// CHECK: 58:29: MemberRefExpr=Length:44:10 Extent=[58:22 - 58:35]
+// CHECK: 58:29: MemberRefExpr=Length:44:10 SingleRefName=[58:29 - 58:35] RefName=[58:29 - 58:35] Extent=[58:22 - 58:35]
// CHECK: 58:22: DeclRefExpr=Suffix:56:27 Extent=[58:22 - 58:28]
// CHECK: 58:37: UnexposedExpr=Data:43:15 Extent=[58:37 - 58:48]
-// CHECK: 58:44: MemberRefExpr=Data:43:15 Extent=[58:37 - 58:48]
+// CHECK: 58:44: MemberRefExpr=Data:43:15 SingleRefName=[58:44 - 58:48] RefName=[58:44 - 58:48] Extent=[58:37 - 58:48]
// CHECK: 58:37: DeclRefExpr=Suffix:56:27 Extent=[58:37 - 58:43]
-// CHECK: 58:57: MemberRefExpr=Length:44:10 Extent=[58:50 - 58:63]
+// CHECK: 58:57: MemberRefExpr=Length:44:10 SingleRefName=[58:57 - 58:63] RefName=[58:57 - 58:63] Extent=[58:50 - 58:63]
// CHECK: 58:50: DeclRefExpr=Suffix:56:27 Extent=[58:50 - 58:56]
// CHECK: 58:68: UnexposedExpr= Extent=[58:68 - 58:69]
// CHECK: 60:13: CXXMethod=substr:60:13 (Definition) Extent=[60:3 - 62:4]
@@ -1776,7 +1776,7 @@
// CHECK: 69:18: TemplateRef=pair:4:44 Extent=[69:18 - 69:22]
// CHECK: 69:25: TypeRef=class clang::IdentifierInfo:66:7 Extent=[69:25 - 69:39]
// CHECK: 70:5: UnexposedStmt= Extent=[70:5 - 70:47]
-// CHECK: 70:41: MemberRefExpr=second:4:55 Extent=[70:12 - 70:47]
+// CHECK: 70:41: MemberRefExpr=second:4:55 SingleRefName=[70:41 - 70:47] RefName=[70:41 - 70:47] Extent=[70:12 - 70:47]
// CHECK: 70:12: UnexposedExpr= Extent=[70:12 - 70:39]
// CHECK: 70:13: UnexposedExpr= Extent=[70:13 - 70:38]
// CHECK: 70:20: TypeRef=actualtype:69:54 Extent=[70:20 - 70:30]
@@ -1791,7 +1791,7 @@
// CHECK: 74:17: VarDecl=p:74:17 (Definition) Extent=[74:5 - 74:60]
// CHECK: 74:21: UnexposedExpr= Extent=[74:21 - 74:60]
// CHECK: 74:21: UnexposedExpr=second:4:55 Extent=[74:21 - 74:56]
-// CHECK: 74:50: MemberRefExpr=second:4:55 Extent=[74:21 - 74:56]
+// CHECK: 74:50: MemberRefExpr=second:4:55 SingleRefName=[74:50 - 74:56] RefName=[74:50 - 74:56] Extent=[74:21 - 74:56]
// CHECK: 74:21: UnexposedExpr= Extent=[74:21 - 74:48]
// CHECK: 74:22: UnexposedExpr= Extent=[74:22 - 74:47]
// CHECK: 74:29: TypeRef=actualtype:73:54 Extent=[74:29 - 74:39]
@@ -1875,12 +1875,12 @@
// CHECK: 101:30: CallExpr= Extent=[101:30 - 101:45]
// CHECK: 101:30: UnexposedExpr=getName:77:19 Extent=[101:30 - 101:45]
// CHECK: 101:30: CallExpr=getName:77:19 Extent=[101:30 - 101:45]
-// CHECK: 101:36: MemberRefExpr=getName:77:19 Extent=[101:30 - 101:43]
+// CHECK: 101:36: MemberRefExpr=getName:77:19 SingleRefName=[101:36 - 101:43] RefName=[101:36 - 101:43] Extent=[101:30 - 101:43]
// CHECK: 101:30: DeclRefExpr=Name:100:67 Extent=[101:30 - 101:34]
// CHECK: 102:3: UnexposedStmt= Extent=[102:3 - 103:55]
// CHECK: 102:7: UnexposedExpr= Extent=[102:7 - 102:59]
// CHECK: 102:7: CallExpr=startswith:52:8 Extent=[102:7 - 102:32]
-// CHECK: 102:16: MemberRefExpr=startswith:52:8 Extent=[102:7 - 102:26]
+// CHECK: 102:16: MemberRefExpr=startswith:52:8 SingleRefName=[102:16 - 102:26] RefName=[102:16 - 102:26] Extent=[102:7 - 102:26]
// CHECK: 102:7: UnexposedExpr=AttrName:101:19 Extent=[102:7 - 102:15]
// CHECK: 102:7: DeclRefExpr=AttrName:101:19 Extent=[102:7 - 102:15]
// CHECK: 102:27: CallExpr= Extent=[102:27 - 102:31]
@@ -1890,7 +1890,7 @@
// CHECK: 102:27: UnexposedExpr= Extent=[102:27 - 102:31]
// CHECK: 102:27: UnexposedExpr= Extent=[102:27 - 102:31]
// CHECK: 102:36: CallExpr=endswith:56:8 Extent=[102:36 - 102:59]
-// CHECK: 102:45: MemberRefExpr=endswith:56:8 Extent=[102:36 - 102:53]
+// CHECK: 102:45: MemberRefExpr=endswith:56:8 SingleRefName=[102:45 - 102:53] RefName=[102:45 - 102:53] Extent=[102:36 - 102:53]
// CHECK: 102:36: UnexposedExpr=AttrName:101:19 Extent=[102:36 - 102:44]
// CHECK: 102:36: DeclRefExpr=AttrName:101:19 Extent=[102:36 - 102:44]
// CHECK: 102:54: CallExpr= Extent=[102:54 - 102:58]
@@ -1905,180 +1905,180 @@
// CHECK: 103:14: DeclRefExpr=operator=:38:7
// CHECK: 103:16: UnexposedExpr=substr:60:13 Extent=[103:16 - 103:55]
// CHECK: 103:16: CallExpr=substr:60:13 Extent=[103:16 - 103:55]
-// CHECK: 103:25: MemberRefExpr=substr:60:13 Extent=[103:16 - 103:31]
+// CHECK: 103:25: MemberRefExpr=substr:60:13 SingleRefName=[103:25 - 103:31] RefName=[103:25 - 103:31] Extent=[103:16 - 103:31]
// CHECK: 103:16: UnexposedExpr=AttrName:101:19 Extent=[103:16 - 103:24]
// CHECK: 103:16: DeclRefExpr=AttrName:101:19 Extent=[103:16 - 103:24]
// CHECK: 103:32: UnexposedExpr= Extent=[103:32 - 103:33]
// CHECK: 103:32: UnexposedExpr= Extent=[103:32 - 103:33]
// CHECK: 103:35: UnexposedExpr= Extent=[103:35 - 103:54]
// CHECK: 103:35: CallExpr=size:51:10 Extent=[103:35 - 103:50]
-// CHECK: 103:44: MemberRefExpr=size:51:10 Extent=[103:35 - 103:48]
+// CHECK: 103:44: MemberRefExpr=size:51:10 SingleRefName=[103:44 - 103:48] RefName=[103:44 - 103:48] Extent=[103:35 - 103:48]
// CHECK: 103:35: UnexposedExpr=AttrName:101:19 Extent=[103:35 - 103:43]
// CHECK: 103:35: DeclRefExpr=AttrName:101:19 Extent=[103:35 - 103:43]
// CHECK: 103:53: UnexposedExpr= Extent=[103:53 - 103:54]
// CHECK: 103:53: UnexposedExpr= Extent=[103:53 - 103:54]
// CHECK: 105:3: UnexposedStmt= Extent=[105:3 - 185:31]
// CHECK: 105:10: CallExpr=Default:92:5 Extent=[105:10 - 185:31]
-// CHECK: 185:6: MemberRefExpr=Default:92:5 Extent=[105:10 - 185:13]
+// CHECK: 185:6: MemberRefExpr=Default:92:5 SingleRefName=[185:6 - 185:13] RefName=[185:6 - 185:13] Extent=[105:10 - 185:13]
// CHECK: 105:10: UnexposedExpr=Case:88:42 Extent=[105:10 - 184:33]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 184:33]
-// CHECK: 184:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 184:10]
+// CHECK: 184:6: MemberRefExpr=Case:88:42 SingleRefName=[184:6 - 184:10] RefName=[184:6 - 184:10] Extent=[105:10 - 184:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 183:37]
-// CHECK: 183:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 183:10]
+// CHECK: 183:6: MemberRefExpr=Case:88:42 SingleRefName=[183:6 - 183:10] RefName=[183:6 - 183:10] Extent=[105:10 - 183:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 182:37]
-// CHECK: 182:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 182:10]
+// CHECK: 182:6: MemberRefExpr=Case:88:42 SingleRefName=[182:6 - 182:10] RefName=[182:6 - 182:10] Extent=[105:10 - 182:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 181:35]
-// CHECK: 181:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 181:10]
+// CHECK: 181:6: MemberRefExpr=Case:88:42 SingleRefName=[181:6 - 181:10] RefName=[181:6 - 181:10] Extent=[105:10 - 181:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 180:31]
-// CHECK: 180:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 180:10]
+// CHECK: 180:6: MemberRefExpr=Case:88:42 SingleRefName=[180:6 - 180:10] RefName=[180:6 - 180:10] Extent=[105:10 - 180:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 179:31]
-// CHECK: 179:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 179:10]
+// CHECK: 179:6: MemberRefExpr=Case:88:42 SingleRefName=[179:6 - 179:10] RefName=[179:6 - 179:10] Extent=[105:10 - 179:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 178:35]
-// CHECK: 178:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 178:10]
+// CHECK: 178:6: MemberRefExpr=Case:88:42 SingleRefName=[178:6 - 178:10] RefName=[178:6 - 178:10] Extent=[105:10 - 178:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 177:63]
-// CHECK: 177:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 177:10]
+// CHECK: 177:6: MemberRefExpr=Case:88:42 SingleRefName=[177:6 - 177:10] RefName=[177:6 - 177:10] Extent=[105:10 - 177:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 176:45]
-// CHECK: 176:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 176:10]
+// CHECK: 176:6: MemberRefExpr=Case:88:42 SingleRefName=[176:6 - 176:10] RefName=[176:6 - 176:10] Extent=[105:10 - 176:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 175:51]
-// CHECK: 175:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 175:10]
+// CHECK: 175:6: MemberRefExpr=Case:88:42 SingleRefName=[175:6 - 175:10] RefName=[175:6 - 175:10] Extent=[105:10 - 175:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 174:49]
-// CHECK: 174:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 174:10]
+// CHECK: 174:6: MemberRefExpr=Case:88:42 SingleRefName=[174:6 - 174:10] RefName=[174:6 - 174:10] Extent=[105:10 - 174:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 173:49]
-// CHECK: 173:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 173:10]
+// CHECK: 173:6: MemberRefExpr=Case:88:42 SingleRefName=[173:6 - 173:10] RefName=[173:6 - 173:10] Extent=[105:10 - 173:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 172:53]
-// CHECK: 172:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 172:10]
+// CHECK: 172:6: MemberRefExpr=Case:88:42 SingleRefName=[172:6 - 172:10] RefName=[172:6 - 172:10] Extent=[105:10 - 172:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 171:57]
-// CHECK: 171:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 171:10]
+// CHECK: 171:6: MemberRefExpr=Case:88:42 SingleRefName=[171:6 - 171:10] RefName=[171:6 - 171:10] Extent=[105:10 - 171:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 170:65]
-// CHECK: 170:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 170:10]
+// CHECK: 170:6: MemberRefExpr=Case:88:42 SingleRefName=[170:6 - 170:10] RefName=[170:6 - 170:10] Extent=[105:10 - 170:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 169:57]
-// CHECK: 169:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 169:10]
+// CHECK: 169:6: MemberRefExpr=Case:88:42 SingleRefName=[169:6 - 169:10] RefName=[169:6 - 169:10] Extent=[105:10 - 169:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 168:65]
-// CHECK: 168:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 168:10]
+// CHECK: 168:6: MemberRefExpr=Case:88:42 SingleRefName=[168:6 - 168:10] RefName=[168:6 - 168:10] Extent=[105:10 - 168:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 167:55]
-// CHECK: 167:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 167:10]
+// CHECK: 167:6: MemberRefExpr=Case:88:42 SingleRefName=[167:6 - 167:10] RefName=[167:6 - 167:10] Extent=[105:10 - 167:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 166:55]
-// CHECK: 166:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 166:10]
+// CHECK: 166:6: MemberRefExpr=Case:88:42 SingleRefName=[166:6 - 166:10] RefName=[166:6 - 166:10] Extent=[105:10 - 166:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 165:53]
-// CHECK: 165:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 165:10]
+// CHECK: 165:6: MemberRefExpr=Case:88:42 SingleRefName=[165:6 - 165:10] RefName=[165:6 - 165:10] Extent=[105:10 - 165:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 164:53]
-// CHECK: 164:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 164:10]
+// CHECK: 164:6: MemberRefExpr=Case:88:42 SingleRefName=[164:6 - 164:10] RefName=[164:6 - 164:10] Extent=[105:10 - 164:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 163:49]
-// CHECK: 163:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 163:10]
+// CHECK: 163:6: MemberRefExpr=Case:88:42 SingleRefName=[163:6 - 163:10] RefName=[163:6 - 163:10] Extent=[105:10 - 163:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 162:47]
-// CHECK: 162:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 162:10]
+// CHECK: 162:6: MemberRefExpr=Case:88:42 SingleRefName=[162:6 - 162:10] RefName=[162:6 - 162:10] Extent=[105:10 - 162:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 161:45]
-// CHECK: 161:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 161:10]
+// CHECK: 161:6: MemberRefExpr=Case:88:42 SingleRefName=[161:6 - 161:10] RefName=[161:6 - 161:10] Extent=[105:10 - 161:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 160:45]
-// CHECK: 160:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 160:10]
+// CHECK: 160:6: MemberRefExpr=Case:88:42 SingleRefName=[160:6 - 160:10] RefName=[160:6 - 160:10] Extent=[105:10 - 160:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 159:45]
-// CHECK: 159:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 159:10]
+// CHECK: 159:6: MemberRefExpr=Case:88:42 SingleRefName=[159:6 - 159:10] RefName=[159:6 - 159:10] Extent=[105:10 - 159:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 158:45]
-// CHECK: 158:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 158:10]
+// CHECK: 158:6: MemberRefExpr=Case:88:42 SingleRefName=[158:6 - 158:10] RefName=[158:6 - 158:10] Extent=[105:10 - 158:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 157:43]
-// CHECK: 157:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 157:10]
+// CHECK: 157:6: MemberRefExpr=Case:88:42 SingleRefName=[157:6 - 157:10] RefName=[157:6 - 157:10] Extent=[105:10 - 157:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 156:41]
-// CHECK: 156:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 156:10]
+// CHECK: 156:6: MemberRefExpr=Case:88:42 SingleRefName=[156:6 - 156:10] RefName=[156:6 - 156:10] Extent=[105:10 - 156:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 155:41]
-// CHECK: 155:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 155:10]
+// CHECK: 155:6: MemberRefExpr=Case:88:42 SingleRefName=[155:6 - 155:10] RefName=[155:6 - 155:10] Extent=[105:10 - 155:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 154:41]
-// CHECK: 154:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 154:10]
+// CHECK: 154:6: MemberRefExpr=Case:88:42 SingleRefName=[154:6 - 154:10] RefName=[154:6 - 154:10] Extent=[105:10 - 154:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 153:37]
-// CHECK: 153:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 153:10]
+// CHECK: 153:6: MemberRefExpr=Case:88:42 SingleRefName=[153:6 - 153:10] RefName=[153:6 - 153:10] Extent=[105:10 - 153:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 152:41]
-// CHECK: 152:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 152:10]
+// CHECK: 152:6: MemberRefExpr=Case:88:42 SingleRefName=[152:6 - 152:10] RefName=[152:6 - 152:10] Extent=[105:10 - 152:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 151:39]
-// CHECK: 151:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 151:10]
+// CHECK: 151:6: MemberRefExpr=Case:88:42 SingleRefName=[151:6 - 151:10] RefName=[151:6 - 151:10] Extent=[105:10 - 151:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 150:39]
-// CHECK: 150:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 150:10]
+// CHECK: 150:6: MemberRefExpr=Case:88:42 SingleRefName=[150:6 - 150:10] RefName=[150:6 - 150:10] Extent=[105:10 - 150:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 149:39]
-// CHECK: 149:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 149:10]
+// CHECK: 149:6: MemberRefExpr=Case:88:42 SingleRefName=[149:6 - 149:10] RefName=[149:6 - 149:10] Extent=[105:10 - 149:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 148:39]
-// CHECK: 148:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 148:10]
+// CHECK: 148:6: MemberRefExpr=Case:88:42 SingleRefName=[148:6 - 148:10] RefName=[148:6 - 148:10] Extent=[105:10 - 148:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 147:39]
-// CHECK: 147:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 147:10]
+// CHECK: 147:6: MemberRefExpr=Case:88:42 SingleRefName=[147:6 - 147:10] RefName=[147:6 - 147:10] Extent=[105:10 - 147:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 146:39]
-// CHECK: 146:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 146:10]
+// CHECK: 146:6: MemberRefExpr=Case:88:42 SingleRefName=[146:6 - 146:10] RefName=[146:6 - 146:10] Extent=[105:10 - 146:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 145:41]
-// CHECK: 145:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 145:10]
+// CHECK: 145:6: MemberRefExpr=Case:88:42 SingleRefName=[145:6 - 145:10] RefName=[145:6 - 145:10] Extent=[105:10 - 145:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 144:37]
-// CHECK: 144:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 144:10]
+// CHECK: 144:6: MemberRefExpr=Case:88:42 SingleRefName=[144:6 - 144:10] RefName=[144:6 - 144:10] Extent=[105:10 - 144:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 143:37]
-// CHECK: 143:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 143:10]
+// CHECK: 143:6: MemberRefExpr=Case:88:42 SingleRefName=[143:6 - 143:10] RefName=[143:6 - 143:10] Extent=[105:10 - 143:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 142:35]
-// CHECK: 142:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 142:10]
+// CHECK: 142:6: MemberRefExpr=Case:88:42 SingleRefName=[142:6 - 142:10] RefName=[142:6 - 142:10] Extent=[105:10 - 142:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 141:35]
-// CHECK: 141:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 141:10]
+// CHECK: 141:6: MemberRefExpr=Case:88:42 SingleRefName=[141:6 - 141:10] RefName=[141:6 - 141:10] Extent=[105:10 - 141:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 140:35]
-// CHECK: 140:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 140:10]
+// CHECK: 140:6: MemberRefExpr=Case:88:42 SingleRefName=[140:6 - 140:10] RefName=[140:6 - 140:10] Extent=[105:10 - 140:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 139:35]
-// CHECK: 139:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 139:10]
+// CHECK: 139:6: MemberRefExpr=Case:88:42 SingleRefName=[139:6 - 139:10] RefName=[139:6 - 139:10] Extent=[105:10 - 139:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 138:35]
-// CHECK: 138:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 138:10]
+// CHECK: 138:6: MemberRefExpr=Case:88:42 SingleRefName=[138:6 - 138:10] RefName=[138:6 - 138:10] Extent=[105:10 - 138:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 137:55]
-// CHECK: 137:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 137:10]
+// CHECK: 137:6: MemberRefExpr=Case:88:42 SingleRefName=[137:6 - 137:10] RefName=[137:6 - 137:10] Extent=[105:10 - 137:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 136:35]
-// CHECK: 136:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 136:10]
+// CHECK: 136:6: MemberRefExpr=Case:88:42 SingleRefName=[136:6 - 136:10] RefName=[136:6 - 136:10] Extent=[105:10 - 136:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 135:35]
-// CHECK: 135:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 135:10]
+// CHECK: 135:6: MemberRefExpr=Case:88:42 SingleRefName=[135:6 - 135:10] RefName=[135:6 - 135:10] Extent=[105:10 - 135:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 134:35]
-// CHECK: 134:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 134:10]
+// CHECK: 134:6: MemberRefExpr=Case:88:42 SingleRefName=[134:6 - 134:10] RefName=[134:6 - 134:10] Extent=[105:10 - 134:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 133:35]
-// CHECK: 133:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 133:10]
+// CHECK: 133:6: MemberRefExpr=Case:88:42 SingleRefName=[133:6 - 133:10] RefName=[133:6 - 133:10] Extent=[105:10 - 133:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 132:33]
-// CHECK: 132:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 132:10]
+// CHECK: 132:6: MemberRefExpr=Case:88:42 SingleRefName=[132:6 - 132:10] RefName=[132:6 - 132:10] Extent=[105:10 - 132:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 131:33]
-// CHECK: 131:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 131:10]
+// CHECK: 131:6: MemberRefExpr=Case:88:42 SingleRefName=[131:6 - 131:10] RefName=[131:6 - 131:10] Extent=[105:10 - 131:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 130:33]
-// CHECK: 130:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 130:10]
+// CHECK: 130:6: MemberRefExpr=Case:88:42 SingleRefName=[130:6 - 130:10] RefName=[130:6 - 130:10] Extent=[105:10 - 130:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 129:33]
-// CHECK: 129:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 129:10]
+// CHECK: 129:6: MemberRefExpr=Case:88:42 SingleRefName=[129:6 - 129:10] RefName=[129:6 - 129:10] Extent=[105:10 - 129:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 128:33]
-// CHECK: 128:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 128:10]
+// CHECK: 128:6: MemberRefExpr=Case:88:42 SingleRefName=[128:6 - 128:10] RefName=[128:6 - 128:10] Extent=[105:10 - 128:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 127:33]
-// CHECK: 127:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 127:10]
+// CHECK: 127:6: MemberRefExpr=Case:88:42 SingleRefName=[127:6 - 127:10] RefName=[127:6 - 127:10] Extent=[105:10 - 127:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 126:33]
-// CHECK: 126:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 126:10]
+// CHECK: 126:6: MemberRefExpr=Case:88:42 SingleRefName=[126:6 - 126:10] RefName=[126:6 - 126:10] Extent=[105:10 - 126:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 125:29]
-// CHECK: 125:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 125:10]
+// CHECK: 125:6: MemberRefExpr=Case:88:42 SingleRefName=[125:6 - 125:10] RefName=[125:6 - 125:10] Extent=[105:10 - 125:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 124:33]
-// CHECK: 124:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 124:10]
+// CHECK: 124:6: MemberRefExpr=Case:88:42 SingleRefName=[124:6 - 124:10] RefName=[124:6 - 124:10] Extent=[105:10 - 124:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 123:33]
-// CHECK: 123:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 123:10]
+// CHECK: 123:6: MemberRefExpr=Case:88:42 SingleRefName=[123:6 - 123:10] RefName=[123:6 - 123:10] Extent=[105:10 - 123:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 122:31]
-// CHECK: 122:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 122:10]
+// CHECK: 122:6: MemberRefExpr=Case:88:42 SingleRefName=[122:6 - 122:10] RefName=[122:6 - 122:10] Extent=[105:10 - 122:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 121:31]
-// CHECK: 121:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 121:10]
+// CHECK: 121:6: MemberRefExpr=Case:88:42 SingleRefName=[121:6 - 121:10] RefName=[121:6 - 121:10] Extent=[105:10 - 121:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 120:31]
-// CHECK: 120:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 120:10]
+// CHECK: 120:6: MemberRefExpr=Case:88:42 SingleRefName=[120:6 - 120:10] RefName=[120:6 - 120:10] Extent=[105:10 - 120:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 119:31]
-// CHECK: 119:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 119:10]
+// CHECK: 119:6: MemberRefExpr=Case:88:42 SingleRefName=[119:6 - 119:10] RefName=[119:6 - 119:10] Extent=[105:10 - 119:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 118:31]
-// CHECK: 118:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 118:10]
+// CHECK: 118:6: MemberRefExpr=Case:88:42 SingleRefName=[118:6 - 118:10] RefName=[118:6 - 118:10] Extent=[105:10 - 118:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 117:31]
-// CHECK: 117:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 117:10]
+// CHECK: 117:6: MemberRefExpr=Case:88:42 SingleRefName=[117:6 - 117:10] RefName=[117:6 - 117:10] Extent=[105:10 - 117:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 116:31]
-// CHECK: 116:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 116:10]
+// CHECK: 116:6: MemberRefExpr=Case:88:42 SingleRefName=[116:6 - 116:10] RefName=[116:6 - 116:10] Extent=[105:10 - 116:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 115:29]
-// CHECK: 115:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 115:10]
+// CHECK: 115:6: MemberRefExpr=Case:88:42 SingleRefName=[115:6 - 115:10] RefName=[115:6 - 115:10] Extent=[105:10 - 115:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 114:29]
-// CHECK: 114:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 114:10]
+// CHECK: 114:6: MemberRefExpr=Case:88:42 SingleRefName=[114:6 - 114:10] RefName=[114:6 - 114:10] Extent=[105:10 - 114:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 113:29]
-// CHECK: 113:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 113:10]
+// CHECK: 113:6: MemberRefExpr=Case:88:42 SingleRefName=[113:6 - 113:10] RefName=[113:6 - 113:10] Extent=[105:10 - 113:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 112:31]
-// CHECK: 112:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 112:10]
+// CHECK: 112:6: MemberRefExpr=Case:88:42 SingleRefName=[112:6 - 112:10] RefName=[112:6 - 112:10] Extent=[105:10 - 112:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 111:29]
-// CHECK: 111:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 111:10]
+// CHECK: 111:6: MemberRefExpr=Case:88:42 SingleRefName=[111:6 - 111:10] RefName=[111:6 - 111:10] Extent=[105:10 - 111:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 110:27]
-// CHECK: 110:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 110:10]
+// CHECK: 110:6: MemberRefExpr=Case:88:42 SingleRefName=[110:6 - 110:10] RefName=[110:6 - 110:10] Extent=[105:10 - 110:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 109:27]
-// CHECK: 109:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 109:10]
+// CHECK: 109:6: MemberRefExpr=Case:88:42 SingleRefName=[109:6 - 109:10] RefName=[109:6 - 109:10] Extent=[105:10 - 109:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 108:27]
-// CHECK: 108:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 108:10]
+// CHECK: 108:6: MemberRefExpr=Case:88:42 SingleRefName=[108:6 - 108:10] RefName=[108:6 - 108:10] Extent=[105:10 - 108:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 107:33]
-// CHECK: 107:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 107:10]
+// CHECK: 107:6: MemberRefExpr=Case:88:42 SingleRefName=[107:6 - 107:10] RefName=[107:6 - 107:10] Extent=[105:10 - 107:10]
// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 106:27]
-// CHECK: 106:6: MemberRefExpr=Case:88:42 Extent=[105:10 - 106:10]
+// CHECK: 106:6: MemberRefExpr=Case:88:42 SingleRefName=[106:6 - 106:10] RefName=[106:6 - 106:10] Extent=[105:10 - 106:10]
// CHECK: 105:10: UnexposedExpr=StringSwitch:87:12 Extent=[105:10 - 105:63]
// CHECK: 105:16: TemplateRef=StringSwitch:83:47 Extent=[105:16 - 105:28]
// CHECK: 105:10: CallExpr=StringSwitch:87:12 Extent=[105:10 - 105:62]
Modified: cfe/branches/exception-handling-rewrite/test/Index/recursive-member-access.c
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/test/Index/recursive-member-access.c?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/test/Index/recursive-member-access.c (original)
+++ cfe/branches/exception-handling-rewrite/test/Index/recursive-member-access.c Mon Jul 25 20:36:54 2011
@@ -133,124 +133,124 @@
// CHECK: 6:29: TypeRef=struct rdar8650865:1:8 Extent=[6:29 - 6:40]
// CHECK: 6:45: UnexposedStmt= Extent=[6:45 - 124:2]
// CHECK: 7:3: UnexposedStmt= Extent=[7:3 - 123:8]
-// CHECK: 123:7: MemberRefExpr=x:3:7 Extent=[7:10 - 123:8]
-// CHECK: 122:7: MemberRefExpr=first:2:23 Extent=[7:10 - 122:12]
-// CHECK: 121:7: MemberRefExpr=first:2:23 Extent=[7:10 - 121:12]
-// CHECK: 120:7: MemberRefExpr=first:2:23 Extent=[7:10 - 120:12]
-// CHECK: 119:7: MemberRefExpr=first:2:23 Extent=[7:10 - 119:12]
-// CHECK: 118:7: MemberRefExpr=first:2:23 Extent=[7:10 - 118:12]
-// CHECK: 117:7: MemberRefExpr=first:2:23 Extent=[7:10 - 117:12]
-// CHECK: 116:7: MemberRefExpr=first:2:23 Extent=[7:10 - 116:12]
-// CHECK: 115:7: MemberRefExpr=first:2:23 Extent=[7:10 - 115:12]
-// CHECK: 114:7: MemberRefExpr=first:2:23 Extent=[7:10 - 114:12]
-// CHECK: 113:7: MemberRefExpr=first:2:23 Extent=[7:10 - 113:12]
-// CHECK: 112:7: MemberRefExpr=first:2:23 Extent=[7:10 - 112:12]
-// CHECK: 111:7: MemberRefExpr=first:2:23 Extent=[7:10 - 111:12]
-// CHECK: 110:7: MemberRefExpr=first:2:23 Extent=[7:10 - 110:12]
-// CHECK: 109:7: MemberRefExpr=first:2:23 Extent=[7:10 - 109:12]
-// CHECK: 108:7: MemberRefExpr=first:2:23 Extent=[7:10 - 108:12]
-// CHECK: 107:7: MemberRefExpr=first:2:23 Extent=[7:10 - 107:12]
-// CHECK: 106:7: MemberRefExpr=first:2:23 Extent=[7:10 - 106:12]
-// CHECK: 105:7: MemberRefExpr=first:2:23 Extent=[7:10 - 105:12]
-// CHECK: 104:7: MemberRefExpr=first:2:23 Extent=[7:10 - 104:12]
-// CHECK: 103:7: MemberRefExpr=first:2:23 Extent=[7:10 - 103:12]
-// CHECK: 102:7: MemberRefExpr=first:2:23 Extent=[7:10 - 102:12]
-// CHECK: 101:7: MemberRefExpr=first:2:23 Extent=[7:10 - 101:12]
-// CHECK: 100:7: MemberRefExpr=first:2:23 Extent=[7:10 - 100:12]
-// CHECK: 99:7: MemberRefExpr=first:2:23 Extent=[7:10 - 99:12]
-// CHECK: 98:7: MemberRefExpr=first:2:23 Extent=[7:10 - 98:12]
-// CHECK: 97:7: MemberRefExpr=first:2:23 Extent=[7:10 - 97:12]
-// CHECK: 96:7: MemberRefExpr=first:2:23 Extent=[7:10 - 96:12]
-// CHECK: 95:7: MemberRefExpr=first:2:23 Extent=[7:10 - 95:12]
-// CHECK: 94:7: MemberRefExpr=first:2:23 Extent=[7:10 - 94:12]
-// CHECK: 93:7: MemberRefExpr=first:2:23 Extent=[7:10 - 93:12]
-// CHECK: 92:7: MemberRefExpr=first:2:23 Extent=[7:10 - 92:12]
-// CHECK: 91:7: MemberRefExpr=first:2:23 Extent=[7:10 - 91:12]
-// CHECK: 90:7: MemberRefExpr=first:2:23 Extent=[7:10 - 90:12]
-// CHECK: 89:7: MemberRefExpr=first:2:23 Extent=[7:10 - 89:12]
-// CHECK: 88:7: MemberRefExpr=first:2:23 Extent=[7:10 - 88:12]
-// CHECK: 87:7: MemberRefExpr=first:2:23 Extent=[7:10 - 87:12]
-// CHECK: 86:7: MemberRefExpr=first:2:23 Extent=[7:10 - 86:12]
-// CHECK: 85:7: MemberRefExpr=first:2:23 Extent=[7:10 - 85:12]
-// CHECK: 84:7: MemberRefExpr=first:2:23 Extent=[7:10 - 84:12]
-// CHECK: 83:7: MemberRefExpr=first:2:23 Extent=[7:10 - 83:12]
-// CHECK: 82:7: MemberRefExpr=first:2:23 Extent=[7:10 - 82:12]
-// CHECK: 81:7: MemberRefExpr=first:2:23 Extent=[7:10 - 81:12]
-// CHECK: 80:7: MemberRefExpr=first:2:23 Extent=[7:10 - 80:12]
-// CHECK: 79:7: MemberRefExpr=first:2:23 Extent=[7:10 - 79:12]
-// CHECK: 78:7: MemberRefExpr=first:2:23 Extent=[7:10 - 78:12]
-// CHECK: 77:7: MemberRefExpr=first:2:23 Extent=[7:10 - 77:12]
-// CHECK: 76:7: MemberRefExpr=first:2:23 Extent=[7:10 - 76:12]
-// CHECK: 75:7: MemberRefExpr=first:2:23 Extent=[7:10 - 75:12]
-// CHECK: 74:7: MemberRefExpr=first:2:23 Extent=[7:10 - 74:12]
-// CHECK: 73:7: MemberRefExpr=first:2:23 Extent=[7:10 - 73:12]
-// CHECK: 72:7: MemberRefExpr=first:2:23 Extent=[7:10 - 72:12]
-// CHECK: 71:7: MemberRefExpr=first:2:23 Extent=[7:10 - 71:12]
-// CHECK: 70:7: MemberRefExpr=first:2:23 Extent=[7:10 - 70:12]
-// CHECK: 69:7: MemberRefExpr=first:2:23 Extent=[7:10 - 69:12]
-// CHECK: 68:7: MemberRefExpr=first:2:23 Extent=[7:10 - 68:12]
-// CHECK: 67:7: MemberRefExpr=first:2:23 Extent=[7:10 - 67:12]
-// CHECK: 66:7: MemberRefExpr=first:2:23 Extent=[7:10 - 66:12]
-// CHECK: 65:7: MemberRefExpr=first:2:23 Extent=[7:10 - 65:12]
-// CHECK: 64:7: MemberRefExpr=first:2:23 Extent=[7:10 - 64:12]
-// CHECK: 63:7: MemberRefExpr=first:2:23 Extent=[7:10 - 63:12]
-// CHECK: 62:7: MemberRefExpr=first:2:23 Extent=[7:10 - 62:12]
-// CHECK: 61:7: MemberRefExpr=first:2:23 Extent=[7:10 - 61:12]
-// CHECK: 60:7: MemberRefExpr=first:2:23 Extent=[7:10 - 60:12]
-// CHECK: 59:7: MemberRefExpr=first:2:23 Extent=[7:10 - 59:12]
-// CHECK: 58:7: MemberRefExpr=first:2:23 Extent=[7:10 - 58:12]
-// CHECK: 57:7: MemberRefExpr=first:2:23 Extent=[7:10 - 57:12]
-// CHECK: 56:7: MemberRefExpr=first:2:23 Extent=[7:10 - 56:12]
-// CHECK: 55:7: MemberRefExpr=first:2:23 Extent=[7:10 - 55:12]
-// CHECK: 54:7: MemberRefExpr=first:2:23 Extent=[7:10 - 54:12]
-// CHECK: 53:7: MemberRefExpr=first:2:23 Extent=[7:10 - 53:12]
-// CHECK: 52:7: MemberRefExpr=first:2:23 Extent=[7:10 - 52:12]
-// CHECK: 51:7: MemberRefExpr=first:2:23 Extent=[7:10 - 51:12]
-// CHECK: 50:7: MemberRefExpr=first:2:23 Extent=[7:10 - 50:12]
-// CHECK: 49:7: MemberRefExpr=first:2:23 Extent=[7:10 - 49:12]
-// CHECK: 48:7: MemberRefExpr=first:2:23 Extent=[7:10 - 48:12]
-// CHECK: 47:7: MemberRefExpr=first:2:23 Extent=[7:10 - 47:12]
-// CHECK: 46:7: MemberRefExpr=first:2:23 Extent=[7:10 - 46:12]
-// CHECK: 45:7: MemberRefExpr=first:2:23 Extent=[7:10 - 45:12]
-// CHECK: 44:7: MemberRefExpr=first:2:23 Extent=[7:10 - 44:12]
-// CHECK: 43:7: MemberRefExpr=first:2:23 Extent=[7:10 - 43:12]
-// CHECK: 42:7: MemberRefExpr=first:2:23 Extent=[7:10 - 42:12]
-// CHECK: 41:7: MemberRefExpr=first:2:23 Extent=[7:10 - 41:12]
-// CHECK: 40:7: MemberRefExpr=first:2:23 Extent=[7:10 - 40:12]
-// CHECK: 39:7: MemberRefExpr=first:2:23 Extent=[7:10 - 39:12]
-// CHECK: 38:7: MemberRefExpr=first:2:23 Extent=[7:10 - 38:12]
-// CHECK: 37:7: MemberRefExpr=first:2:23 Extent=[7:10 - 37:12]
-// CHECK: 36:7: MemberRefExpr=first:2:23 Extent=[7:10 - 36:12]
-// CHECK: 35:7: MemberRefExpr=first:2:23 Extent=[7:10 - 35:12]
-// CHECK: 34:7: MemberRefExpr=first:2:23 Extent=[7:10 - 34:12]
-// CHECK: 33:7: MemberRefExpr=first:2:23 Extent=[7:10 - 33:12]
-// CHECK: 32:7: MemberRefExpr=first:2:23 Extent=[7:10 - 32:12]
-// CHECK: 31:7: MemberRefExpr=first:2:23 Extent=[7:10 - 31:12]
-// CHECK: 30:7: MemberRefExpr=first:2:23 Extent=[7:10 - 30:12]
-// CHECK: 29:7: MemberRefExpr=first:2:23 Extent=[7:10 - 29:12]
-// CHECK: 28:7: MemberRefExpr=first:2:23 Extent=[7:10 - 28:12]
-// CHECK: 27:7: MemberRefExpr=first:2:23 Extent=[7:10 - 27:12]
-// CHECK: 26:7: MemberRefExpr=first:2:23 Extent=[7:10 - 26:12]
-// CHECK: 25:7: MemberRefExpr=first:2:23 Extent=[7:10 - 25:12]
-// CHECK: 24:7: MemberRefExpr=first:2:23 Extent=[7:10 - 24:12]
-// CHECK: 23:7: MemberRefExpr=first:2:23 Extent=[7:10 - 23:12]
-// CHECK: 22:7: MemberRefExpr=first:2:23 Extent=[7:10 - 22:12]
-// CHECK: 21:7: MemberRefExpr=first:2:23 Extent=[7:10 - 21:12]
-// CHECK: 20:7: MemberRefExpr=first:2:23 Extent=[7:10 - 20:12]
-// CHECK: 19:7: MemberRefExpr=first:2:23 Extent=[7:10 - 19:12]
-// CHECK: 18:7: MemberRefExpr=first:2:23 Extent=[7:10 - 18:12]
-// CHECK: 17:7: MemberRefExpr=first:2:23 Extent=[7:10 - 17:12]
-// CHECK: 16:7: MemberRefExpr=first:2:23 Extent=[7:10 - 16:12]
-// CHECK: 15:7: MemberRefExpr=first:2:23 Extent=[7:10 - 15:12]
-// CHECK: 14:7: MemberRefExpr=first:2:23 Extent=[7:10 - 14:12]
-// CHECK: 13:7: MemberRefExpr=first:2:23 Extent=[7:10 - 13:12]
-// CHECK: 12:7: MemberRefExpr=first:2:23 Extent=[7:10 - 12:12]
-// CHECK: 11:7: MemberRefExpr=first:2:23 Extent=[7:11 - 11:12]
-// CHECK: 10:7: MemberRefExpr=first:2:23 Extent=[7:12 - 10:12]
-// CHECK: 9:7: MemberRefExpr=first:2:23 Extent=[7:13 - 9:12]
-// CHECK: 8:7: MemberRefExpr=first:2:23 Extent=[7:14 - 8:12]
-// CHECK: 7:27: MemberRefExpr=first:2:23 Extent=[7:15 - 7:32]
-// CHECK: 7:19: MemberRefExpr=first:2:23 Extent=[7:16 - 7:24]
+// CHECK: 123:7: MemberRefExpr=x:3:7 SingleRefName=[123:7 - 123:8] RefName=[123:7 - 123:8] Extent=[7:10 - 123:8]
+// CHECK: 122:7: MemberRefExpr=first:2:23 SingleRefName=[122:7 - 122:12] RefName=[122:7 - 122:12] Extent=[7:10 - 122:12]
+// CHECK: 121:7: MemberRefExpr=first:2:23 SingleRefName=[121:7 - 121:12] RefName=[121:7 - 121:12] Extent=[7:10 - 121:12]
+// CHECK: 120:7: MemberRefExpr=first:2:23 SingleRefName=[120:7 - 120:12] RefName=[120:7 - 120:12] Extent=[7:10 - 120:12]
+// CHECK: 119:7: MemberRefExpr=first:2:23 SingleRefName=[119:7 - 119:12] RefName=[119:7 - 119:12] Extent=[7:10 - 119:12]
+// CHECK: 118:7: MemberRefExpr=first:2:23 SingleRefName=[118:7 - 118:12] RefName=[118:7 - 118:12] Extent=[7:10 - 118:12]
+// CHECK: 117:7: MemberRefExpr=first:2:23 SingleRefName=[117:7 - 117:12] RefName=[117:7 - 117:12] Extent=[7:10 - 117:12]
+// CHECK: 116:7: MemberRefExpr=first:2:23 SingleRefName=[116:7 - 116:12] RefName=[116:7 - 116:12] Extent=[7:10 - 116:12]
+// CHECK: 115:7: MemberRefExpr=first:2:23 SingleRefName=[115:7 - 115:12] RefName=[115:7 - 115:12] Extent=[7:10 - 115:12]
+// CHECK: 114:7: MemberRefExpr=first:2:23 SingleRefName=[114:7 - 114:12] RefName=[114:7 - 114:12] Extent=[7:10 - 114:12]
+// CHECK: 113:7: MemberRefExpr=first:2:23 SingleRefName=[113:7 - 113:12] RefName=[113:7 - 113:12] Extent=[7:10 - 113:12]
+// CHECK: 112:7: MemberRefExpr=first:2:23 SingleRefName=[112:7 - 112:12] RefName=[112:7 - 112:12] Extent=[7:10 - 112:12]
+// CHECK: 111:7: MemberRefExpr=first:2:23 SingleRefName=[111:7 - 111:12] RefName=[111:7 - 111:12] Extent=[7:10 - 111:12]
+// CHECK: 110:7: MemberRefExpr=first:2:23 SingleRefName=[110:7 - 110:12] RefName=[110:7 - 110:12] Extent=[7:10 - 110:12]
+// CHECK: 109:7: MemberRefExpr=first:2:23 SingleRefName=[109:7 - 109:12] RefName=[109:7 - 109:12] Extent=[7:10 - 109:12]
+// CHECK: 108:7: MemberRefExpr=first:2:23 SingleRefName=[108:7 - 108:12] RefName=[108:7 - 108:12] Extent=[7:10 - 108:12]
+// CHECK: 107:7: MemberRefExpr=first:2:23 SingleRefName=[107:7 - 107:12] RefName=[107:7 - 107:12] Extent=[7:10 - 107:12]
+// CHECK: 106:7: MemberRefExpr=first:2:23 SingleRefName=[106:7 - 106:12] RefName=[106:7 - 106:12] Extent=[7:10 - 106:12]
+// CHECK: 105:7: MemberRefExpr=first:2:23 SingleRefName=[105:7 - 105:12] RefName=[105:7 - 105:12] Extent=[7:10 - 105:12]
+// CHECK: 104:7: MemberRefExpr=first:2:23 SingleRefName=[104:7 - 104:12] RefName=[104:7 - 104:12] Extent=[7:10 - 104:12]
+// CHECK: 103:7: MemberRefExpr=first:2:23 SingleRefName=[103:7 - 103:12] RefName=[103:7 - 103:12] Extent=[7:10 - 103:12]
+// CHECK: 102:7: MemberRefExpr=first:2:23 SingleRefName=[102:7 - 102:12] RefName=[102:7 - 102:12] Extent=[7:10 - 102:12]
+// CHECK: 101:7: MemberRefExpr=first:2:23 SingleRefName=[101:7 - 101:12] RefName=[101:7 - 101:12] Extent=[7:10 - 101:12]
+// CHECK: 100:7: MemberRefExpr=first:2:23 SingleRefName=[100:7 - 100:12] RefName=[100:7 - 100:12] Extent=[7:10 - 100:12]
+// CHECK: 99:7: MemberRefExpr=first:2:23 SingleRefName=[99:7 - 99:12] RefName=[99:7 - 99:12] Extent=[7:10 - 99:12]
+// CHECK: 98:7: MemberRefExpr=first:2:23 SingleRefName=[98:7 - 98:12] RefName=[98:7 - 98:12] Extent=[7:10 - 98:12]
+// CHECK: 97:7: MemberRefExpr=first:2:23 SingleRefName=[97:7 - 97:12] RefName=[97:7 - 97:12] Extent=[7:10 - 97:12]
+// CHECK: 96:7: MemberRefExpr=first:2:23 SingleRefName=[96:7 - 96:12] RefName=[96:7 - 96:12] Extent=[7:10 - 96:12]
+// CHECK: 95:7: MemberRefExpr=first:2:23 SingleRefName=[95:7 - 95:12] RefName=[95:7 - 95:12] Extent=[7:10 - 95:12]
+// CHECK: 94:7: MemberRefExpr=first:2:23 SingleRefName=[94:7 - 94:12] RefName=[94:7 - 94:12] Extent=[7:10 - 94:12]
+// CHECK: 93:7: MemberRefExpr=first:2:23 SingleRefName=[93:7 - 93:12] RefName=[93:7 - 93:12] Extent=[7:10 - 93:12]
+// CHECK: 92:7: MemberRefExpr=first:2:23 SingleRefName=[92:7 - 92:12] RefName=[92:7 - 92:12] Extent=[7:10 - 92:12]
+// CHECK: 91:7: MemberRefExpr=first:2:23 SingleRefName=[91:7 - 91:12] RefName=[91:7 - 91:12] Extent=[7:10 - 91:12]
+// CHECK: 90:7: MemberRefExpr=first:2:23 SingleRefName=[90:7 - 90:12] RefName=[90:7 - 90:12] Extent=[7:10 - 90:12]
+// CHECK: 89:7: MemberRefExpr=first:2:23 SingleRefName=[89:7 - 89:12] RefName=[89:7 - 89:12] Extent=[7:10 - 89:12]
+// CHECK: 88:7: MemberRefExpr=first:2:23 SingleRefName=[88:7 - 88:12] RefName=[88:7 - 88:12] Extent=[7:10 - 88:12]
+// CHECK: 87:7: MemberRefExpr=first:2:23 SingleRefName=[87:7 - 87:12] RefName=[87:7 - 87:12] Extent=[7:10 - 87:12]
+// CHECK: 86:7: MemberRefExpr=first:2:23 SingleRefName=[86:7 - 86:12] RefName=[86:7 - 86:12] Extent=[7:10 - 86:12]
+// CHECK: 85:7: MemberRefExpr=first:2:23 SingleRefName=[85:7 - 85:12] RefName=[85:7 - 85:12] Extent=[7:10 - 85:12]
+// CHECK: 84:7: MemberRefExpr=first:2:23 SingleRefName=[84:7 - 84:12] RefName=[84:7 - 84:12] Extent=[7:10 - 84:12]
+// CHECK: 83:7: MemberRefExpr=first:2:23 SingleRefName=[83:7 - 83:12] RefName=[83:7 - 83:12] Extent=[7:10 - 83:12]
+// CHECK: 82:7: MemberRefExpr=first:2:23 SingleRefName=[82:7 - 82:12] RefName=[82:7 - 82:12] Extent=[7:10 - 82:12]
+// CHECK: 81:7: MemberRefExpr=first:2:23 SingleRefName=[81:7 - 81:12] RefName=[81:7 - 81:12] Extent=[7:10 - 81:12]
+// CHECK: 80:7: MemberRefExpr=first:2:23 SingleRefName=[80:7 - 80:12] RefName=[80:7 - 80:12] Extent=[7:10 - 80:12]
+// CHECK: 79:7: MemberRefExpr=first:2:23 SingleRefName=[79:7 - 79:12] RefName=[79:7 - 79:12] Extent=[7:10 - 79:12]
+// CHECK: 78:7: MemberRefExpr=first:2:23 SingleRefName=[78:7 - 78:12] RefName=[78:7 - 78:12] Extent=[7:10 - 78:12]
+// CHECK: 77:7: MemberRefExpr=first:2:23 SingleRefName=[77:7 - 77:12] RefName=[77:7 - 77:12] Extent=[7:10 - 77:12]
+// CHECK: 76:7: MemberRefExpr=first:2:23 SingleRefName=[76:7 - 76:12] RefName=[76:7 - 76:12] Extent=[7:10 - 76:12]
+// CHECK: 75:7: MemberRefExpr=first:2:23 SingleRefName=[75:7 - 75:12] RefName=[75:7 - 75:12] Extent=[7:10 - 75:12]
+// CHECK: 74:7: MemberRefExpr=first:2:23 SingleRefName=[74:7 - 74:12] RefName=[74:7 - 74:12] Extent=[7:10 - 74:12]
+// CHECK: 73:7: MemberRefExpr=first:2:23 SingleRefName=[73:7 - 73:12] RefName=[73:7 - 73:12] Extent=[7:10 - 73:12]
+// CHECK: 72:7: MemberRefExpr=first:2:23 SingleRefName=[72:7 - 72:12] RefName=[72:7 - 72:12] Extent=[7:10 - 72:12]
+// CHECK: 71:7: MemberRefExpr=first:2:23 SingleRefName=[71:7 - 71:12] RefName=[71:7 - 71:12] Extent=[7:10 - 71:12]
+// CHECK: 70:7: MemberRefExpr=first:2:23 SingleRefName=[70:7 - 70:12] RefName=[70:7 - 70:12] Extent=[7:10 - 70:12]
+// CHECK: 69:7: MemberRefExpr=first:2:23 SingleRefName=[69:7 - 69:12] RefName=[69:7 - 69:12] Extent=[7:10 - 69:12]
+// CHECK: 68:7: MemberRefExpr=first:2:23 SingleRefName=[68:7 - 68:12] RefName=[68:7 - 68:12] Extent=[7:10 - 68:12]
+// CHECK: 67:7: MemberRefExpr=first:2:23 SingleRefName=[67:7 - 67:12] RefName=[67:7 - 67:12] Extent=[7:10 - 67:12]
+// CHECK: 66:7: MemberRefExpr=first:2:23 SingleRefName=[66:7 - 66:12] RefName=[66:7 - 66:12] Extent=[7:10 - 66:12]
+// CHECK: 65:7: MemberRefExpr=first:2:23 SingleRefName=[65:7 - 65:12] RefName=[65:7 - 65:12] Extent=[7:10 - 65:12]
+// CHECK: 64:7: MemberRefExpr=first:2:23 SingleRefName=[64:7 - 64:12] RefName=[64:7 - 64:12] Extent=[7:10 - 64:12]
+// CHECK: 63:7: MemberRefExpr=first:2:23 SingleRefName=[63:7 - 63:12] RefName=[63:7 - 63:12] Extent=[7:10 - 63:12]
+// CHECK: 62:7: MemberRefExpr=first:2:23 SingleRefName=[62:7 - 62:12] RefName=[62:7 - 62:12] Extent=[7:10 - 62:12]
+// CHECK: 61:7: MemberRefExpr=first:2:23 SingleRefName=[61:7 - 61:12] RefName=[61:7 - 61:12] Extent=[7:10 - 61:12]
+// CHECK: 60:7: MemberRefExpr=first:2:23 SingleRefName=[60:7 - 60:12] RefName=[60:7 - 60:12] Extent=[7:10 - 60:12]
+// CHECK: 59:7: MemberRefExpr=first:2:23 SingleRefName=[59:7 - 59:12] RefName=[59:7 - 59:12] Extent=[7:10 - 59:12]
+// CHECK: 58:7: MemberRefExpr=first:2:23 SingleRefName=[58:7 - 58:12] RefName=[58:7 - 58:12] Extent=[7:10 - 58:12]
+// CHECK: 57:7: MemberRefExpr=first:2:23 SingleRefName=[57:7 - 57:12] RefName=[57:7 - 57:12] Extent=[7:10 - 57:12]
+// CHECK: 56:7: MemberRefExpr=first:2:23 SingleRefName=[56:7 - 56:12] RefName=[56:7 - 56:12] Extent=[7:10 - 56:12]
+// CHECK: 55:7: MemberRefExpr=first:2:23 SingleRefName=[55:7 - 55:12] RefName=[55:7 - 55:12] Extent=[7:10 - 55:12]
+// CHECK: 54:7: MemberRefExpr=first:2:23 SingleRefName=[54:7 - 54:12] RefName=[54:7 - 54:12] Extent=[7:10 - 54:12]
+// CHECK: 53:7: MemberRefExpr=first:2:23 SingleRefName=[53:7 - 53:12] RefName=[53:7 - 53:12] Extent=[7:10 - 53:12]
+// CHECK: 52:7: MemberRefExpr=first:2:23 SingleRefName=[52:7 - 52:12] RefName=[52:7 - 52:12] Extent=[7:10 - 52:12]
+// CHECK: 51:7: MemberRefExpr=first:2:23 SingleRefName=[51:7 - 51:12] RefName=[51:7 - 51:12] Extent=[7:10 - 51:12]
+// CHECK: 50:7: MemberRefExpr=first:2:23 SingleRefName=[50:7 - 50:12] RefName=[50:7 - 50:12] Extent=[7:10 - 50:12]
+// CHECK: 49:7: MemberRefExpr=first:2:23 SingleRefName=[49:7 - 49:12] RefName=[49:7 - 49:12] Extent=[7:10 - 49:12]
+// CHECK: 48:7: MemberRefExpr=first:2:23 SingleRefName=[48:7 - 48:12] RefName=[48:7 - 48:12] Extent=[7:10 - 48:12]
+// CHECK: 47:7: MemberRefExpr=first:2:23 SingleRefName=[47:7 - 47:12] RefName=[47:7 - 47:12] Extent=[7:10 - 47:12]
+// CHECK: 46:7: MemberRefExpr=first:2:23 SingleRefName=[46:7 - 46:12] RefName=[46:7 - 46:12] Extent=[7:10 - 46:12]
+// CHECK: 45:7: MemberRefExpr=first:2:23 SingleRefName=[45:7 - 45:12] RefName=[45:7 - 45:12] Extent=[7:10 - 45:12]
+// CHECK: 44:7: MemberRefExpr=first:2:23 SingleRefName=[44:7 - 44:12] RefName=[44:7 - 44:12] Extent=[7:10 - 44:12]
+// CHECK: 43:7: MemberRefExpr=first:2:23 SingleRefName=[43:7 - 43:12] RefName=[43:7 - 43:12] Extent=[7:10 - 43:12]
+// CHECK: 42:7: MemberRefExpr=first:2:23 SingleRefName=[42:7 - 42:12] RefName=[42:7 - 42:12] Extent=[7:10 - 42:12]
+// CHECK: 41:7: MemberRefExpr=first:2:23 SingleRefName=[41:7 - 41:12] RefName=[41:7 - 41:12] Extent=[7:10 - 41:12]
+// CHECK: 40:7: MemberRefExpr=first:2:23 SingleRefName=[40:7 - 40:12] RefName=[40:7 - 40:12] Extent=[7:10 - 40:12]
+// CHECK: 39:7: MemberRefExpr=first:2:23 SingleRefName=[39:7 - 39:12] RefName=[39:7 - 39:12] Extent=[7:10 - 39:12]
+// CHECK: 38:7: MemberRefExpr=first:2:23 SingleRefName=[38:7 - 38:12] RefName=[38:7 - 38:12] Extent=[7:10 - 38:12]
+// CHECK: 37:7: MemberRefExpr=first:2:23 SingleRefName=[37:7 - 37:12] RefName=[37:7 - 37:12] Extent=[7:10 - 37:12]
+// CHECK: 36:7: MemberRefExpr=first:2:23 SingleRefName=[36:7 - 36:12] RefName=[36:7 - 36:12] Extent=[7:10 - 36:12]
+// CHECK: 35:7: MemberRefExpr=first:2:23 SingleRefName=[35:7 - 35:12] RefName=[35:7 - 35:12] Extent=[7:10 - 35:12]
+// CHECK: 34:7: MemberRefExpr=first:2:23 SingleRefName=[34:7 - 34:12] RefName=[34:7 - 34:12] Extent=[7:10 - 34:12]
+// CHECK: 33:7: MemberRefExpr=first:2:23 SingleRefName=[33:7 - 33:12] RefName=[33:7 - 33:12] Extent=[7:10 - 33:12]
+// CHECK: 32:7: MemberRefExpr=first:2:23 SingleRefName=[32:7 - 32:12] RefName=[32:7 - 32:12] Extent=[7:10 - 32:12]
+// CHECK: 31:7: MemberRefExpr=first:2:23 SingleRefName=[31:7 - 31:12] RefName=[31:7 - 31:12] Extent=[7:10 - 31:12]
+// CHECK: 30:7: MemberRefExpr=first:2:23 SingleRefName=[30:7 - 30:12] RefName=[30:7 - 30:12] Extent=[7:10 - 30:12]
+// CHECK: 29:7: MemberRefExpr=first:2:23 SingleRefName=[29:7 - 29:12] RefName=[29:7 - 29:12] Extent=[7:10 - 29:12]
+// CHECK: 28:7: MemberRefExpr=first:2:23 SingleRefName=[28:7 - 28:12] RefName=[28:7 - 28:12] Extent=[7:10 - 28:12]
+// CHECK: 27:7: MemberRefExpr=first:2:23 SingleRefName=[27:7 - 27:12] RefName=[27:7 - 27:12] Extent=[7:10 - 27:12]
+// CHECK: 26:7: MemberRefExpr=first:2:23 SingleRefName=[26:7 - 26:12] RefName=[26:7 - 26:12] Extent=[7:10 - 26:12]
+// CHECK: 25:7: MemberRefExpr=first:2:23 SingleRefName=[25:7 - 25:12] RefName=[25:7 - 25:12] Extent=[7:10 - 25:12]
+// CHECK: 24:7: MemberRefExpr=first:2:23 SingleRefName=[24:7 - 24:12] RefName=[24:7 - 24:12] Extent=[7:10 - 24:12]
+// CHECK: 23:7: MemberRefExpr=first:2:23 SingleRefName=[23:7 - 23:12] RefName=[23:7 - 23:12] Extent=[7:10 - 23:12]
+// CHECK: 22:7: MemberRefExpr=first:2:23 SingleRefName=[22:7 - 22:12] RefName=[22:7 - 22:12] Extent=[7:10 - 22:12]
+// CHECK: 21:7: MemberRefExpr=first:2:23 SingleRefName=[21:7 - 21:12] RefName=[21:7 - 21:12] Extent=[7:10 - 21:12]
+// CHECK: 20:7: MemberRefExpr=first:2:23 SingleRefName=[20:7 - 20:12] RefName=[20:7 - 20:12] Extent=[7:10 - 20:12]
+// CHECK: 19:7: MemberRefExpr=first:2:23 SingleRefName=[19:7 - 19:12] RefName=[19:7 - 19:12] Extent=[7:10 - 19:12]
+// CHECK: 18:7: MemberRefExpr=first:2:23 SingleRefName=[18:7 - 18:12] RefName=[18:7 - 18:12] Extent=[7:10 - 18:12]
+// CHECK: 17:7: MemberRefExpr=first:2:23 SingleRefName=[17:7 - 17:12] RefName=[17:7 - 17:12] Extent=[7:10 - 17:12]
+// CHECK: 16:7: MemberRefExpr=first:2:23 SingleRefName=[16:7 - 16:12] RefName=[16:7 - 16:12] Extent=[7:10 - 16:12]
+// CHECK: 15:7: MemberRefExpr=first:2:23 SingleRefName=[15:7 - 15:12] RefName=[15:7 - 15:12] Extent=[7:10 - 15:12]
+// CHECK: 14:7: MemberRefExpr=first:2:23 SingleRefName=[14:7 - 14:12] RefName=[14:7 - 14:12] Extent=[7:10 - 14:12]
+// CHECK: 13:7: MemberRefExpr=first:2:23 SingleRefName=[13:7 - 13:12] RefName=[13:7 - 13:12] Extent=[7:10 - 13:12]
+// CHECK: 12:7: MemberRefExpr=first:2:23 SingleRefName=[12:7 - 12:12] RefName=[12:7 - 12:12] Extent=[7:10 - 12:12]
+// CHECK: 11:7: MemberRefExpr=first:2:23 SingleRefName=[11:7 - 11:12] RefName=[11:7 - 11:12] Extent=[7:11 - 11:12]
+// CHECK: 10:7: MemberRefExpr=first:2:23 SingleRefName=[10:7 - 10:12] RefName=[10:7 - 10:12] Extent=[7:12 - 10:12]
+// CHECK: 9:7: MemberRefExpr=first:2:23 SingleRefName=[9:7 - 9:12] RefName=[9:7 - 9:12] Extent=[7:13 - 9:12]
+// CHECK: 8:7: MemberRefExpr=first:2:23 SingleRefName=[8:7 - 8:12] RefName=[8:7 - 8:12] Extent=[7:14 - 8:12]
+// CHECK: 7:27: MemberRefExpr=first:2:23 SingleRefName=[7:27 - 7:32] RefName=[7:27 - 7:32] Extent=[7:15 - 7:32]
+// CHECK: 7:19: MemberRefExpr=first:2:23 SingleRefName=[7:19 - 7:24] RefName=[7:19 - 7:24] Extent=[7:16 - 7:24]
// CHECK: 7:16: DeclRefExpr=s:6:42 Extent=[7:16 - 7:17]
// RUN: c-index-test -test-annotate-tokens=%s:1:1:124:1 %s | FileCheck -check-prefix=CHECK-tokens %s
Removed: cfe/branches/exception-handling-rewrite/test/Sema/align-arm-apcs.c
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/test/Sema/align-arm-apcs.c?rev=136041&view=auto
==============================================================================
--- cfe/branches/exception-handling-rewrite/test/Sema/align-arm-apcs.c (original)
+++ cfe/branches/exception-handling-rewrite/test/Sema/align-arm-apcs.c (removed)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -triple arm-unknown-unknown -target-abi apcs-gnu -fsyntax-only -verify %s
-
-struct s0 { double f0; int f1; };
-char chk0[__alignof__(struct s0) == 4 ? 1 : -1];
Propchange: cfe/branches/exception-handling-rewrite/test/SemaCXX/warn-unreachable.cpp
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jul 25 20:36:54 2011
@@ -1,2 +1,2 @@
/cfe/branches/type-system-rewrite/test/SemaCXX/warn-unreachable.cpp:134693-134817
-/cfe/trunk/test/SemaCXX/warn-unreachable.cpp:121961
+/cfe/trunk/test/SemaCXX/warn-unreachable.cpp:121961,135899-136040
Modified: cfe/branches/exception-handling-rewrite/tools/c-index-test/c-index-test.c
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/tools/c-index-test/c-index-test.c?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/tools/c-index-test/c-index-test.c (original)
+++ cfe/branches/exception-handling-rewrite/tools/c-index-test/c-index-test.c Mon Jul 25 20:36:54 2011
@@ -158,6 +158,21 @@
/* Pretty-printing. */
/******************************************************************************/
+static void PrintRange(CXSourceRange R, const char *str) {
+ CXFile begin_file, end_file;
+ unsigned begin_line, begin_column, end_line, end_column;
+
+ clang_getSpellingLocation(clang_getRangeStart(R),
+ &begin_file, &begin_line, &begin_column, 0);
+ clang_getSpellingLocation(clang_getRangeEnd(R),
+ &end_file, &end_line, &end_column, 0);
+ if (!begin_file || !end_file)
+ return;
+
+ printf(" %s=", str);
+ PrintExtent(stdout, begin_line, begin_column, end_line, end_column);
+}
+
int want_display_name = 0;
static void PrintCursor(CXTranslationUnit TU, CXCursor Cursor) {
@@ -173,6 +188,9 @@
CXCursor SpecializationOf;
CXCursor *overridden;
unsigned num_overridden;
+ unsigned RefNameRangeNr;
+ CXSourceRange CursorExtent;
+ CXSourceRange RefNameRange;
ks = clang_getCursorKindSpelling(Cursor.kind);
string = want_display_name? clang_getCursorDisplayName(Cursor)
@@ -288,6 +306,26 @@
if (clang_isFileMultipleIncludeGuarded(TU, File))
printf(" [multi-include guarded]");
}
+
+ CursorExtent = clang_getCursorExtent(Cursor);
+ RefNameRange = clang_getCursorReferenceNameRange(Cursor,
+ CXNameRange_WantQualifier
+ | CXNameRange_WantSinglePiece
+ | CXNameRange_WantTemplateArgs,
+ 0);
+ if (!clang_equalRanges(CursorExtent, RefNameRange))
+ PrintRange(RefNameRange, "SingleRefName");
+
+ for (RefNameRangeNr = 0; 1; RefNameRangeNr++) {
+ RefNameRange = clang_getCursorReferenceNameRange(Cursor,
+ CXNameRange_WantQualifier
+ | CXNameRange_WantTemplateArgs,
+ RefNameRangeNr);
+ if (clang_equalRanges(clang_getNullRange(), RefNameRange))
+ break;
+ if (!clang_equalRanges(CursorExtent, RefNameRange))
+ PrintRange(RefNameRange, "RefName");
+ }
}
}
@@ -405,18 +443,7 @@
static void PrintCursorExtent(CXCursor C) {
CXSourceRange extent = clang_getCursorExtent(C);
- CXFile begin_file, end_file;
- unsigned begin_line, begin_column, end_line, end_column;
-
- clang_getSpellingLocation(clang_getRangeStart(extent),
- &begin_file, &begin_line, &begin_column, 0);
- clang_getSpellingLocation(clang_getRangeEnd(extent),
- &end_file, &end_line, &end_column, 0);
- if (!begin_file || !end_file)
- return;
-
- printf(" Extent=");
- PrintExtent(stdout, begin_line, begin_column, end_line, end_column);
+ PrintRange(extent, "Extent");
}
/* Data used by all of the visitors. */
Modified: cfe/branches/exception-handling-rewrite/tools/driver/cc1as_main.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/tools/driver/cc1as_main.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/tools/driver/cc1as_main.cpp (original)
+++ cfe/branches/exception-handling-rewrite/tools/driver/cc1as_main.cpp Mon Jul 25 20:36:54 2011
@@ -34,8 +34,8 @@
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/MC/TargetAsmBackend.h"
-#include "llvm/MC/TargetAsmParser.h"
+#include "llvm/MC/MCAsmBackend.h"
+#include "llvm/MC/MCTargetAsmParser.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FormattedStream.h"
#include "llvm/Support/ErrorHandling.h"
@@ -299,33 +299,34 @@
MCInstPrinter *IP =
TheTarget->createMCInstPrinter(Opts.OutputAsmVariant, *MAI);
MCCodeEmitter *CE = 0;
- TargetAsmBackend *TAB = 0;
+ MCAsmBackend *MAB = 0;
if (Opts.ShowEncoding) {
- CE = TheTarget->createCodeEmitter(*TM->getInstrInfo(), STI, Ctx);
- TAB = TheTarget->createAsmBackend(Opts.Triple);
+ CE = TheTarget->createMCCodeEmitter(*TM->getInstrInfo(), STI, Ctx);
+ MAB = TheTarget->createMCAsmBackend(Opts.Triple);
}
Str.reset(TheTarget->createAsmStreamer(Ctx, *Out, /*asmverbose*/true,
/*useLoc*/ true,
- /*useCFI*/ true, IP, CE, TAB,
+ /*useCFI*/ true, IP, CE, MAB,
Opts.ShowInst));
} else if (Opts.OutputType == AssemblerInvocation::FT_Null) {
Str.reset(createNullStreamer(Ctx));
} else {
assert(Opts.OutputType == AssemblerInvocation::FT_Obj &&
"Invalid file type!");
- MCCodeEmitter *CE = TheTarget->createCodeEmitter(*TM->getInstrInfo(),
- STI, Ctx);
- TargetAsmBackend *TAB = TheTarget->createAsmBackend(Opts.Triple);
- Str.reset(TheTarget->createObjectStreamer(Opts.Triple, Ctx, *TAB, *Out,
- CE, Opts.RelaxAll,
- Opts.NoExecStack));
+ MCCodeEmitter *CE = TheTarget->createMCCodeEmitter(*TM->getInstrInfo(),
+ STI, Ctx);
+ MCAsmBackend *MAB = TheTarget->createMCAsmBackend(Opts.Triple);
+ Str.reset(TheTarget->createMCObjectStreamer(Opts.Triple, Ctx, *MAB, *Out,
+ CE, Opts.RelaxAll,
+ Opts.NoExecStack));
Str.get()->InitSections();
}
OwningPtr<MCAsmParser> Parser(createMCAsmParser(*TheTarget, SrcMgr, Ctx,
*Str.get(), *MAI));
- OwningPtr<TargetAsmParser>
- TAP(TheTarget->createAsmParser(const_cast<MCSubtargetInfo&>(STI), *Parser));
+ OwningPtr<MCTargetAsmParser>
+ TAP(TheTarget->createMCAsmParser(const_cast<MCSubtargetInfo&>(STI),
+ *Parser));
if (!TAP) {
Diags.Report(diag::err_target_unknown_triple) << Opts.Triple;
return false;
@@ -363,10 +364,7 @@
// Initialize targets and assembly printers/parsers.
InitializeAllTargetInfos();
- // FIXME: We shouldn't need to initialize the Target(Machine)s.
- InitializeAllTargets();
InitializeAllTargetMCs();
- InitializeAllAsmPrinters();
InitializeAllAsmParsers();
// Construct our diagnostic client.
Modified: cfe/branches/exception-handling-rewrite/tools/libclang/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/tools/libclang/CIndex.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/tools/libclang/CIndex.cpp (original)
+++ cfe/branches/exception-handling-rewrite/tools/libclang/CIndex.cpp Mon Jul 25 20:36:54 2011
@@ -117,7 +117,7 @@
// location accordingly.
SourceLocation EndLoc = R.getEnd();
if (EndLoc.isValid() && EndLoc.isMacroID())
- EndLoc = SM.getInstantiationRange(EndLoc).second;
+ EndLoc = SM.getExpansionRange(EndLoc).second;
if (R.isTokenRange() && !EndLoc.isInvalid() && EndLoc.isFileID()) {
unsigned Length = Lexer::MeasureTokenLength(EndLoc, SM, LangOpts);
EndLoc = EndLoc.getFileLocWithOffset(Length);
@@ -439,7 +439,7 @@
// FIXME: My kingdom for a proper binary search approach to finding
// cursors!
std::pair<FileID, unsigned> Location
- = AU->getSourceManager().getDecomposedInstantiationLoc(
+ = AU->getSourceManager().getDecomposedExpansionLoc(
RegionOfInterest.getBegin());
if (Location.first != AU->getSourceManager().getMainFileID())
OnlyLocalDecls = false;
@@ -463,9 +463,9 @@
// Find the file in which the region of interest lands.
SourceManager &SM = AU->getSourceManager();
std::pair<FileID, unsigned> Begin
- = SM.getDecomposedInstantiationLoc(RegionOfInterest.getBegin());
+ = SM.getDecomposedExpansionLoc(RegionOfInterest.getBegin());
std::pair<FileID, unsigned> End
- = SM.getDecomposedInstantiationLoc(RegionOfInterest.getEnd());
+ = SM.getDecomposedExpansionLoc(RegionOfInterest.getEnd());
// The region of interest spans files; we have to walk everything.
if (Begin.first != End.first)
@@ -477,8 +477,7 @@
// Build the mapping from files to sets of preprocessed entities.
for (; First != Last; ++First) {
std::pair<FileID, unsigned> P
- = SM.getDecomposedInstantiationLoc(
- (*First)->getSourceRange().getBegin());
+ = SM.getDecomposedExpansionLoc((*First)->getSourceRange().getBegin());
ByFileMap[P.first].push_back(*First);
}
@@ -2325,6 +2324,47 @@
return result;
}
+namespace {
+typedef llvm::SmallVector<SourceRange, 4> RefNamePieces;
+RefNamePieces buildPieces(unsigned NameFlags, bool IsMemberRefExpr,
+ const DeclarationNameInfo &NI,
+ const SourceRange &QLoc,
+ const ExplicitTemplateArgumentList *TemplateArgs = 0){
+ const bool WantQualifier = NameFlags & CXNameRange_WantQualifier;
+ const bool WantTemplateArgs = NameFlags & CXNameRange_WantTemplateArgs;
+ const bool WantSinglePiece = NameFlags & CXNameRange_WantSinglePiece;
+
+ const DeclarationName::NameKind Kind = NI.getName().getNameKind();
+
+ RefNamePieces Pieces;
+
+ if (WantQualifier && QLoc.isValid())
+ Pieces.push_back(QLoc);
+
+ if (Kind != DeclarationName::CXXOperatorName || IsMemberRefExpr)
+ Pieces.push_back(NI.getLoc());
+
+ if (WantTemplateArgs && TemplateArgs)
+ Pieces.push_back(SourceRange(TemplateArgs->LAngleLoc,
+ TemplateArgs->RAngleLoc));
+
+ if (Kind == DeclarationName::CXXOperatorName) {
+ Pieces.push_back(SourceLocation::getFromRawEncoding(
+ NI.getInfo().CXXOperatorName.BeginOpNameLoc));
+ Pieces.push_back(SourceLocation::getFromRawEncoding(
+ NI.getInfo().CXXOperatorName.EndOpNameLoc));
+ }
+
+ if (WantSinglePiece) {
+ SourceRange R(Pieces.front().getBegin(), Pieces.back().getEnd());
+ Pieces.clear();
+ Pieces.push_back(R);
+ }
+
+ return Pieces;
+}
+}
+
//===----------------------------------------------------------------------===//
// Misc. API hooks.
//===----------------------------------------------------------------------===//
@@ -2824,7 +2864,7 @@
const SourceManager &SM =
*static_cast<const SourceManager*>(location.ptr_data[0]);
- SourceLocation InstLoc = SM.getInstantiationLoc(Loc);
+ SourceLocation InstLoc = SM.getExpansionLoc(Loc);
// Check that the FileID is invalid on the expansion location.
// This can manifest in invalid code.
@@ -2839,9 +2879,9 @@
if (file)
*file = (void *)SM.getFileEntryForSLocEntry(sloc);
if (line)
- *line = SM.getInstantiationLineNumber(InstLoc);
+ *line = SM.getExpansionLineNumber(InstLoc);
if (column)
- *column = SM.getInstantiationColumnNumber(InstLoc);
+ *column = SM.getExpansionColumnNumber(InstLoc);
if (offset)
*offset = SM.getDecomposedLoc(InstLoc).second;
}
@@ -2865,7 +2905,7 @@
SM.getFileEntryForID(SM.getDecomposedLoc(SimpleSpellingLoc).first))
SpellLoc = SimpleSpellingLoc;
else
- SpellLoc = SM.getInstantiationLoc(SpellLoc);
+ SpellLoc = SM.getExpansionLoc(SpellLoc);
}
std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SpellLoc);
@@ -4253,6 +4293,54 @@
*endColumn = SM.getSpellingColumnNumber(Body->getRBracLoc());
}
+
+CXSourceRange clang_getCursorReferenceNameRange(CXCursor C, unsigned NameFlags,
+ unsigned PieceIndex) {
+ RefNamePieces Pieces;
+
+ switch (C.kind) {
+ case CXCursor_MemberRefExpr:
+ if (MemberExpr *E = dyn_cast<MemberExpr>(getCursorExpr(C)))
+ Pieces = buildPieces(NameFlags, true, E->getMemberNameInfo(),
+ E->getQualifierLoc().getSourceRange());
+ break;
+
+ case CXCursor_DeclRefExpr:
+ if (DeclRefExpr *E = dyn_cast<DeclRefExpr>(getCursorExpr(C)))
+ Pieces = buildPieces(NameFlags, false, E->getNameInfo(),
+ E->getQualifierLoc().getSourceRange(),
+ E->getExplicitTemplateArgsOpt());
+ break;
+
+ case CXCursor_CallExpr:
+ if (CXXOperatorCallExpr *OCE =
+ dyn_cast<CXXOperatorCallExpr>(getCursorExpr(C))) {
+ Expr *Callee = OCE->getCallee();
+ if (ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(Callee))
+ Callee = ICE->getSubExpr();
+
+ if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Callee))
+ Pieces = buildPieces(NameFlags, false, DRE->getNameInfo(),
+ DRE->getQualifierLoc().getSourceRange());
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ if (Pieces.empty()) {
+ if (PieceIndex == 0)
+ return clang_getCursorExtent(C);
+ } else if (PieceIndex < Pieces.size()) {
+ SourceRange R = Pieces[PieceIndex];
+ if (R.isValid())
+ return cxloc::translateSourceRange(getCursorContext(C), R);
+ }
+
+ return clang_getNullRange();
+}
+
void clang_enableStackTraces(void) {
llvm::sys::PrintStackTraceOnErrorSignal();
}
Modified: cfe/branches/exception-handling-rewrite/tools/libclang/CIndexUSRs.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/tools/libclang/CIndexUSRs.cpp?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/tools/libclang/CIndexUSRs.cpp (original)
+++ cfe/branches/exception-handling-rewrite/tools/libclang/CIndexUSRs.cpp Mon Jul 25 20:36:54 2011
@@ -486,7 +486,7 @@
IgnoreResults = true;
return true;
}
- L = SM.getInstantiationLoc(L);
+ L = SM.getExpansionLoc(L);
const std::pair<FileID, unsigned> &Decomposed = SM.getDecomposedLoc(L);
const FileEntry *FE = SM.getFileEntryForID(Decomposed.first);
if (FE) {
Modified: cfe/branches/exception-handling-rewrite/tools/libclang/libclang.darwin.exports
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/tools/libclang/libclang.darwin.exports?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/tools/libclang/libclang.darwin.exports (original)
+++ cfe/branches/exception-handling-rewrite/tools/libclang/libclang.darwin.exports Mon Jul 25 20:36:54 2011
@@ -2,6 +2,7 @@
_clang_CXCursorSet_insert
_clang_CXXMethod_isStatic
_clang_CXXMethod_isVirtual
+_clang_getCursorReferenceNameRange
_clang_annotateTokens
_clang_codeCompleteAt
_clang_codeCompleteGetDiagnostic
Modified: cfe/branches/exception-handling-rewrite/tools/libclang/libclang.exports
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/tools/libclang/libclang.exports?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/tools/libclang/libclang.exports (original)
+++ cfe/branches/exception-handling-rewrite/tools/libclang/libclang.exports Mon Jul 25 20:36:54 2011
@@ -2,6 +2,7 @@
clang_CXCursorSet_insert
clang_CXXMethod_isStatic
clang_CXXMethod_isVirtual
+clang_getCursorReferenceNameRange
clang_annotateTokens
clang_codeCompleteAt
clang_codeCompleteGetDiagnostic
Modified: cfe/branches/exception-handling-rewrite/www/cxx_status.html
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/www/cxx_status.html?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/www/cxx_status.html (original)
+++ cfe/branches/exception-handling-rewrite/www/cxx_status.html Mon Jul 25 20:36:54 2011
@@ -338,10 +338,10 @@
</tr>
<tr>
<td>defaulted methods</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
+ <td class="basic"></td>
+ <td class="basic"></td>
+ <td class="basic"></td>
+ <td class="basic"></td>
<td></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1717.pdf">N1717</a>
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html">N2326</a>
@@ -366,24 +366,24 @@
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2150.html">N2150</a></td>
</tr>
<tr>
- <td>virtual function safety modifications</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
+ <td>Explicit override controls</td>
+ <td class="complete" align="center">✓</td>
+ <td class="complete" align="center">✓</td>
+ <td class="complete" align="center">✓</td>
+ <td class="na"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Explicit conversion operators</td>
- <td class="complete" align="center"></td>
- <td class="basic" align="center"></td>
- <td class="basic" align="center"></td>
- <td class="broken"></td>
+ <td class="complete" align="center">✓</td>
+ <td class="complete" align="center">✓</td>
+ <td class="advanced" align="center">✗</td>
+ <td class="na">N/A</td>
<td>12.3</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a>
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2333.html">N2333</a>
- No name mangling; ASTs don't contain calls to conversion operators</td>
+ Does not implement DR899</td>
</tr>
<tr><td colspan="7" class="category">Template Modifications</td></tr>
<tr>
Modified: cfe/branches/exception-handling-rewrite/www/get_started.html
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/exception-handling-rewrite/www/get_started.html?rev=136042&r1=136041&r2=136042&view=diff
==============================================================================
--- cfe/branches/exception-handling-rewrite/www/get_started.html (original)
+++ cfe/branches/exception-handling-rewrite/www/get_started.html Mon Jul 25 20:36:54 2011
@@ -165,7 +165,7 @@
more information on other configuration options for cmake.</li>
</li>
<li>The above, if successful, will have created an LLVM.sln file in the
- llvm directory.
+ <tt>build</tt> directory.
</ul>
<li>Build Clang:</li>
<ul>
More information about the llvm-branch-commits
mailing list