llvm-project/clang/lib/AST
Richard Trieu 15b66535ca When checking the template argument list, use a copy of that list for changes
and only update the orginal list on a valid arugment list.  When checking an
individual expression template argument, and conversions are required, update
the expression in the template argument.  Since template arguments are
speculatively checked, the copying of the template argument list prevents
updating the template arguments when the list does not match the template.

Additionally, clean up the integer checking code in the template diffing code.
The code performs unneccessary conversions from APSInt to APInt.

Fixes PR21758.

This essentially reverts r224770 to recommits r224667 and r224668 with extra
changes to prevent the template instantiation problems seen in PR22006.
A test to catch the discovered problem is also added.

llvm-svn: 226983
2015-01-24 02:48:32 +00:00
..
APValue.cpp Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created. 2014-08-27 06:28:36 +00:00
ASTConsumer.cpp Sort all of Clang's files under 'lib', and fix up the broken headers 2012-12-04 09:13:33 +00:00
ASTContext.cpp AST: Don't ignore alignas on EnumDecls when calculating alignment 2015-01-21 10:54:38 +00:00
ASTDiagnostic.cpp When checking the template argument list, use a copy of that list for changes 2015-01-24 02:48:32 +00:00
ASTDumper.cpp [modules] Sometimes we can deserialize a class member but not have yet 2015-01-24 01:07:20 +00:00
ASTImporter.cpp Rename RefersToCapturedVariable to RefersToEnclosingVariableOrCapture, NFC 2015-01-12 10:17:46 +00:00
ASTTypeTraits.cpp Fix bug in DynTypedMatcher::constructVariadic() that would cause false negatives. 2014-10-06 13:14:30 +00:00
AttrImpl.cpp Refactor the Microsoft inheritance attribute handling so that it no longer has special treatment. Also fixes a minor bug where the attributes were being parsed as though they were GNU-style attributes when they were in fact keyword attributes. 2013-12-18 23:44:18 +00:00
CMakeLists.txt MS ABI: Don't use the Itanium scheme for numbering lambdas 2014-08-22 04:22:50 +00:00
CXXABI.h Header guard canonicalization, clang part. 2014-08-13 16:25:19 +00:00
CXXInheritance.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Comment.cpp Use llvm::makeArrayRef instead of explicitly calling ArrayRef constructor and mentioning the type. This works now that we have a conversion from ArrayRef<T*> to ArrayRef<const T*>. 2014-08-30 16:55:39 +00:00
CommentBriefParser.cpp Some refactoring in my patch on document 2013-03-02 02:39:57 +00:00
CommentCommandTraits.cpp Fix for PR21254 - Assertion in comment parser 2014-10-15 16:18:20 +00:00
CommentLexer.cpp Fix some cases where StringRef was being passed by const reference. Remove const from some other StringRefs since its implicitly const already. 2014-08-30 16:55:52 +00:00
CommentParser.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
CommentSema.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Decl.cpp AST: Fix the linkage of static vars in fn template specializations 2014-12-16 04:52:14 +00:00
DeclBase.cpp Handle use of default member initializers before end of outermost class 2014-11-17 23:36:45 +00:00
DeclCXX.cpp DebugInfo: Correct the debug location of non-static data member initializers 2015-01-18 00:12:58 +00:00
DeclFriend.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
DeclGroup.cpp Sort all of Clang's files under 'lib', and fix up the broken headers 2012-12-04 09:13:33 +00:00
DeclObjC.cpp ObjC getters with names like "newItem" should still be linked to the @property. 2015-01-16 23:04:26 +00:00
DeclOpenMP.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
DeclPrinter.cpp Objective-C. Assortment of improvements pretty printing 2014-10-03 20:05:33 +00:00
DeclTemplate.cpp Convert some function arguments to use ArrayRef. 2014-06-26 04:58:53 +00:00
DeclarationName.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Expr.cpp AST: alignof might be dependent because of alignment attributes 2015-01-15 10:04:14 +00:00
ExprCXX.cpp -ms-extensions: Implement __super scope specifier (PR13236). 2014-09-26 00:28:20 +00:00
ExprClassification.cpp AST: Remove overzealous assertion from IsModifiable 2015-01-04 00:44:32 +00:00
ExprConstant.cpp Support constant evaluation for member calls on std::initializer_list 2014-12-17 19:24:30 +00:00
ExternalASTSource.cpp Move virtual methods out of line. 2014-05-21 14:19:22 +00:00
InheritViz.cpp Refer to error_code with the std prefix. 2014-06-12 20:37:59 +00:00
ItaniumCXXABI.cpp Fix the issue of mangling of local anonymous unions (Itanium C++ ABI): 2014-12-12 16:17:46 +00:00
ItaniumMangle.cpp Initial support for Win64 SEH IR emission 2015-01-22 01:36:17 +00:00
Makefile
Mangle.cpp This patch fixes a crash involving use of predefined 2014-12-02 18:42:51 +00:00
MicrosoftCXXABI.cpp Adds 'override' to overriding methods. NFC. 2014-10-01 16:56:40 +00:00
MicrosoftMangle.cpp Initial support for Win64 SEH IR emission 2015-01-22 01:36:17 +00:00
NSAPI.cpp Objective-C. revert patch for rdar://17554063. 2014-10-28 18:28:16 +00:00
NestedNameSpecifier.cpp -ms-extensions: Implement __super scope specifier (PR13236). 2014-09-26 00:28:20 +00:00
ParentMap.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
RawCommentList.cpp Comment parsing: when comment ranges are deserialized from multiple modules, 2014-03-27 15:40:39 +00:00
RecordLayout.cpp CXXInfo memory should be released after calling the destructor 2014-05-24 07:19:25 +00:00
RecordLayoutBuilder.cpp Update for LLVM API change to make Small(Ptr)Set::insert return pair<iterator, bool> as per the C++ standard's associative container concept. 2014-11-19 07:49:47 +00:00
SelectorLocationsKind.cpp
Stmt.cpp First patch with codegen of the 'omp for' directive. It implements 2014-12-15 07:07:06 +00:00
StmtIterator.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
StmtPrinter.cpp [c++1z] N4295: fold-expressions. 2014-11-08 05:07:16 +00:00
StmtProfile.cpp Preserve numeric literal suffixes during type canonicalization. 2014-11-20 03:37:32 +00:00
StmtViz.cpp
TemplateBase.cpp Use APSInt::isSameValue instead of operator== in a place where two APSInt's 2015-01-09 00:58:16 +00:00
TemplateName.cpp [C++11] Use 'nullptr'. AST edition. 2014-05-12 05:36:57 +00:00
Type.cpp Fix isTriviallyCopyableType for arrays 2015-01-21 19:39:10 +00:00
TypeLoc.cpp Fix initializing TypeOfTypeLoc 2014-10-24 13:52:55 +00:00
TypePrinter.cpp Re-apply "r226548 - Introduce SPIR calling conventions" reverted in r226558. 2015-01-20 11:20:41 +00:00
VTTBuilder.cpp Update for LLVM API change to make Small(Ptr)Set::insert return pair<iterator, bool> as per the C++ standard's associative container concept. 2014-11-19 07:49:47 +00:00
VTableBuilder.cpp Fix typo. 2014-11-29 23:57:35 +00:00