]> granicus.if.org Git - clang/log
clang
14 years agoEnhance return-stack-address check (in Sema) to handle fields that themselves are...
Ted Kremenek [Thu, 2 Sep 2010 01:12:13 +0000 (01:12 +0000)]
Enhance return-stack-address check (in Sema) to handle fields that themselves are references.  (Fixes PR 7999; fix by Chandler Carruth).

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

14 years agoAdd support for Borland extensions via option -fborland-extensions
Dawn Perchik [Thu, 2 Sep 2010 01:12:01 +0000 (01:12 +0000)]
Add support for Borland extensions via option -fborland-extensions

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

14 years agoFor GRExprEngine::EvalBind() (and called visitors), unifiy StoreE and AssignE. Now...
Ted Kremenek [Thu, 2 Sep 2010 00:56:20 +0000 (00:56 +0000)]
For GRExprEngine::EvalBind() (and called visitors), unifiy StoreE and AssignE.  Now StoreE (const Stmt*) represents the expression where the store took place, which is the assignment expression if it takes place in an assignment.  This removes some conceptual dissidence as well as removes an extra parameter from the Checker::PreVisitBind() visitor.  It also improves ranges and source location information in analyzer diagnostics.

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

14 years agoFixes a warning when compiling Clang (Sema has virtual methods but a non-virtual...
Zhanyong Wan [Thu, 2 Sep 2010 00:43:20 +0000 (00:43 +0000)]
Fixes a warning when compiling Clang (Sema has virtual methods but a non-virtual dtor).  Reviewed by chandlerc and nlewycky.

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

14 years agoFixed unused variable warning.
Ted Kremenek [Thu, 2 Sep 2010 00:34:30 +0000 (00:34 +0000)]
Fixed unused variable warning.

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

14 years agoIntroduce a new libclang function,
Douglas Gregor [Thu, 2 Sep 2010 00:07:54 +0000 (00:07 +0000)]
Introduce a new libclang function,
clang_getSpecializedCursorTemplate(), which determines the template
(or member thereof) that the given cursor specializes or from which it
was instantiated. This routine can be used to establish a link between
templates and their instantiations/specializations.

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

14 years agoMake RecursiveASTVisitor not crash when a TemplateArgumentLoc object has a NULL TypeS...
Zhanyong Wan [Wed, 1 Sep 2010 23:54:22 +0000 (23:54 +0000)]
Make RecursiveASTVisitor not crash when a TemplateArgumentLoc object has a NULL TypeSourceInfo*.  This fixes the symptom of http://llvm.org/PR8043.  Reviewed by csilvers.

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

14 years agoAdd some MMX builtins to correspond with the intrinsics now accepted by
Bill Wendling [Wed, 1 Sep 2010 23:54:16 +0000 (23:54 +0000)]
Add some MMX builtins to correspond with the intrinsics now accepted by
LLVM. This will be used by the mmintrin.h header, but that bit still needs to be
worked out.

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

14 years agoAdd yet another test case for PR 8015, showing how reasoning over symbolic indices...
Ted Kremenek [Wed, 1 Sep 2010 23:37:38 +0000 (23:37 +0000)]
Add yet another test case for PR 8015, showing how reasoning over symbolic indices should exactly resolve over multiple index possibilities (and thus suppress the false positive in the test).

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

14 years agoAdd another test case for PR 8015, here with the array index being within a valid...
Ted Kremenek [Wed, 1 Sep 2010 23:37:36 +0000 (23:37 +0000)]
Add another test case for PR 8015, here with the array index being within a valid range and not just a single constant.

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

14 years agoPartial fix for PR 8015 (fix is actually by Jordy Rose, and I added a test case for...
Ted Kremenek [Wed, 1 Sep 2010 23:27:26 +0000 (23:27 +0000)]
Partial fix for PR 8015 (fix is actually by Jordy Rose, and I added a test case for follow-on work).  This patch adds a bandaid for RegionStore's limited reasoning about symbolic array values.

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

14 years agoTranslate NEON vmull, vmlal, and vmlsl builtins to llvm multiply-add/sub
Bob Wilson [Wed, 1 Sep 2010 23:20:27 +0000 (23:20 +0000)]
Translate NEON vmull, vmlal, and vmlsl builtins to llvm multiply-add/sub
with zext/sext operations, instead of to llvm intrinsics.  I have a plan to
avoid the clang builtins for these, but it is going to take a little longer
and I want to get the NEON intrinsics updated before the 2.8 release.

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

14 years agoUpdate the docstring to say FriendTemplateDecl is not actually used.
Craig Silverstein [Wed, 1 Sep 2010 23:07:49 +0000 (23:07 +0000)]
Update the docstring to say FriendTemplateDecl is not actually used.
Based on discussion with rjmccall and dgregor.

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

14 years agoDon't assert in the analyzer when analyze code does a byte load from a function's...
Ted Kremenek [Wed, 1 Sep 2010 23:00:46 +0000 (23:00 +0000)]
Don't assert in the analyzer when analyze code does a byte load from a function's address.  Fixes PR 8052.

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

14 years agoMake some docstring clarifications, after discussion with dgregor.
Craig Silverstein [Wed, 1 Sep 2010 22:55:38 +0000 (22:55 +0000)]
Make some docstring clarifications, after discussion with dgregor.

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

14 years agoFix the source-range information for an EnumConstantDecl; previously,
Douglas Gregor [Wed, 1 Sep 2010 20:41:53 +0000 (20:41 +0000)]
Fix the source-range information for an EnumConstantDecl; previously,
it did not include the initializer expression.

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

14 years agoDon't assert in CastSizeChecker when the casted-to pointee is an incomplete type...
Ted Kremenek [Wed, 1 Sep 2010 20:35:38 +0000 (20:35 +0000)]
Don't assert in CastSizeChecker when the casted-to pointee is an incomplete type.  Fixes PR 8050.

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

14 years agoTest visiting the template parameters of template template parameters,
Douglas Gregor [Wed, 1 Sep 2010 20:21:58 +0000 (20:21 +0000)]
Test visiting the template parameters of template template parameters,
support for which came in with the last commit.

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

14 years agoTeach libclang to visit the default arguments of template parameters.
Douglas Gregor [Wed, 1 Sep 2010 20:16:53 +0000 (20:16 +0000)]
Teach libclang to visit the default arguments of template parameters.

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

14 years agoImplement libclang support for using declarations. Clang actually uses
Douglas Gregor [Wed, 1 Sep 2010 19:52:22 +0000 (19:52 +0000)]
Implement libclang support for using declarations. Clang actually uses
three different kinds of AST nodes to represent using declarations:
UsingDecl, UnresolvedUsingValueDecl, and
UnresolvedUsingTypenameDecl. These three are collapsed into a single
cursor kind for using declarations, since libclang clients don't need
the distinction.

Several related changes here:
  - Cursor visitation of the three AST nodes for using declarations
  - Proper source-range computation for these AST nodes
  - Using declarations have no USRs, since they don't actually declare
    any entities.

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

14 years agoFix IRGen when property-dot syntax used to access
Fariborz Jahanian [Wed, 1 Sep 2010 19:36:41 +0000 (19:36 +0000)]
Fix IRGen when property-dot syntax used to access
a c++ class object 'ivar'. Fixes radar 8366604.

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

14 years agoImprove libclang indexing support for class template specializations
Douglas Gregor [Wed, 1 Sep 2010 17:32:36 +0000 (17:32 +0000)]
Improve libclang indexing support for class template specializations
in a few related ways:

  - Don't recurse into instantiations of templates.
  - Recurse into explicit specializations.
  - Visit the template arguments of an explicit specialization or
    explicit instantiation.
  - Include template specialization arguments in the USRs for class
    template specializations.

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

14 years agoStringRefize.
Benjamin Kramer [Wed, 1 Sep 2010 17:28:48 +0000 (17:28 +0000)]
StringRefize.

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

14 years agoMake it clear that libclang does not modify the command-line arguments
Douglas Gregor [Wed, 1 Sep 2010 16:43:19 +0000 (16:43 +0000)]
Make it clear that libclang does not modify the command-line arguments
it is given.

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

14 years agoAdd test for nothing... i.e., the contents of a USR for using directives
Douglas Gregor [Wed, 1 Sep 2010 16:37:17 +0000 (16:37 +0000)]
Add test for nothing... i.e., the contents of a USR for using directives

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

14 years agoTransfer calling-convention attributes down to member function pointers.
Douglas Gregor [Wed, 1 Sep 2010 16:29:03 +0000 (16:29 +0000)]
Transfer calling-convention attributes down to member function pointers.

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

14 years agoadd a new version of mingw, patch by İsmail "cartman" Dönmez
Chris Lattner [Wed, 1 Sep 2010 15:51:58 +0000 (15:51 +0000)]
add a new version of mingw, patch by İsmail "cartman" Dönmez
in PR8049

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

14 years agowhen emitting an error about a missing } in a compound statement, emit
Chris Lattner [Wed, 1 Sep 2010 15:49:26 +0000 (15:49 +0000)]
when emitting an error about a missing } in a compound statement, emit
a "to match this {" note, pointing out the opener.

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

