]> granicus.if.org Git - clang/log
clang
13 years agoUse ArrayRef for the fixit hint array rather than a pointer and a size.
Chandler Carruth [Tue, 6 Sep 2011 22:31:44 +0000 (22:31 +0000)]
Use ArrayRef for the fixit hint array rather than a pointer and a size.
Clean up loops over the hints to use the more idiomatic iterator form in
LLVM and Clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139195 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoHoist the construction of the FixItHint line into a member function with
Chandler Carruth [Tue, 6 Sep 2011 22:01:04 +0000 (22:01 +0000)]
Hoist the construction of the FixItHint line into a member function with
a defined interface. This isn't as nice as the previous one, but should
get better as I push through better data types in all these functions.

Also, I'm hoping to pull some aspects of this out into a common routine
(such as tab expansion).

Again, WIP, comments welcome as I'm going through.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139190 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 21:43:51 +0000 (21:43 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
CheckCompareOperands()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139187 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoWhen extracting the callee declaration from a call expression, be sure
Douglas Gregor [Tue, 6 Sep 2011 21:41:04 +0000 (21:41 +0000)]
When extracting the callee declaration from a call expression, be sure
to look through SubstNonTypeTemplateParmExprs. Then, update the IR
generation of CallExprs to actually use CallExpr::getCalleeDecl()
rather than attempting to mimick its behavior (badly).