14 years agoImplement libclang support for using directives (cursor + visitation +
Douglas Gregor [Wed, 1 Sep 2010 03:07:18 +0000 (03:07 +0000)]
Implement libclang support for using directives (cursor + visitation +
suppressing USRs). Also, fix up the source location information for
using directives so that the declaration location refers to the
namespace name.

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

14 years agoSplit ObjCInterfaceDecl::ReferencedProtocols into two lists: ReferencedProtocols...
Ted Kremenek [Wed, 1 Sep 2010 01:21:15 +0000 (01:21 +0000)]
Split ObjCInterfaceDecl::ReferencedProtocols into two lists: ReferencedProtocols and AllReferencedProtocols.  ReferencedProtocols
(and thus protocol_begin(), protocol_end()) now only contains the list of protocols that were directly referenced in
an @interface declaration.  'all_referenced_protocol_[begin,end]()' now returns the set of protocols that were referenced
in both the @interface and class extensions.  The latter is needed for semantic analysis/codegen, while the former is
needed to maintain the lexical information of the original source.

Fixes <rdar://problem/8380046>.

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

14 years agofix rdar://8360877 a really nasty miscompilation in Boost.Xpressive
Chris Lattner [Wed, 1 Sep 2010 00:50:20 +0000 (00:50 +0000)]
fix rdar://8360877 a really nasty miscompilation in Boost.Xpressive
caused by my ABI work.  Passing:

struct outer {
  int x;
  struct epsilon_matcher {} e;
  int f;
};

as {i32,i32} isn't safe, because the offset of the second element
needs to be at 8 when it is interpreted as a memory value.

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

14 years agosame refactoring as before, this time on the argument side.
Chris Lattner [Wed, 1 Sep 2010 00:24:35 +0000 (00:24 +0000)]
same refactoring as before, this time on the argument side.

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

14 years agorefactor some code to cut down on redundancy, no functionality change.
Chris Lattner [Wed, 1 Sep 2010 00:20:33 +0000 (00:20 +0000)]
refactor some code to cut down on redundancy, no functionality change.

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

14 years agoImprove location information in the representation of namespace
Douglas Gregor [Wed, 1 Sep 2010 00:08:19 +0000 (00:08 +0000)]
Improve location information in the representation of namespace
aliases. Previously, the location of the alias was at the "namespace"
keyword. Now, it's on the identifier being declared (as is the custom
for Clang), and we keep a separate source location for the "namespace"
keyword.

Also, added a getSourceRange() member function to NamespaceAliasDecl
to correctly compute the source range.

Finally, removed a bunch of setters from NamespaceAliasDecl and gave
ASTReaderDecl friendship so that it could set the corresponding fields
directly.

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

14 years agoPrevent warning when built with assert off.
Fariborz Jahanian [Tue, 31 Aug 2010 23:54:38 +0000 (23:54 +0000)]
Prevent warning when built with assert off.

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

14 years agoxcode project file update.
Fariborz Jahanian [Tue, 31 Aug 2010 23:49:56 +0000 (23:49 +0000)]
xcode project file update.

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

14 years agoAdd libclang support for namespace aliases (visitation + USRs) along
Douglas Gregor [Tue, 31 Aug 2010 23:48:11 +0000 (23:48 +0000)]
Add libclang support for namespace aliases (visitation + USRs) along
with a new cursor kind for a reference to a namespace.

There's still some oddities in the source location information for
NamespaceAliasDecl that I'll address with a separate commit, so the
source locations displayed in the load-namespaces.cpp test will
change.

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

14 years agoSome support for unicode string constants
Fariborz Jahanian [Tue, 31 Aug 2010 23:34:27 +0000 (23:34 +0000)]
Some support for unicode string constants
in wide strings. radar 8360841.

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