Fixes <rdar://problem/10063539>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139185 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 21:27:33 +0000 (21:27 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
checkEnumComparison()
diagnoseDistinctPointerComparison()
convertPointersToCompositeType()
diagnoseFunctionPointerToVoidComparison()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139184 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 21:21:28 +0000 (21:21 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
DiagnoseBadShiftValues()
CheckShiftOperands()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139183 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 21:13:51 +0000 (21:13 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
diagnoseArithmeticOnTwoVoidPointers()
checkArithmeticBinOpPointerOperands()
diagnosePointerIncompatibility()
CheckAdditionOperands()
CheckSubtractionOperands()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139182 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 21:01:04 +0000 (21:01 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
CheckVectorOperands()
CheckMultiplyDivideOperands()
CheckRemainderOperands()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139181 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPlace 'equality comparison with extraneous parentheses...' into a subgroup of -Wparen...
Ted Kremenek [Tue, 6 Sep 2011 20:58:32 +0000 (20:58 +0000)]
Place 'equality comparison with extraneous parentheses...' into a subgroup of -Wparentheses called -Wparentheses-equality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139180 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoImplement the Named Return Value Optimization (NRVO) for blocks.
Douglas Gregor [Tue, 6 Sep 2011 20:46:03 +0000 (20:46 +0000)]
Implement the Named Return Value Optimization (NRVO) for blocks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139178 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 20:40:12 +0000 (20:40 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
CheckTransparentUnionArgumentConstraints()
CheckSingleAssignmentConstraints()
InvalidOperands()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139176 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoImplement the Named Return Value Optimization (NRVO) for Objective-C++
Douglas Gregor [Tue, 6 Sep 2011 20:33:37 +0000 (20:33 +0000)]
Implement the Named Return Value Optimization (NRVO) for Objective-C++
methods. Fixes PR10835 / <rdar://problem/10050178>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139175 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 20:30:53 +0000 (20:30 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
CheckAssignmentConstraints()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139173 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 20:21:22 +0000 (20:21 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
checkPointerTypesForAssignment()
checkBlockPointerTypesForAssignment()
checkObjCPointerTypesForAssignment()
CheckAssignmentConstraints()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139170 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 20:06:39 +0000 (20:06 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
DiagnoseConditionalForNull()
CheckConditionalOperands()
IsArithmeticBinaryExpr()
DiagnoseConditionalPrecedence()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139167 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSpelling.
Benjamin Kramer [Tue, 6 Sep 2011 19:57:14 +0000 (19:57 +0000)]
Spelling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139165 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 19:52:52 +0000 (19:52 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
handleIntegerConversion()
UsualArithmeticConversions()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139164 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't emit -Wpadded warnings without a valid SourceLocation. This can happen when...
Ted Kremenek [Tue, 6 Sep 2011 19:40:45 +0000 (19:40 +0000)]
Don't emit -Wpadded warnings without a valid SourceLocation.  This can happen when RecordLayoutBuilder is used by Codegen, not Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139162 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRearrange code so that we pass the right pointer to delete[] when an exception is...
Eli Friedman [Tue, 6 Sep 2011 18:53:03 +0000 (18:53 +0000)]
Rearrange code so that we pass the right pointer to delete[] when an exception is thrown constructing the array elements in an array new expression.  Fixes PR10870.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139158 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 18:38:41 +0000 (18:38 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
handleFloatConversion()
handleComplexIntConvsersion()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139153 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRename variables in SemaExpr.cpp to give a more consistant naming scheme.
Richard Trieu [Tue, 6 Sep 2011 18:25:09 +0000 (18:25 +0000)]
Rename variables in SemaExpr.cpp to give a more consistant naming scheme.

ExprResult LHS, RHS,
Expr *LHSExpr, *RHSExpr
QualType LHSType, RHSType

Functions changed:
handleComplexFloatToComplexFloatConverstion()
handleComplexFloatConversion()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139151 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdvertise support for cxx_range_for as an extension in C++98 mode. Patch by Jean...
Richard Smith [Tue, 6 Sep 2011 18:03:41 +0000 (18:03 +0000)]
Advertise support for cxx_range_for as an extension in C++98 mode. Patch by Jean-Daniel Dupas!
Also provide a modicum of test coverage for ranged for in C++98.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139149 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFinish implementing (de-)serialization of the CXXDefinitionData bits
Douglas Gregor [Tue, 6 Sep 2011 16:38:46 +0000 (16:38 +0000)]
Finish implementing (de-)serialization of the CXXDefinitionData bits
needed for implicit move constructors and move assignment
operators. Fixes PR10847.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139144 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoWhen performing a derived-to-base cast on the right-hand side of the
Douglas Gregor [Tue, 6 Sep 2011 16:26:56 +0000 (16:26 +0000)]
When performing a derived-to-base cast on the right-hand side of the
synthesized move assignment within an implicitly-defined move
assignment operator, be sure to treat the derived-to-base cast as an
xvalue (rather than an lvalue). Otherwise, we'll end up getting the
wrong constructor.

Optimize a direct call to a trivial move assignment operator to an
aggregate copy, as we do for trivial copy assignment operators, and
update the the assertion in CodeGenFunction::EmitAggregateCopy() to
cope with this optimization.

Fixes PR10860.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139143 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPR10867: Work around a bug in lit. Multiple RUN: lines are joined with &&, so:
Richard Smith [Tue, 6 Sep 2011 03:01:15 +0000 (03:01 +0000)]
PR10867: Work around a bug in lit. Multiple RUN: lines are joined with &&, so:

  RUN: foo
  RUN: bar || true

is equivalent to:

  RUN: foo && bar || true

which is equivalent to:

  RUN: (foo && bar) || true

This resulted in several of the fixit tests not really testing anything.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139132 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd missing dependency
Peter Collingbourne [Tue, 6 Sep 2011 02:08:40 +0000 (02:08 +0000)]
Add missing dependency

Spotted by Ninja.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139129 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix typo
Peter Collingbourne [Tue, 6 Sep 2011 02:08:36 +0000 (02:08 +0000)]
Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139128 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd the resource directory to the search path for Driver::GetFilePath,
Peter Collingbourne [Tue, 6 Sep 2011 02:08:31 +0000 (02:08 +0000)]
Add the resource directory to the search path for Driver::GetFilePath,
as well as the search path printed by -print-search-dirs.

The main purpose of this change is to cause -print-file-name=include
to print the path to the include directory under Clang's resource
directory, instead of the system compiler's include directory, whose
header files Clang may not be able to parse.  Some build scripts will
do something like:
  $(CC) -nostdinc -I`$(CC) -print-file-name=include`
to exclude all header paths except the compiler's.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139127 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSpeed up BCPL comment lexing by looking aggressively for newlines and then scannig...
Benjamin Kramer [Mon, 5 Sep 2011 07:19:39 +0000 (07:19 +0000)]
Speed up BCPL comment lexing by looking aggressively for newlines and then scannig backwards to see if the newline is escaped.

3% speedup in preprocessing all of clang with -Eonly. Also includes a small testcase for coverage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139116 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUse the Lexer's definition of whitespace here.
Benjamin Kramer [Mon, 5 Sep 2011 07:19:35 +0000 (07:19 +0000)]
Use the Lexer's definition of whitespace here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139115 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoStop cluttering the test directory with temporary files.
Benjamin Kramer [Mon, 5 Sep 2011 07:19:32 +0000 (07:19 +0000)]
Stop cluttering the test directory with temporary files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139114 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoEnable -Wdangling-fields by default in Clang. I've run this warning over
Chandler Carruth [Mon, 5 Sep 2011 05:47:35 +0000 (05:47 +0000)]
Enable -Wdangling-fields by default in Clang. I've run this warning over
a very large chunk of code and found zero false positives. I've only
found a few bugs, but that likely is because bugs of this nature
actually do manifest. We've also identified several bugs that were
caught by Valgrind, but would have been caught faster and more easily
with this warning.

If anyone has concerns, or this causes fallout on any build bots, lemme
know. I'm happy to just put it under -Wmost.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139112 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoImplement the suggested resolution of WG21 N3307 issue 19: When determining whether...
Richard Smith [Mon, 5 Sep 2011 02:13:09 +0000 (02:13 +0000)]
Implement the suggested resolution of WG21 N3307 issue 19: When determining whether a class is an aggregate in C++0x, treat all functions which are neither deleted nor defaulted as user-provided, not just special member functions. The wording of the standard only defines the term "user-provided" for special member functions, but the intent seems to be that any function can be user-provided.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139111 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPR10506: Extend test for temporary cleanups in range-based for loop to cover the...
Richard Smith [Sun, 4 Sep 2011 23:52:03 +0000 (23:52 +0000)]
PR10506: Extend test for temporary cleanups in range-based for loop to cover the dependent case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139109 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPass 0 instead of a empty TemplateArgumentListInfo when creating a CXXDependentScopeM...
Francois Pichet [Sun, 4 Sep 2011 23:00:48 +0000 (23:00 +0000)]
Pass 0 instead of a empty TemplateArgumentListInfo when creating a CXXDependentScopeMemberExpr to handle a "this->" fixit (lookup into dependent bases of class template)

Otherwise the fixit doesn't really work for subsequent lookup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139105 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUse const_cast to avoid warnings.
Benjamin Kramer [Sun, 4 Sep 2011 20:26:28 +0000 (20:26 +0000)]
Use const_cast to avoid warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139104 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPR10458: Last part of providing 'auto' type specifier as an extension in C++98: permi...
Richard Smith [Sun, 4 Sep 2011 20:24:20 +0000 (20:24 +0000)]
PR10458: Last part of providing 'auto' type specifier as an extension in C++98: permit it within type-ids.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139103 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPR10458: Finesse behaviour of C++0x features when in pre-0x mode. Accept for-range...
Richard Smith [Sun, 4 Sep 2011 19:54:14 +0000 (19:54 +0000)]
PR10458: Finesse behaviour of C++0x features when in pre-0x mode. Accept for-range and auto with an ExtWarn, and produce a -Wc++0x-compat warning in C++98 mode when auto is used as a storage class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139102 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd test case for defaulted copy and move structure validation.
Sebastian Redl [Sun, 4 Sep 2011 18:14:28 +0000 (18:14 +0000)]
Add test case for defaulted copy and move structure validation.
Fix bug this uncovered.
Address minor comments from Doug.
Enable cxx_implicit_moves feature.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139101 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoHandle a code-completion token being passed to the macro stringify operator.
Argyrios Kyrtzidis [Sun, 4 Sep 2011 03:32:19 +0000 (03:32 +0000)]
Handle a code-completion token being passed to the macro stringify operator.
Fixes http://llvm.org/PR10826.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139087 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSupport code-completion for C++ inline methods and ObjC buffering methods.
Argyrios Kyrtzidis [Sun, 4 Sep 2011 03:32:15 +0000 (03:32 +0000)]
Support code-completion for C++ inline methods and ObjC buffering methods.

Previously we would cut off the source file buffer at the code-completion
point; this impeded code-completion inside C++ inline methods and,
recently, with buffering ObjC methods.

Have the code-completion inserted into the source buffer so that it can
be buffered along with a method body. When we actually hit the code-completion
point the cut-off lexing or parsing.

Fixes rdar://10056932&8319466

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139086 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix Lexer::ComputePreamble when MaxLines parameter is non-zero.
Argyrios Kyrtzidis [Sun, 4 Sep 2011 03:32:04 +0000 (03:32 +0000)]
Fix Lexer::ComputePreamble when MaxLines parameter is non-zero.

The function was only counting lines that included tokens and not empty lines,
but MaxLines (mainly initiated to the line where the code-completion point resides)
is a count of overall lines (even empty ones).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139085 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMore unused variable removal.
Benjamin Kramer [Sat, 3 Sep 2011 08:46:20 +0000 (08:46 +0000)]
More unused variable removal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139080 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake helpers static, remove unused variables.
Benjamin Kramer [Sat, 3 Sep 2011 03:30:59 +0000 (03:30 +0000)]
Make helpers static, remove unused variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139078 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTeach -Wdangling-field to warn about temporaries bound to references as
Chandler Carruth [Sat, 3 Sep 2011 02:21:57 +0000 (02:21 +0000)]
Teach -Wdangling-field to warn about temporaries bound to references as
well.

Also, clean up the flow of the code a bit, and factor things more
nicely.

Finally, add the test case that was missing from my previous
commit (sorry), with new tests added to cover temporaries and other fun
cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139077 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd a simple new warning to catch blatantly dangling pointer and
Chandler Carruth [Sat, 3 Sep 2011 01:14:15 +0000 (01:14 +0000)]
Add a simple new warning to catch blatantly dangling pointer and
reference members of classes. We've had several bugs reported because of
this, and there's no reason not to flag it right away in the compiler.

Comments especially welcome on the strategy for implementing this
warning (IE, what should trigger this?) and on the text of the warning
itself.

I'm going to extend this to cover obvious cases with temporaries and
beef up the test cases some in subsequent patches. I'll then run it over
a large codebase and make sure its not misbehaving before I add it to
-Wall or turn it on by default. I think this one might be a good
candidate for on by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139075 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRevise test and see if it passes with a release-built clang.
Fariborz Jahanian [Fri, 2 Sep 2011 21:47:51 +0000 (21:47 +0000)]
Revise test and see if it passes with a release-built clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139043 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix some indenting issues in SemaExpr.cpp
Richard Trieu [Fri, 2 Sep 2011 21:44:27 +0000 (21:44 +0000)]
Fix some indenting issues in SemaExpr.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139042 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoblocks: Support capturing complex variable in block.
Fariborz Jahanian [Fri, 2 Sep 2011 21:33:44 +0000 (21:33 +0000)]
blocks: Support capturing complex variable in block.
// rdar://10033896

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139041 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor UsualArithmeticConversions() in SemaExpr.cpp into several functions.
Richard Trieu [Fri, 2 Sep 2011 20:58:51 +0000 (20:58 +0000)]
Refactor UsualArithmeticConversions() in SemaExpr.cpp into several functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139033 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agorevert patch in r139020
Fariborz Jahanian [Fri, 2 Sep 2011 20:03:16 +0000 (20:03 +0000)]
revert patch in r139020

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139029 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago-Wuninitialized: fix insidious bug resulting from interplay of blocks and dead code...
Ted Kremenek [Fri, 2 Sep 2011 19:39:26 +0000 (19:39 +0000)]
-Wuninitialized: fix insidious bug resulting from interplay of blocks and dead code.  Fixes <rdar://problem/10060250>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139027 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoblocks: Support capturing complex variable in block.
Fariborz Jahanian [Fri, 2 Sep 2011 18:39:40 +0000 (18:39 +0000)]
blocks: Support capturing complex variable in block.
// rdar://10033896

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139020 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake StmtDumper::VisitCXXFunctionalCastExpr dump the attached cast kind. Fix the...
Eli Friedman [Fri, 2 Sep 2011 17:38:59 +0000 (17:38 +0000)]
Make StmtDumper::VisitCXXFunctionalCastExpr dump the attached cast kind.  Fix the cast kind for a cast from floating-point to enum type.  (The difference isn't actually visible, but that's just because IRGen is overly forgiving.)  Per report by Enea Zaffanella on cfe-dev.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139011 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[analyzer] Remove TransferFuncs.h, then deal with the fallout.
Jordy Rose [Fri, 2 Sep 2011 08:02:59 +0000 (08:02 +0000)]
[analyzer] Remove TransferFuncs.h, then deal with the fallout.

And with that, TransferFuncs is gone!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139003 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[analyzer] Move RetainReleaseChecker to the Checkers library and rename it to RetainC...
Jordy Rose [Fri, 2 Sep 2011 06:44:22 +0000 (06:44 +0000)]
[analyzer] Move RetainReleaseChecker to the Checkers library and rename it to RetainCountChecker...and clean up the file while I'm at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139002 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoHoist the emission of parseable fixits into a helper method, simplifying
Chandler Carruth [Fri, 2 Sep 2011 06:30:30 +0000 (06:30 +0000)]
Hoist the emission of parseable fixits into a helper method, simplifying
and reducing indentation through the clever use of early exits. ;]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139001 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[analyzer] Remove lingering CFRefCount creation, which would have resulted in a leak...
Jordy Rose [Fri, 2 Sep 2011 06:29:27 +0000 (06:29 +0000)]
[analyzer] Remove lingering CFRefCount creation, which would have resulted in a leak. There's room for improvement here...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139000 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[analyzer] Fix member initialization order. No functionality change.
Jordy Rose [Fri, 2 Sep 2011 06:21:26 +0000 (06:21 +0000)]
[analyzer] Fix member initialization order. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138999 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[analyzer] Move the knowledge of whether or not GC is enabled for the current analysi...
Jordy Rose [Fri, 2 Sep 2011 05:55:19 +0000 (05:55 +0000)]
[analyzer] Move the knowledge of whether or not GC is enabled for the current analysis from CFRefCount to ExprEngine.

Remove TransferFuncs from ExprEngine and AnalysisConsumer.

Demote RetainReleaseChecker to a regular checker, and give it the name osx.cocoa.RetainCount (class name change coming shortly). Update tests accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138998 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMove the warning for different enum comparisons and the warning for using NULL as...
Richard Trieu [Fri, 2 Sep 2011 03:48:46 +0000 (03:48 +0000)]
Move the warning for different enum comparisons and the warning for using NULL as a non-pointer in a binary operation into separate functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138995 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoReduce code duplication for pointer comparisons in CheckCompareOperands().
Richard Trieu [Fri, 2 Sep 2011 02:55:45 +0000 (02:55 +0000)]
Reduce code duplication for pointer comparisons in CheckCompareOperands().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138994 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPull out incomplete pointer type checking code, used from arithmetic checking functio...
Richard Trieu [Fri, 2 Sep 2011 02:15:37 +0000 (02:15 +0000)]
Pull out incomplete pointer type checking code, used from arithmetic checking functions, into its own function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138993 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor CheckConditionalOperands() by moving chunks of code to helper functions...
Richard Trieu [Fri, 2 Sep 2011 01:51:02 +0000 (01:51 +0000)]
Refactor CheckConditionalOperands() by moving chunks of code to helper functions making a slimmer function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138992 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor CheckAddressOfOperand() by pulling out redundant code and moving hard coding...
Richard Trieu [Fri, 2 Sep 2011 00:47:55 +0000 (00:47 +0000)]
Refactor CheckAddressOfOperand() by pulling out redundant code and moving hard coding strings from SemaExpr.cpp to DiagnosticSemaKinds.td.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138987 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAlways construct an ASTReader with a non-NULL ASTContext and
Douglas Gregor [Fri, 2 Sep 2011 00:26:20 +0000 (00:26 +0000)]
Always construct an ASTReader with a non-NULL ASTContext and
Preprocessor, eliminating the constructor that was used by ASTUnit
(which didn't provide an ASTContext or Prepreprocessor). Ensuring that
both objects are non-NULL will simplify module loading (but none of
that is done yet).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138986 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoExtend the ASTContext constructor to delay the initialization of
Douglas Gregor [Fri, 2 Sep 2011 00:18:52 +0000 (00:18 +0000)]
Extend the ASTContext constructor to delay the initialization of
builtin types (When requested). This is another step toward making
ASTUnit build the ASTContext as needed when loading an AST file,
rather than doing so after the fact. No actual functionality change (yet).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138985 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAllow the preprocessor to be constructed without performing target-
Douglas Gregor [Thu, 1 Sep 2011 23:39:15 +0000 (23:39 +0000)]
Allow the preprocessor to be constructed without performing target-
and language-specific initialization. Use this to allow ASTUnit to
create a preprocessor object *before* loading the AST file. No actual
functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138983 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor CheckAdditionOperands(), CheckSubtractionOperands(), and CheckIncrementDecre...
Richard Trieu [Thu, 1 Sep 2011 22:53:23 +0000 (22:53 +0000)]
Refactor CheckAdditionOperands(), CheckSubtractionOperands(), and CheckIncrementDecrementOperand() in SemaExpr.cpp to move reused code to separate functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138975 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't try keeping a 'LeadingEmptyMacroLoc' in NullStmt. This fails
Argyrios Kyrtzidis [Thu, 1 Sep 2011 21:53:45 +0000 (21:53 +0000)]
Don't try keeping a 'LeadingEmptyMacroLoc' in NullStmt. This fails
in the face of buffering C++/ObjC method bodies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138972 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[arcmt] Clear out temporary dirs in the tests or we may get failures because of lefto...
Argyrios Kyrtzidis [Thu, 1 Sep 2011 21:53:39 +0000 (21:53 +0000)]
[arcmt] Clear out temporary dirs in the tests or we may get failures because of leftovers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138971 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't try to emit unsupported templated friend declarations. They're unsupported
Nick Lewycky [Thu, 1 Sep 2011 21:49:51 +0000 (21:49 +0000)]
Don't try to emit unsupported templated friend declarations. They're unsupported
and may very well be dependent-types, triggering an assertion in debug info
codegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138970 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoExtend the self-reference warning to catch when a constructor references itself upon...
Richard Trieu [Thu, 1 Sep 2011 21:44:13 +0000 (21:44 +0000)]
Extend the self-reference warning to catch when a constructor references itself upon initialization, such as using itself within its own copy constructor.

struct S {};
S s(s);

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138969 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[arcmt] Fix test/ARCMT/remove-statements.m regression due to
Argyrios Kyrtzidis [Thu, 1 Sep 2011 20:53:18 +0000 (20:53 +0000)]
[arcmt] Fix test/ARCMT/remove-statements.m regression due to
Objective-C method buffering(rdar://10056942)

Turned out the same issue existed for C++ inline methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138960 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTeach ASTContext and Preprocessor to hold on to references to the same
Douglas Gregor [Thu, 1 Sep 2011 20:23:19 +0000 (20:23 +0000)]
Teach ASTContext and Preprocessor to hold on to references to the same
LangOptions, rather than making distinct copies of
LangOptions. Granted, LangOptions doesn't actually get modified, but
this will eventually make it easier to construct ASTContext and
Preprocessor before we know all of the LangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138959 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agodefault property synthesis is off by default
Fariborz Jahanian [Thu, 1 Sep 2011 20:23:17 +0000 (20:23 +0000)]
default property synthesis is off by default
for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138958 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake test slightly trickier
Douglas Gregor [Thu, 1 Sep 2011 19:02:18 +0000 (19:02 +0000)]
Make test slightly trickier

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138957 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoobjective-c: Make auto synthesis of properties the default.
Fariborz Jahanian [Thu, 1 Sep 2011 17:50:05 +0000 (17:50 +0000)]
objective-c: Make auto synthesis of properties the default.
This concludes //rdar://8843851

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138947 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoModules hide macro definitions by default, so that silly things like
Douglas Gregor [Thu, 1 Sep 2011 17:04:32 +0000 (17:04 +0000)]
Modules hide macro definitions by default, so that silly things like
include guards don't show up as macro definitions in every translation
unit that imports a module. Macro definitions can, however, be
exported with the intentionally-ugly #__export_macro__
directive. Implement this feature by not even bothering to serialize
non-exported macros to a module, because clients of that module need
not (should not) know that these macros even exist.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138943 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoEnable -fdelayed-template-parsing by default on Win32.
Francois Pichet [Thu, 1 Sep 2011 16:38:08 +0000 (16:38 +0000)]
Enable -fdelayed-template-parsing by default on Win32.
I had to force -fno-delayed-template-parsing on some Index tests because delayed template parsing will change the output of some tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138942 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix PR10744 by adding the toolchain path to the regular program path
Rafael Espindola [Thu, 1 Sep 2011 16:25:49 +0000 (16:25 +0000)]
Fix PR10744 by adding the toolchain path to the regular program path
and doing a simple search. Before we would manually check for the linker
before the -B options were searched.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138941 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd 4.4.6 to GccVersions[] in lib/Driver/ToolChains.cpp.
Hans Wennborg [Thu, 1 Sep 2011 14:41:39 +0000 (14:41 +0000)]
Add 4.4.6 to GccVersions[] in lib/Driver/ToolChains.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138940 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoIf size was equal to 0, either NULL or a pointer suitable to be passed to
Zhongxing Xu [Thu, 1 Sep 2011 04:53:59 +0000 (04:53 +0000)]
If size was equal to 0, either NULL or a pointer suitable to be passed to
free() is returned by realloc(). Most code expect NULL.

And we only need to transfer one final ProgramState.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138937 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix "multi-line comment" compiler error.
Argyrios Kyrtzidis [Thu, 1 Sep 2011 03:07:11 +0000 (03:07 +0000)]
Fix "multi-line comment" compiler error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138936 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoWhen defining the implicit move assignment operator, don't perform
Douglas Gregor [Thu, 1 Sep 2011 02:09:07 +0000 (02:09 +0000)]
When defining the implicit move assignment operator, don't perform
semantic analysis when taking the address of an xvalue. Instead, just
build the unary operator directly, since it's safe to do so (from the
IRgen and AST perspectives) for any glvalue. Fixes PR10822.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138935 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSupport importing of ObjC categories from modules.
Argyrios Kyrtzidis [Thu, 1 Sep 2011 00:58:55 +0000 (00:58 +0000)]
Support importing of ObjC categories from modules.

The initial incentive was to fix a crash when PCH chaining categories
to an interface, but the fix was done in the "modules way" that I hear
is popular with the kids these days.

Each module stores the local chain of categories and we combine them
when the interface is loaded. We also warn if non-dependent modules
introduce duplicate named categories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138926 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCreate a CaretDiagnostic class to hold the logic for emitting
Chandler Carruth [Wed, 31 Aug 2011 23:59:23 +0000 (23:59 +0000)]
Create a CaretDiagnostic class to hold the logic for emitting
(unsurprisingly) caret diagnostics. This is designed to bring some
organization to the monstrous EmitCaretDiagnostic function, and allow
factoring it more easily and with less mindless parameter passing.

Currently this just lifts the existing function into a method, and
splits off the obviously invariant arguments to be class members. No
functionality is changed, and there are still lots of warts to let
existing code continue functioning as-is. Definitely WIP, more cleanups
to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138921 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSink all of the include stack printing logic into its member function.
Chandler Carruth [Wed, 31 Aug 2011 23:59:19 +0000 (23:59 +0000)]
Sink all of the include stack printing logic into its member function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138920 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[analyzer] Revert a regression introduced in r133104(The ARC Migration Tool..) due...
Anna Zaks [Wed, 31 Aug 2011 23:53:24 +0000 (23:53 +0000)]
[analyzer] Revert a regression introduced in r133104(The ARC Migration Tool..) due to a merge error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138919 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTest for default property synthesis.
Fariborz Jahanian [Wed, 31 Aug 2011 23:32:48 +0000 (23:32 +0000)]
Test for default property synthesis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138917 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoobjective-c: this patch (re)introduces objective-c's default property
Fariborz Jahanian [Wed, 31 Aug 2011 22:24:06 +0000 (22:24 +0000)]
objective-c: this patch (re)introduces objective-c's default property
synthesis. This new feature is currently placed under
-fobjc-default-synthesize-properties option
and is off by default pending further testing.
It will become the default feature soon.
// rdar://8843851

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138913 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSwitch the "no module found" default-fatal warning to a default-fatal error.
Douglas Gregor [Wed, 31 Aug 2011 21:52:21 +0000 (21:52 +0000)]
Switch the "no module found" default-fatal warning to a default-fatal error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138909 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't assert when diagnosing a missing cast of an unknown-anytype
John McCall [Wed, 31 Aug 2011 20:57:36 +0000 (20:57 +0000)]
Don't assert when diagnosing a missing cast of an unknown-anytype
message send to an unknown method.

rdar://problem/9416370, redux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138893 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[driver] If no -miphoneos-version-min is specified on the command line *and*
Chad Rosier [Wed, 31 Aug 2011 20:56:25 +0000 (20:56 +0000)]
[driver] If no -miphoneos-version-min is specified on the command line *and*
IPHONEOS_DEPLOYMENT_TARGET if undefined, set -miphoneos-version-min based on
isysroot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138892 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake sure to initialize field. Hopefully this will fix some test failures on Windows.
Eli Friedman [Wed, 31 Aug 2011 18:45:31 +0000 (18:45 +0000)]
Make sure to initialize field.  Hopefully this will fix some test failures on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138880 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't verify the name of the driver executable. It's not really relevent
Chandler Carruth [Wed, 31 Aug 2011 18:39:20 +0000 (18:39 +0000)]
Don't verify the name of the driver executable. It's not really relevent
to this test, and doesn't always start with 'clang' when fully resolved
on some build systems.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138878 91177308-0d34-0410-b5e6-96231b3b80d8

13 years ago[analyzer] Fix varargs helper to only use POD types even for named arguments. Thanks...
Jordy Rose [Wed, 31 Aug 2011 18:33:45 +0000 (18:33 +0000)]
[analyzer] Fix varargs helper to only use POD types even for named arguments. Thanks, Joerg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138875 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSwitch __import__ over to __import_module__, so we don't conflict with
Douglas Gregor [Wed, 31 Aug 2011 18:19:09 +0000 (18:19 +0000)]
Switch __import__ over to __import_module__, so we don't conflict with
existing practice with Python extension modules. Not that Python
extension modules should be using a double-underscored identifier
anyway, but...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138870 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoobjective-c - This patch buffers method implementations
Fariborz Jahanian [Wed, 31 Aug 2011 17:37:55 +0000 (17:37 +0000)]
objective-c - This patch buffers method implementations
and does the Sema on their body after the entire
class/category @implementation is seen. This change allows messaging
of forward private methods, as well as, access to
synthesized ivars of properties with foward synthesize
declarations; among others. In effect, this patch removes
several restrictions placed on objective-c due to in-place
semantics processing of methods.
This is part of // rdar://8843851.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138865 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUpdate libclang to have APIs corresponding to the new 'expansion' naming
Chandler Carruth [Wed, 31 Aug 2011 16:53:37 +0000 (16:53 +0000)]
Update libclang to have APIs corresponding to the new 'expansion' naming
system for macro-backed source locations. The old APIs are preserved for
legacy users.

This was intended to land with the main work of instantiation ->
expansion, but despite running it by Doug over a month ago, I forgot to
commit it. Very sorry for that...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138860 91177308-0d34-0410-b5e6-96231b3b80d8