14 years agoImplement __has_feature(cxx_inline_namespaces)
Sebastian Redl [Tue, 31 Aug 2010 23:28:47 +0000 (23:28 +0000)]
Implement __has_feature(cxx_inline_namespaces)

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

14 years agoAdd NetBSD include search path
Anton Korobeynikov [Tue, 31 Aug 2010 22:39:50 +0000 (22:39 +0000)]
Add NetBSD include search path

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

14 years agoAdd convenience accessors for determining whether template declarations are definitions.
John McCall [Tue, 31 Aug 2010 22:21:26 +0000 (22:21 +0000)]
Add convenience accessors for determining whether template declarations are definitions.

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

14 years agoAdd a new libclang function clang_getTemplateCursorKind(), which
Douglas Gregor [Tue, 31 Aug 2010 22:12:17 +0000 (22:12 +0000)]
Add a new libclang function clang_getTemplateCursorKind(), which
determines the kind of declaration that would be generated if the
given template were instantiated. This allows a client to distinguish
among class/struct/union templates and function/member function/static
member function templates.

Also, teach clang_CXXMethod_isStatic() about function templates.

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

14 years agoAmusingly, I missed this point of abstraction in all my earlier
John McCall [Tue, 31 Aug 2010 21:07:20 +0000 (21:07 +0000)]
Amusingly, I missed this point of abstraction in all my earlier
member-pointer refactoring:  dereferencing a member data pointer.

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

14 years agoMake inline namespace not be transparent after all. The concept simply doesn't fit...
Sebastian Redl [Tue, 31 Aug 2010 20:53:31 +0000 (20:53 +0000)]
Make inline namespace not be transparent after all. The concept simply doesn't fit. Instead, special-case the few places where transparent contexts have the desired behavior for inline namespaces. Fixes a redeclaration issue in inline namespaces.

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

14 years agoExtend libclang with a new cursor kind that indicates a reference to a
Douglas Gregor [Tue, 31 Aug 2010 20:37:03 +0000 (20:37 +0000)]
Extend libclang with a new cursor kind that indicates a reference to a
template. Such cursors occur, for example, in template specialization
types such as vector<int>. Note that we do not handle the
super-interesting case where the template name is unresolved, e.g.,
within a template.

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

14 years agoAdd libclang support for class template partial specializations,
Douglas Gregor [Tue, 31 Aug 2010 19:31:58 +0000 (19:31 +0000)]
Add libclang support for class template partial specializations,
including a cursor kind, visitation, and USRs.

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

14 years agoAdd a libclang cursor kind, visitation support and USR support for C++
Douglas Gregor [Tue, 31 Aug 2010 19:02:00 +0000 (19:02 +0000)]
Add a libclang cursor kind, visitation support and USR support for C++
class templates.

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

14 years agoImprove CFG printing support for CXXOperatorCallExpr and CXXBindTemporaryExpr.
Ted Kremenek [Tue, 31 Aug 2010 18:47:37 +0000 (18:47 +0000)]
Improve CFG printing support for CXXOperatorCallExpr and CXXBindTemporaryExpr.

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

14 years agoExplicitly handle CXXOperatorCallExpr when building CFGs. We should treat it the...
Ted Kremenek [Tue, 31 Aug 2010 18:47:34 +0000 (18:47 +0000)]
Explicitly handle CXXOperatorCallExpr when building CFGs.  We should treat it the same as CallExprs.

Fixes: <rdar://problem/8375510> [Boost] CFGBuilder crash in Boost.Graph
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112618 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAST work to support [C++] [IRgen] for ?: with missing LHS
Fariborz Jahanian [Tue, 31 Aug 2010 18:02:20 +0000 (18:02 +0000)]
AST work to support [C++] [IRgen] for ?: with missing LHS
This is also pr7726 and wip. No change in functionality
at this time.

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

14 years agoImplement basic support for indexing function templates in
Douglas Gregor [Tue, 31 Aug 2010 17:01:39 +0000 (17:01 +0000)]
Implement basic support for indexing function templates in
libclang. This includes:
  - Cursor kind for function templates, with visitation logic
  - Cursor kinds for template parameters, with visitation logic
  - Visitation logic for template specialization types, qualified type
  locations
  - USR generation for function templates, template specialization
  types, template parameter types.

Also happens to fix PR7804, which I tripped across while testing.

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

14 years agoAdd support for windows x86-64 varargs, patch by Cameron Esfahani!
Chris Lattner [Tue, 31 Aug 2010 16:44:54 +0000 (16:44 +0000)]
Add support for windows x86-64 varargs, patch by Cameron Esfahani!

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

14 years agoimprove isHexaLiteral to work with escaped newlines and trigraphs,
Chris Lattner [Tue, 31 Aug 2010 16:42:00 +0000 (16:42 +0000)]
improve isHexaLiteral to work with escaped newlines and trigraphs,
patch by Francois Pichet!

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

14 years agolibclang indexing support for C++ constructors, destructors, and
Douglas Gregor [Tue, 31 Aug 2010 14:41:23 +0000 (14:41 +0000)]
libclang indexing support for C++ constructors, destructors, and
conversion functions. This introduces new cursor kinds for these three
C++ entities, and reworks visitation of function declarations so that
we get type-source information for the names.

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

14 years agoAdd a simple test for indexing namespaces
Douglas Gregor [Tue, 31 Aug 2010 13:31:19 +0000 (13:31 +0000)]
Add a simple test for indexing namespaces

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

14 years agoTeach IR generation to return 'this' from constructors and destructors
John McCall [Tue, 31 Aug 2010 07:33:07 +0000 (07:33 +0000)]
Teach IR generation to return 'this' from constructors and destructors
under the ARM ABI.

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

14 years agoFix a regression that allowed clearly ill formed code. The diagnostic is still
Chandler Carruth [Tue, 31 Aug 2010 05:42:40 +0000 (05:42 +0000)]
Fix a regression that allowed clearly ill formed code. The diagnostic is still
terrible, FIXME left to do a proper job of diagnosing this.

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

14 years agoRevert my lame attempt at appeasing the CFGBuilder
Douglas Gregor [Tue, 31 Aug 2010 05:36:56 +0000 (05:36 +0000)]
Revert my lame attempt at appeasing the CFGBuilder

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

14 years agoWhen provide code completions for a variadic Objective-C method
Douglas Gregor [Tue, 31 Aug 2010 05:13:43 +0000 (05:13 +0000)]
When provide code completions for a variadic Objective-C method
declaration send or a variadic function call, collapse the ", ..."
into the parameter before it, so that we don't get a second
placeholder.

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

14 years agoTeach the CFGBuilder not do die on CXXBindTemporaryExpr, CXXOperatorCallExpr. Fixes...
Douglas Gregor [Tue, 31 Aug 2010 05:10:27 +0000 (05:10 +0000)]
Teach the CFGBuilder not do die on CXXBindTemporaryExpr, CXXOperatorCallExpr. Fixes a Boost.Graph crasher.

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

14 years agoImplement the __has_nothrow trait family, by Steven Watanabe.
Sebastian Redl [Tue, 31 Aug 2010 04:59:00 +0000 (04:59 +0000)]
Implement the __has_nothrow trait family, by Steven Watanabe.

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

14 years agoAdd range of return value expression in ReturnUndefChecker. Patch by Jim Goodnow II!
Ted Kremenek [Tue, 31 Aug 2010 01:35:32 +0000 (01:35 +0000)]
Add range of return value expression in ReturnUndefChecker.  Patch by Jim Goodnow II!

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

14 years agoEnable inline namespaces in C++03 as an extension.
Sebastian Redl [Tue, 31 Aug 2010 00:36:45 +0000 (00:36 +0000)]
Enable inline namespaces in C++03 as an extension.

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

14 years agoAdd a forgotten place where the enclosing namespace set matters, plus a big testcase...
Sebastian Redl [Tue, 31 Aug 2010 00:36:40 +0000 (00:36 +0000)]
Add a forgotten place where the enclosing namespace set matters, plus a big testcase for inline namespace fun.

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

14 years agoEnable inline namespaces in the AST.
Sebastian Redl [Tue, 31 Aug 2010 00:36:36 +0000 (00:36 +0000)]
Enable inline namespaces in the AST.

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

14 years agoRename DeclContext::getLookupContext to getRedeclContext and change its semantics...
Sebastian Redl [Tue, 31 Aug 2010 00:36:30 +0000 (00:36 +0000)]
Rename DeclContext::getLookupContext to getRedeclContext and change its semantics slightly. No functionality change in the absence of inline namespaces. Also, change a few places where inline namespaces actually make a difference to be prepared for them.

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

14 years agoDecl::getEnclosingNamespaceContext has no reason to explicitly skip transparent conte...
Sebastian Redl [Tue, 31 Aug 2010 00:36:23 +0000 (00:36 +0000)]
Decl::getEnclosingNamespaceContext has no reason to explicitly skip transparent contexts, and would be wrong to do so with inline namespaces.

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

14 years agoWhen instantiating a function type, instantiate the return type before
Douglas Gregor [Tue, 31 Aug 2010 00:26:14 +0000 (00:26 +0000)]
When instantiating a function type, instantiate the return type before
instantiating the parameters. In a perfect world, this wouldn't
matter, and compilers are free to instantiate in any order they
want. However, every other compiler seems to instantiate the return
type first, and some code (in this case, Boost.Polygon) depends on
this and SFINAE to avoid instantiating something that shouldn't be
instantiated.

We could fight this battle, and insist that Clang is allowed to do
what it does, but it's not beneficial: it's more predictable to
instantiate this way, in source order. When we implement
late-specified return types, we'll need to instantiate the return type
last when it was late-specified, hence the FIXME.

We now compile Boost.Polygon properly.

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

14 years agoAdd a missing return. Bug noticed by Dawn Perchik!
Douglas Gregor [Mon, 30 Aug 2010 23:30:49 +0000 (23:30 +0000)]
Add a missing return. Bug noticed by Dawn Perchik!

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

14 years agoWhen template substitution into a template parameter reduces the level
Douglas Gregor [Mon, 30 Aug 2010 23:23:59 +0000 (23:23 +0000)]
When template substitution into a template parameter reduces the level
of that parameter, reduce the level by the number of active template
argument lists rather than by 1. The number of active template
argument lists is only > 1 when we have a class template partial
specialization of a member template of a class template that itself is
a member template of another class template.

... and Boost.MSM does this. Fixes PR7669.

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

14 years agosilence a warning
Chris Lattner [Mon, 30 Aug 2010 23:11:03 +0000 (23:11 +0000)]
silence a warning

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

14 years agozap tabs
Gabor Greif [Mon, 30 Aug 2010 22:25:56 +0000 (22:25 +0000)]
zap tabs

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

14 years agoFix PR8029, a x86-32 ABI regression in introduced in r112211
Chris Lattner [Mon, 30 Aug 2010 22:03:23 +0000 (22:03 +0000)]
Fix PR8029, a x86-32 ABI regression in introduced in r112211

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

14 years agoadd two more use-cases (explicit instantiation) that should pass now
Gabor Greif [Mon, 30 Aug 2010 21:45:06 +0000 (21:45 +0000)]
add two more use-cases (explicit instantiation) that should pass now

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

14 years agofix dual aspect of PR8007,
Gabor Greif [Mon, 30 Aug 2010 21:10:05 +0000 (21:10 +0000)]
fix dual aspect of PR8007,
namely when the friend function prototype is already used
at the point of the template definition that is supposed
to inject the friend function. Testcase verifies four
scenarios.
I would like receive some code review for this.

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

14 years agoPerform the function-to-pointer adjustment during template argument
Douglas Gregor [Mon, 30 Aug 2010 21:04:23 +0000 (21:04 +0000)]
Perform the function-to-pointer adjustment during template argument
deduction where the parameter is a function reference, function
pointer, or member function pointer and the argument is an overloaded
function. Fixes <rdar://problem/8360106>, a template argument
deduction issue found by Boost.Filesystem.

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

14 years agoTranslate NEON vmovn builtin to a vector truncation instead of using an llvm
Bob Wilson [Mon, 30 Aug 2010 19:57:13 +0000 (19:57 +0000)]
Translate NEON vmovn builtin to a vector truncation instead of using an llvm
intrinsic.

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

14 years agoAdjusted the semantics of assign checking in IdempotentOperationChecker
Tom Care [Mon, 30 Aug 2010 19:25:43 +0000 (19:25 +0000)]
Adjusted the semantics of assign checking in IdempotentOperationChecker
- Fixed a regression where assigning '0' would be reported
- Changed the way self assignments are filtered to allow constant testing
- Added a test case for assign ops
- Fixed one test case where a function pointer was not considered constant
- Fixed test cases relating to 0 assignment

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

14 years agoRevert my user-defined literal commits - r1124{58,60,67} pending
Sean Hunt [Mon, 30 Aug 2010 17:47:05 +0000 (17:47 +0000)]
Revert my user-defined literal commits - r1124{58,60,67} pending
some issues being sorted out.

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

14 years agoadd a fixme.
Chris Lattner [Mon, 30 Aug 2010 17:11:14 +0000 (17:11 +0000)]
add a fixme.

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

14 years agouse 'features' instead of 'PP->getLangOptions'.
Chris Lattner [Mon, 30 Aug 2010 17:09:08 +0000 (17:09 +0000)]
use 'features' instead of 'PP->getLangOptions'.

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

14 years agoHeap-allocate the attribute vectors in
Douglas Gregor [Mon, 30 Aug 2010 16:49:28 +0000 (16:49 +0000)]
Heap-allocate the attribute vectors in
ASTContext::DeclAttrs. Otherwise, iterators will go stale when the
DenseMap reallocates, which can cause crashes when, e.g., looping over
the attributes in a template to instantiate them and add the results
to the instantiation of that template.

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

14 years agoFix an corner-case assertion introduced by the refactoring in r112258;
Douglas Gregor [Mon, 30 Aug 2010 16:00:47 +0000 (16:00 +0000)]
Fix an corner-case assertion introduced by the refactoring in r112258;
when we're taking the address of a unresolvable value, it might be an
implicit member access. Fixes some Boost.Spirit regressions.

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

14 years agoNow that GCC will have #pragma push/pop (in GCC 4.6), allow the
Douglas Gregor [Mon, 30 Aug 2010 15:15:34 +0000 (15:15 +0000)]
Now that GCC will have #pragma push/pop (in GCC 4.6), allow the
#pragma without requiring it to be in the "clang" namespace, from
Louis Gerbarg!

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

14 years agoEmulate (some of) Microsoft's looser semantic checking of exception
Douglas Gregor [Mon, 30 Aug 2010 15:04:51 +0000 (15:04 +0000)]
Emulate (some of) Microsoft's looser semantic checking of exception
specifications, from Martin Vejnar!

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

14 years agoIn Microsoft compatibility mode, don't parse the exponent as part of
Douglas Gregor [Mon, 30 Aug 2010 14:50:47 +0000 (14:50 +0000)]
In Microsoft compatibility mode, don't parse the exponent as part of
the pp-number in a hexadecimal floating point literal, from Francois
Pichet! Fixes PR7968.

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

14 years agoPredeclare class type_info in Microsoft mode, from Francois Pichet!
Douglas Gregor [Mon, 30 Aug 2010 14:44:26 +0000 (14:44 +0000)]
Predeclare class type_info in Microsoft mode, from Francois Pichet!

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

14 years agoAdd test case from PR6952, which now works (thanks to Gabor).
Douglas Gregor [Mon, 30 Aug 2010 14:37:53 +0000 (14:37 +0000)]
Add test case from PR6952, which now works (thanks to Gabor).

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

14 years agoAdd redeclaration checking for static data members and fix a corner
Douglas Gregor [Mon, 30 Aug 2010 14:32:14 +0000 (14:32 +0000)]
Add redeclaration checking for static data members and fix a corner
case with redeclaration checking for fields, from Faisal Vali!
Fixes PR7970.

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

14 years agoFix CMake dependencies
Douglas Gregor [Mon, 30 Aug 2010 14:31:03 +0000 (14:31 +0000)]
Fix CMake dependencies

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

14 years agoStraighten out target triples provided on the command line
Duncan Sands [Mon, 30 Aug 2010 09:42:39 +0000 (09:42 +0000)]
Straighten out target triples provided on the command line
before using them.

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

14 years agoTwo minor fixes to user-defined literals:
Sean Hunt [Mon, 30 Aug 2010 09:27:16 +0000 (09:27 +0000)]
Two minor fixes to user-defined literals:

 - Zero-initialize UDLData so that crashes stop
 - Stop complaining that we can't emit them (we most certainly can)

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

14 years agoAdd some braces for sanity and GCC silence. These became unbalanced in r112122,
Chandler Carruth [Mon, 30 Aug 2010 07:36:24 +0000 (07:36 +0000)]
Add some braces for sanity and GCC silence. These became unbalanced in r112122,
so please review echristo and let me know if the logic is wrong now.

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

14 years agoFix some test-breaking that snuck into my previous commit
Sean Hunt [Sun, 29 Aug 2010 22:39:32 +0000 (22:39 +0000)]
Fix some test-breaking that snuck into my previous commit

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

14 years agoImplement C++0x user-defined string literals.
Sean Hunt [Sun, 29 Aug 2010 21:26:48 +0000 (21:26 +0000)]
Implement C++0x user-defined string literals.

The extra data stored on user-defined literal Tokens is stored in extra
allocated memory, which is managed by the PreprocessorLexer because there isn't
a better place to put it that makes sure it gets deallocated, but only after
it's used up. My testing has shown no significant slowdown as a result, but
independent testing would be appreciated.

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

14 years agoWhen providing a code completion for an Objective-C message send, drop
Douglas Gregor [Sun, 29 Aug 2010 19:47:46 +0000 (19:47 +0000)]
When providing a code completion for an Objective-C message send, drop
the parameter names from the completions, e.g., provide

  withString:(NSString *)

instead of

  withString:(NSString *)string

since the parameter name is, by convention, redundant with the
selector piece that precedes it and the completions can get
unnecessarily long.

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

14 years agoImprove code completion for initializer lists in constructors. Instead
Douglas Gregor [Sun, 29 Aug 2010 19:27:27 +0000 (19:27 +0000)]
Improve code completion for initializer lists in constructors. Instead
of prioritizing just by initialization order, we bump the priority of
just the *next* initializer in the list, and leave everything else at
the normal priority. That way, if one intentionally skips the
initialization of a base or member (to get default initialization),
we'll still get ordered completion for the rest.

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

14 years agoAdd missing test case for constructor-initializer code completions
Douglas Gregor [Sun, 29 Aug 2010 19:20:21 +0000 (19:20 +0000)]
Add missing test case for constructor-initializer code completions

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

14 years agoObjClang++: Allow declaration of block variable in a collection
Fariborz Jahanian [Sun, 29 Aug 2010 17:20:53 +0000 (17:20 +0000)]
ObjClang++: Allow declaration of block variable in a collection
statement header (fixes radar 8295106).

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

14 years agoAdd comments.
Zhongxing Xu [Sun, 29 Aug 2010 05:16:31 +0000 (05:16 +0000)]
Add comments.

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